Prosiłbym kogoś znającego temat o sprawdzenie moich wyliczeń.
Do Attiny2313 podpinam kwarc 8Mhz
dla timera daję preskaler 4, czyli ck/256, czyli timer jest naliczany co 32us
1s / 0.000032s = 31250 - czyli 31250 naliczeń timera to dokładnie sekunda
timer1 jest 16 bitowy więc liczy od 0 do 65535, czyli 65536 cykli - więc aby przepełnił się po zliczeniu 31250 ( 1s ) to wartość początkową ustawiam na 65536 - 31250 = 34286
zgadza się ?
wiem że za odblokowanie przerwań odpowiada bit TOIE1 rejertru TIMSK
czy wystarczy : ldi r16, 0b10000000 out TIMSK, r16 ?
Do Attiny2313 podpinam kwarc 8Mhz
dla timera daję preskaler 4, czyli ck/256, czyli timer jest naliczany co 32us
1s / 0.000032s = 31250 - czyli 31250 naliczeń timera to dokładnie sekunda
timer1 jest 16 bitowy więc liczy od 0 do 65535, czyli 65536 cykli - więc aby przepełnił się po zliczeniu 31250 ( 1s ) to wartość początkową ustawiam na 65536 - 31250 = 34286
zgadza się ?
.nolist
.include "2313def.inc"
.list
.listmac
.cseg
.org 0
rjmp start
.org 0x0001 reti
.org 0x0002 reti
.org 0x0003 reti
.org 0x0004 reti
.org 0x0005 rjmp TimerHandle
.org 0x0006 reti
.org 0x0007 reti
.org 0x0008 reti
.org 0x0009 reti
.org 0x000A reti
start:
ldi r16, LOW(RAMEND)
out SPL, r16 ; inicjacja stosu
ldi r16, 4
out TCCR1, r16 ; preskaler timera1 na podział przez 256
; tutaj powinno być ustawienie wartości początkowej ( jeszcze nie doszedłem jak to zrobić dla liczby 16 bitowej
; tutaj powinno być odblokowanie przerwań dla timer1
sei ; globalne odblokowanie przerwań
; instrukcje programu
TimerHandle :
wiem że za odblokowanie przerwań odpowiada bit TOIE1 rejertru TIMSK
czy wystarczy : ldi r16, 0b10000000 out TIMSK, r16 ?