Can't help with the interupts for now but will offer a suggestion for your A/D part. I'm not sure how you got the numbers to compare and set the servo output values. Your variable "temp" will only get a value somewhere between 0 and 1023 due to the 10bit A/D.
I would suggest using the SELECT CASE to compare your 6 A/D value possibilities. List the "Values" in ascending order and this will set your "POSITION" value as needed.Code:FINDPROGRAM 'SELECTS BETWEEN SEVERAL TYPES OF MOTION ADCIN 10, TEMP 'READ CHANNEL 10 TO TEMP IF TEMP = 15000 THEN POSITION = 125 'USES VOLTAGE DIVIDER TO IF TEMP 15000 AND TEMP = 22000 THEN POSITION = 150 'VARY THE VOLTAGE ON CH10. IF TEMP 22000 AND TEMP = 35000 THEN POSITION = 175 'THIS CONVERTS AND STORES IF TEMP 35000 AND TEMP = 47000 THEN POSITION = 200 'TO 'TEMP'. IF TEMP 47000 AND TEMP = 60000 THEN POSITION = 225 IF TEMP 60000 THEN POSITION = 250 GOSUB SETPULSE RETURN
Code:FINDPROGRAM 'SELECTS BETWEEN SEVERAL TYPES OF MOTION ADCIN 10, TEMP ' Note: Value returned will be anywhere from 0 to 1023 SELECT CASE TEMP CASE Value1: POSITION = 125 'TEMP = Value1, lowest value CASE is <= Value2: POSITION = 150 'TEMP <= Value2 CASE IS <= Value3: POSITION = 175 'TEMP <= Value3 CASE IS <= Value4: POSITION = 200 'TEMP <= Value4 CASE IS <= Value5: POSITION = 225 'TEMP <= Value5 CASE Value6: POSITION = 250 'TEMP = Value6, highest value END SELECT GOSUB SETPULSE RETURN




Bookmarks