aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/lib/hardware/timer1.frt
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-08-19 12:15:28 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-08-19 12:15:28 +0200
commit67d25d837ac55f28a366c0a3b262e439a6e75fc3 (patch)
treedf7715c7724c5935ab87c807f3b8b4ef529315e3 /amforth-6.5/avr8/lib/hardware/timer1.frt
parente0d6784e89dba33226c0edb815bb974486fa7c48 (diff)
Add AmForth
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
+;