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.
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
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 ' 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