aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/lib/hardware/timer1.frt
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/avr8/lib/hardware/timer1.frt')
-rw-r--r--amforth-6.5/avr8/lib/hardware/timer1.frt44
1 files changed, 44 insertions, 0 deletions
diff --git a/amforth-6.5/avr8/lib/hardware/timer1.frt b/amforth-6.5/avr8/lib/hardware/timer1.frt
new file mode 100644
index 0000000..7ab9061
--- /dev/null
+++ b/amforth-6.5/avr8/lib/hardware/timer1.frt
@@ -0,0 +1,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
+;