Witam, próbuję zrobić program do migania diodą w zakresie ok. 1-30 Hz i postanowiłem użyć do tego timera. Wyprodukowałem coś takiego:
Ale trochę nie umiem skapować, jak naprawdę działa ten timer. Niby ma liczyć od 0 do 65536 i wywołać przerwanie, ale z moich obserwacji, jakoś dziwnie to się zachowuje, tzn. nie odmierza czasu tak jak, bym chciał. Jak prawidłowo liczyć początkową wartość licznika? I czy mój kod jest dobry?
#include <avr/io.h>
#include <compat/deprecated.h>
#include <util/delay.h>
#include <avr/interrupt.h>
SIGNAL(SIG_OVERFLOW1){
TCNT0 = 8190;
PORTA=~PORTA;
}
void main(){
DDRA=255;
PORTA=0;
TCNT1 = 8190;
TCCR1A = 0x00;
TCCR1B = _BV(CS10)|_BV(CS12);
TIMSK = _BV(TOIE1);
sei();
while(1);
}
Ale trochę nie umiem skapować, jak naprawdę działa ten timer. Niby ma liczyć od 0 do 65536 i wywołać przerwanie, ale z moich obserwacji, jakoś dziwnie to się zachowuje, tzn. nie odmierza czasu tak jak, bym chciał. Jak prawidłowo liczyć początkową wartość licznika? I czy mój kod jest dobry?