Witam,
Zbudowałem układ wykorzystujący mikroprocesor ATmega8 do sterowania mocą żarówki poprzez układ triak - optotriak. Wszystko działa w porządku, poza detekcją zera. W tym celu wykorzystuję podwójny transoptor PC814, jak na schemacie poniżej:
Pin nr 4 transoptora podłączam do INT1 mikrokontrolera. Napisałem gotowy program, jednak żarówka migała bądź świeciła się cały czas. Stworzyłem więc program testowy, który wskazuje, co jaki czas następuje przerwanie. Kod:
Okazało się, że przerwania występują dokładnie co 83 cykle procesora, czyli co 8.3 [us]. To tłumaczy, czemu nie działał poprzedni program, jednak nie rozumiem, dlaczego te przerwania są tak częste.
Czy ktoś ma jakiś pomysł i mógłby poratować? Z góry dzięki za pomoc.
Pozdrawiam.
Zbudowałem układ wykorzystujący mikroprocesor ATmega8 do sterowania mocą żarówki poprzez układ triak - optotriak. Wszystko działa w porządku, poza detekcją zera. W tym celu wykorzystuję podwójny transoptor PC814, jak na schemacie poniżej:
Pin nr 4 transoptora podłączam do INT1 mikrokontrolera. Napisałem gotowy program, jednak żarówka migała bądź świeciła się cały czas. Stworzyłem więc program testowy, który wskazuje, co jaki czas następuje przerwanie. Kod:
ISR(INT1_vect) //dolutowane wyjście z transoptorów, zero-crossing
{
TCCR1B =0;
zmienna1=TCNT1;
itoa(zmienna1,nmb_to_str,10);
write_text_RAM(nmb_to_str);
write_text_RAM("\n\r");
TCCR1B |= (1 << CS10);
}
Okazało się, że przerwania występują dokładnie co 83 cykle procesora, czyli co 8.3 [us]. To tłumaczy, czemu nie działał poprzedni program, jednak nie rozumiem, dlaczego te przerwania są tak częste.
Czy ktoś ma jakiś pomysł i mógłby poratować? Z góry dzięki za pomoc.
Pozdrawiam.