Wpis z mikrobloga

DDRB |= (1 << 1);
DDRB |= (1 << 2);
TCCR1B |= (1 << CS12);
TCCR1B |= (1 << WGM12);
OCR1A = 62500;
TCCR1A |= (1 << COM1A0);
TCCR1A |= (1 << COM1B0);
Mam podpięte diody do PB1 (OC1A) i PB2 (OC1B). Z powyższym kodem zmieniają one swój stan co 1 sekundę, tylko że obie świecą w tym samym czasie. Jak teraz zrobić by migały naprzemiennie? Ustawienie 1 z portów wcześniej nic nie daje, bo w specyfikacji pisze, że odpalenie trybu compare anuluje wcześniejsze ustawienia i tak. Musze jakoś wykorzystać także OCR1B?

#arduino #avr #atmega
  • 6
@fransua: w takim ustawieniu jedna dioda świeci cały czas a druga wcale.
Jak ustawie jeszcze OCR1B na 1 (bo na 0 nie działa) to wtedy migają naprzemiennie, chociaż to nie jest idealne rozwiązanie, bo częstotliwość jest ułamek mniejsza od 1sek.
@Atraktor:
Jak chcesz idealną częstotliwość, to zastosuj przerwanie przy przepełnieniu licznika i w funkcji obsługi przerwania np. wykorzystując operacje xor zmieniaj stany wyjść.