Saturday, May 30, 2015

Timer Time: Using Internal ATTiny13A Chip’s Timer, "OVF" Interrupt Mode (slightly modified)

We could speeding the timer by pre-loading TCNT0 with a value between 0 and 255, so TCNT0’ll start count at our own value instead of zero. 

We have to pre-load the TCNT0 at the init subroutine, and pre-load again after flag is set, so we write the command at the timer subroutine. 

So, our code now will look like this 

.include "../"
.def a=r16
.org 0000
    rjmp init
.org 0003
    rjmp timer

    sbi ddrb,0          ; pin b0 output
    ldi a,0b00000101    ; prescaler 1024
    out TCCR0B,a
    ldi a,0b00000010    ; enable OVF
    out TIMSK0,a
    ldi a, 64           ; preload TCNT0
    out TCNT0,a
    sei                 ; enable interrupts globally
    rjmp main

    sbi pinb,0          ; flip pin B0 bit
    ldi a,64            ; preload again 
    out TCNT0,a