Hi,
I have taken the TIMER_1 example, and make some small change.
Instead of the timer1.tick I toggle pin-7 of the Arduino.
With the values as in the listing I measure a frequency of 15,2 Hz with my
scoop.
When I change some of the preload value by hand no change is seeing.
Frequency is staying at 15,2 Hz.
When I print the value of TCNT1 after setting, and compare this one after
timer1.start there is a difference
First value = 63536 and the Second value = 31033.
I think some where in amForth TCNT1 is overwritten!
Please can you take a look.
I included my program.
Cheers,
Jan
\ TIMER1_interrupt
marker --timer1_interrupt--
PORTD 7 portpin: PD7
PD7 pin_output
&26 constant TIMER1_OVFAddr
: togglePD7
PD7 pin_high? if PD7 low else PD7 high then
;
: timer1.isr
\ toggle output PD7
togglePD7
;
\ preload for overflow interrupt every 1 ms
\ preload = 65536 - (f_cpu / (prescaler * 1000))
: timer1.preload
f_cpu #1000 um/mod nip 8 / negate \ <===== if i change the value #1000
notting is change
;
: timer1.init ( -- )
timer1.preload TCNT1 !
TCNT1 @ u. cr \ <=============== print value of TCNT1 ===========
['] timer1.isr TIMER1_OVFAddr int!
;
: timer1.start
-int
timer1.init
%00000010 TCCR1B c! \ prescaler 8
%00000001 TIMSK1 c! \ enable overflow interrupt
+int
;
: timer1.stop
%00000000 TCCR1B c! \ stop timer
%00000000 TIMSK1 c! \ stop interrupt
;
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
[email protected]
https://lists.sourceforge.net/lists/listinfo/amforth-devel