aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/lib/hardware/timer1.frt
blob: 7ab9061a10f9707bce7d396b07e5495df3d2fe01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
\ TIMER_1 example
\
\ requires
\ in application master file
\  .set WANT_TIMER_COUNTER_1 = 1
\ from device.frt
\  TIMER1_OVFAddr
\ provides
\  timer1.tick      -- increasing ticker
\ 
\ older mcu's may need
\  TCCR1 constant TCCR1B
\  TIMSK constant TIMSK1

variable timer1.tick

: timer1.isr
  1 timer1.tick +!
;

\ preload for overflow interrupt every 1 ms
\ preload = 65536 - (f_cpu / (prescaler * 1000))

: timer1.preload
   f_cpu #1000 um/mod nip 8 / negate 
;

: timer1.init ( -- )
    timer1.preload TCNT1 ! 
    0 timer1.tick !
    ['] timer1.isr TIMER1_OVFAddr int!
;

: timer1.start
    timer1.init
    0 timer1.tick !
    %00000010 TCCR1B c! \ prescaler 8
    %00000001 TIMSK1 c! \ enable overflow interrupt
;

: timer1.stop
   %00000000 TCCR1B c! \ stop timer
   %00000000 TIMSK1 c! \ stop interrupt
;