Hello. I am using the instant interrupt routine. I also posess a servo motor like ted,
so I wand to start a pulsout every 20ms. I did this in the tmr0-interrupt routine(tmr0
initialized by OPTION_REG = 1) I am using a 20Mhz quarz.
I think: 20 / 4 = 5Mhz. OPTION_REG means prescaler = 1:1. Means 1/(5,000,000) equals 0.2us.
TMR0 = 8Bit => 256 * 0.2us = 51.2us.
So every 51.2us there will be an interrupt. So
20,000 / 51.2 = 390.625 = 391. So as soon as the interrupt will have occurred 391 times 20ms
should have been passed. I wrote
Code:
main:
'...do xyz
counter = 0
END
IRRoutine:
IF counter = 391 THEN
pulsout servo, duration
ENDIF
IF counter > 391 THEN
counter = 0
ENDIF
IF counter < 391 THEN
counter = counter + 1
ENDIF
@ INT_RETURN
But the servo is choppy. What is wrong?
Bookmarks