Witam,
Mam procesor Atmel AVR ATmega16. Na INT0, INT1 i INT2 podawane sa sygnaly synchronizacyjne. Procedura obslugi kazdego z przerwan inkrementuje liczniki. Liczniki dla INT0 i INT1 chodza ok. 2 razy wolniej niz dla INT2. Wszystkie przerwania powstaja po wykryciu zbocza rosnacego. Zauwazylem, ze prace INT2 zakloca obsluga wyswietlacza LCD. INT2 to PB2. LCD wykorzystuje PB1, PB3, PB4, PB5, PB6, PB7. Gdy w programie glownym, zrobie zmienna, ktorej wartosc jest zwiekszana i dopiero po osiagnieciu pewnej jej wartosci LCD jest odswiezany, licznik dla INT2 pokazuje wartosc zblizona do pozostalych - generalnie, im rzadziej odswiezam zawartosc LCD, tym licznik dla INT2 dziala podobniej do pozostalych. W mojej bibliotece obslugi LCD uzywam wylacznie sbi i cbi -- nie odwoluje sie do portu poprzez PORTB=, PORTB|=, PORTB&=~, itp.
Co moze byc przyczyna takiego zachowania?
Vicky.