-> mapping to an 1/x like behaviour
[my-code/atmel.git] / monolyzer / timer.asm
index 2f14b69..f5297fe 100644 (file)
@@ -1,10 +1,75 @@
 ; timer functions
 
-TIMER1_INIT:
+TIMER1_INIT_NP:
 
-       ; clock select, prescaler 8
-       ldi tmp1,0x02
+       ; clock select, no prescaler
+       in tmp1,TCCR1B
+       cbr tmp1,(1<<CS12)
+       cbr tmp1,(1<<CS11)
+       sbr tmp1,(1<<CS10)
        out TCCR1B,tmp1
 
        ret
 
+TIMER1_INIT_8:
+
+       ; clock select, prescaler 64
+       in tmp1,TCCR1B
+       cbr tmp1,(1<<CS12)
+       sbr tmp1,(1<<CS11)
+       cbr tmp1,(1<<CS10)
+       out TCCR1B,tmp1
+
+       ret
+
+TIMER1_INIT_64:
+
+       ; clock select, prescaler 64
+       in tmp1,TCCR1B
+       cbr tmp1,(1<<CS12)
+       sbr tmp1,(1<<CS11)
+       sbr tmp1,(1<<CS10)
+       out TCCR1B,tmp1
+
+       ret
+
+TIMER1_INIT_256:
+
+       ; clock select, prescaler 256
+       in tmp1,TCCR1B
+       sbr tmp1,(1<<CS12)
+       cbr tmp1,(1<<CS11)
+       cbr tmp1,(1<<CS10)
+       out TCCR1B,tmp1
+
+       ret
+
+TIMER1_INIT_1024:
+
+       ; clock select, prescaler 1024
+       in tmp1,TCCR1B
+       sbr tmp1,(1<<CS12)
+       cbr tmp1,(1<<CS11)
+       sbr tmp1,(1<<CS10)
+       out TCCR1B,tmp1
+
+       ret
+
+TIMER1_INT_ENABLE:
+
+       ; overflow interrupt enable
+       in tmp1,TIMSK
+       sbr tmp1,(1<<TOIE1)
+       out TIMSK,tmp1
+
+       ret
+
+TIMER1_INT_DISABLE:
+
+       ; overflow interrupt disable
+       in tmp1,TIMSK
+       cbr tmp1,(1<<TOIE1)
+       out TIMSK,tmp1
+
+       ret
+