Witam. Napisałem program którego zachowanie jest dla mnie dziwne.
Konfiguracja układu:
ATtiny2313 podłączony do zasilania +5V, oraz 8 diod LED podłączonych przez rezystor 330Ω do portu B.
Program:
Początkowo program działa poprawnie. Zapala na zmianę dwie diody, ale po przejściu kilkudziesięciu cykli zapalają się wszystkie diody i miga tylko ta podłączona do Pinu 1. Po zresetowaniu mikrokontrolera wszystko wraca do normy. Gdzie leży przyczyna tego problemu?
Konfiguracja układu:
ATtiny2313 podłączony do zasilania +5V, oraz 8 diod LED podłączonych przez rezystor 330Ω do portu B.
Program:
.include "tn2313def.inc"
.def acc = r20
.dseg
.org 0x0060
Zmienna1: .BYTE 1
Zmienna2: .BYTE 1
.cseg
.org 0x000 rjmp Reset
.org 0x005 rjmp PRZERWANIE
Reset:
clr r21
ldi acc,0xFF
out DDRB,acc ;Port B wyjściem
out PORTB,acc ;w stanie wysokiej impedancji
ldi acc,0x00
out DDRD,acc ;Port D wejściem
out PORTD,acc ;w stanie wysokiej impedancji
out DDRA,acc ;Port A wejściem
out PORTA,acc ;w stanie wysokiej impedancji
clr acc
ldi acc, low(RAMEND) ;Pobierz najwyższy adres pamięci RAM
out SPL,acc
sei
Main:
ldi r16,(0<<CS00)|(1<<CS01)
out TCCR1B,r16
clr r16
ldi r16,1<<TOIE1
out Timsk,r16
ldi r16,0xFE
sts Zmienna1,R16
ldi r16,0xFD
sts Zmienna2,R16
clr r17
rjmp Czekaj
Czekaj:
nop
rjmp Czekaj
PRZERWANIE:
cpi r17,1
breq Przerwanie2
inc r17
lds r16,Zmienna1
out PortB,r16
sei
rjmp Czekaj
Przerwanie2:
lds r16,Zmienna2
out PortB,r16
clr r17
sei
rjmp Czekaj
Początkowo program działa poprawnie. Zapala na zmianę dwie diody, ale po przejściu kilkudziesięciu cykli zapalają się wszystkie diody i miga tylko ta podłączona do Pinu 1. Po zresetowaniu mikrokontrolera wszystko wraca do normy. Gdzie leży przyczyna tego problemu?