timer.s
author Tero Marttila <terom@paivola.fi>
Mon, 21 Apr 2014 00:20:27 +0300
changeset 82 b5878197d017
parent 29 453550e69e07
permissions -rw-r--r--
dmx-web: change dmx layout for more light types
29
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
.nolist
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
.include "m168def.inc"      ; Same family as 328P
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
.list
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
;; Interrupt Vector
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
.org 0x00
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
        rjmp        init
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
.org OC1Aaddr
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
		; Timer/Counter1 Compare Output A
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
		rjmp		Timer_OC1A
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
.org OC0Aaddr
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
        ; Timer/Counter0 Compare Output A
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
        rjmp        Timer_OC0A
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
.org 0x40
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
;; Syntax
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
.include "macros.inc"
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
;; Timer0 Compare A handler
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
Tick:
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
	; Toggle
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
		sbi			PIND, PORTD7
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
		ret
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
;; Timer
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
.set TIMER0_CB_A = Tick
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
.include "timer.inc"
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
Main:
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
init:
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    ; Stack
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        ldi         r16, high(RAMEND)
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        ldi         r17, low(RAMEND)
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
        out         SPH, r16
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        out         SPL, r17
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
    ; Enable interrupts
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
        sei
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
	; Turn off LED7
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
		sbi			DDRB, PORTB1
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
		sbi			PORTB, PORTB1
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
	; DEBUG
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
		sbi			DDRD, PORTD7
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
		cbi			PORTD, PORTD7
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
		sbi			DDRD, PORTD6
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
		sbi			DDRD, PORTD5
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
		
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
    ; Timer
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
		; setup
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
        rcall       Timer0_Init
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
		
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
		; run with 255k cycles
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
		ldi			r16, 255
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
		rcall		Timer0_Start	
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
loop:
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
	; Run timer
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
		rjmp		loop
453550e69e07 Test use of Timer0
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68