Witam,
Napisałem taki oto programik który ma za zadanie zmieniac stan diody co około jedną sekunde (odrazu dodam że nie chodziło mi o odmierzenie dokładnej sekundy tylko o opóźnienie). Wyliczyłem że przy preskalerze 256 timer1 musi zliczyć do 31250 żeby odczekał sekunde (taktowanie 8Mhz). Ustawiłem też bit WGM12 dzięki czemu Zawartość licznika TCNT1 bedzie kasowana po osiągnięciu wartości 31250 i zmianie stanu wyprowadzenia OCR1A na przeciwny. I wszystko wygląda ok ale po włączeniu okazuje się że dioda pulsuje tak szybko że wygląda jakby świeciła ciągle. Co jest nie tak?
Proszę o pomoc bo siedze już nad tym dosyć długo ;/
Napisałem taki oto programik który ma za zadanie zmieniac stan diody co około jedną sekunde (odrazu dodam że nie chodziło mi o odmierzenie dokładnej sekundy tylko o opóźnienie). Wyliczyłem że przy preskalerze 256 timer1 musi zliczyć do 31250 żeby odczekał sekunde (taktowanie 8Mhz). Ustawiłem też bit WGM12 dzięki czemu Zawartość licznika TCNT1 bedzie kasowana po osiągnięciu wartości 31250 i zmianie stanu wyprowadzenia OCR1A na przeciwny. I wszystko wygląda ok ale po włączeniu okazuje się że dioda pulsuje tak szybko że wygląda jakby świeciła ciągle. Co jest nie tak?
Proszę o pomoc bo siedze już nad tym dosyć długo ;/
.include "m88def.inc"
.list
.def acc = r16
.equ LED = 3
.cseg
.org 0
rjmp init_proc
init_proc:
ldi acc, low(RAMEND)
out SPL, acc
ldi acc, high(RAMEND)
out SPH, acc
ldi acc, 0xFF
out DDRB, acc
ldi acc, (1 << COM1A0)
sts TCCR1A, acc
ldi acc, (1 << OCIE1A)
sts TIMSK1, acc
ldi acc, (1 << CS12) | (1 << WGM12)
sts TCCR1B, acc
ldi acc, low(31250)
sts OCR1AL, acc
ldi acc, high(31250)
sts OCR1AH, acc
sei
tu:
rjmp tu