Witam
Mam jakiś błąd w programie ale nie mogę dojść gdzie.
Przed mian'em mam obsługę przerwania dla SIG_OUTPUT_COMPARE1A
która teoretycznie powinna się wywoływać co 1s. Timer1 ustawiony w tryb compare na preskalerze 256, ustawienia timera są na początku maina.
I niestety coś jest nie tak ponieważ niezależnie jaki preskaler ustawie czy jaka wartość dam do OCR1A to przerwanie jest wywoływanie zawsze co około 2 sekundy
Mam jakiś błąd w programie ale nie mogę dojść gdzie.
Przed mian'em mam obsługę przerwania dla SIG_OUTPUT_COMPARE1A
która teoretycznie powinna się wywoływać co 1s. Timer1 ustawiony w tryb compare na preskalerze 256, ustawienia timera są na początku maina.
SIGNAL(SIG_OUTPUT_COMPARE1A) // sygnal porownania od timera 1A
{
sec++;
sec%=60;
}
//------------------------------------------------------------------------------
int main(void) //program główny
{
//--------------- TIMER1 ----------------------
TCCR1B |= 0x04; //preskaler ustawiony na 256
TCNT1H = 0; //wartość początkowa
TCNT1L = 0;
OCR1AH = 0x7A; //7A12 = 31250 -> 1s
OCR1AL = 0x12;
TIMSK = 0x10; //przerwanie gry osagnięta wartosc = OCR1A
//---------------------------------------------
sei();I niestety coś jest nie tak ponieważ niezależnie jaki preskaler ustawie czy jaka wartość dam do OCR1A to przerwanie jest wywoływanie zawsze co około 2 sekundy