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/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to