if i understand what you want to do... the easiest solution will be to increment a variable on each TIMER0 interrupt. you'll do it in your interrupt routine.
if i understand what you want to do... the easiest solution will be to increment a variable on each TIMER0 interrupt. you'll do it in your interrupt routine.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Yeah, but I dont know how to. :-) Here's a go at it.....
display var word
count var word
display = 0 ' set initial value of counter display (This should appear on the 7 seg displays.)
TMR0 = $00 ' set timer value to 0
on interrupt goto setdisplay
disable
setdisplay:
count = count + 1
count = display
INTCON.2 = 0 ' clear overflow flag
TMR0 = $00 ' reload TMR0
resume
enable
However, I still cant see how the timer overflow registers in the count var word.
you must tell to TIMER0 where to take it's clock to increment and enable interrupts.
let's say you have a 16F628. you'll find the setting in the INTCON and OPTION registers
OPTION register
by default TIMER0 get it's clock source from pin RA4, on a high to low transistion with a rate of 1:256... is this what you want?
INTCON register
To make your interrupt routine work, you must, at least, enable the TIMER0 interrupt and the global interrupt... they're disable when you boot the PIC
So INTCON=%10100000
what about now?
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
James, Also in your snipit of code you increment "counter" but then re-zero it by saying "counter = display". You load thenvariable "display" with zero and never increment it but pass it's value to "counter".
Dave Purola,
N8NTA
Ok, added the option_reg to set up the counter to count ra4, low to high, WDT with a 1:1 prescale.
Removed the count = display. Display should now increment? I can then use the value in display and send it out to the digits?
What I was trying to do there was have display = count so that display would continue being incremented and I could do all the math and segment work with count word. This is becuase I need to count 21600 interupts, and them send that out as a 1 to the 7 segments. Sort of like a custom interupt postscaler I guess.
Thanks for your help and insight everyone. Dave I already owe you one!
display var word
OPTION_REG = %11101000
INTCON = %10100000
display = 0 ' set initial value of counter display (This should appear on the 7 seg displays.)
TMR0 = $00 ' set timer value to 0
on interrupt goto setdisplay
disable
setdisplay:
display = display + 1
INTCON.2 = 0 ' clear overflow flag
TMR0 = $00 ' reload TMR0
resume
enable
I think a light just came on!!
Am I correct in thinking that you cant directly assign a word to the overflow flag, but when it interupts, your word can be embedded in the subroutine that you run on interupt? So the above code example would prove this by now having the display word being incremented whenever the timer overflows and provides the interupt.
Its all semantics!!
Hello JM,
Jm>> So the above code example would prove this by now having the display word being incremented whenever the timer overflows and provides the interupt.<<
That is correct...
Dwayne
Ability to Fly:
Hurling yourself towards the ground, and missing.
Engineers that Contribute to flying:
Both optimists and pessimists contribute to the society. The optimist invents the aeroplane, the pessimist the parachute
Pilots that are Flying:
Those who know their limitations, and respect the green side of the grass...
Bookmarks