Witam.
Uczę sie programować timery na atmega8 w c++. Robie to z pomocą kursu: http://wkretak.pl/readarticle.php?article_id=3 i noty katalogowej oczywiście.
Napisałem coś takiego i działa zakomicie:
efekt: dioda zapala i gaśnie co sekundę
Przeczytałem, że istnieje jeszcze jeden kanał "B", lecz gdy zamieniam wszystko na:OCR1B, OCF1B, to dioda się zapali ale już nie zgaśnie. Co dziwniejsze, gdy zamienię tylko:OCR1A, OCF1B, to układ działa jak pierwotnie, a chyba nie powinien, bo nie podaje wartości OCR1B.
Jest ktoś kto może mi wytłumaczyć tą zagadkę?
Uczę sie programować timery na atmega8 w c++. Robie to z pomocą kursu: http://wkretak.pl/readarticle.php?article_id=3 i noty katalogowej oczywiście.
Napisałem coś takiego i działa zakomicie:
#define F_CPU 4000000L
#include <avr/io.h>
int main (void)
{
DDRD |= (1 << 7);
TCCR1B |= (1 << WGM12);
OCR1A = 15625;
TCCR1B |= (1 << CS12);
while(1)
{
if (TIFR &(1<< OCF1A))
{
PORTD ^= (1 << 7); // Zmień stan diody LED
TIFR=(1<<OCF1A);
}
}
}efekt: dioda zapala i gaśnie co sekundę
Przeczytałem, że istnieje jeszcze jeden kanał "B", lecz gdy zamieniam wszystko na:OCR1B, OCF1B, to dioda się zapali ale już nie zgaśnie. Co dziwniejsze, gdy zamienię tylko:OCR1A, OCF1B, to układ działa jak pierwotnie, a chyba nie powinien, bo nie podaje wartości OCR1B.
Jest ktoś kto może mi wytłumaczyć tą zagadkę?