Witam,
Mam proste pytanko, na które jednak nie umiałem znaleźć odpowiedzi w specyfikacji (jest gruba więc mogłem przegapić - jak tak to proszę o namiary) Piszę program na ATmega128, w głównej pętli sprawdzam cyklicznie stan portów i w momencie zmiany zapisuje stan i czas do pamięci. Zliczanie czasu jest zrealizowane na 16bitowym Timerze1 z dzielnikiem 8 co na 16MHz zegarze daje zliczanie co 0,5 mikrosekundy. By móc zmierzyć kilka sekund dołożyłem dodatkowy rejestr inkrementowany w przerwaniu Timera1
Przepelnienietimera: in r20, SREG inc r22 out SREG, r20 reti
A pytanko jest takie: Czy może się zdażyć tak, że najpierw przepełni się licznik Timer1, później w głównej pętli zostanie zapisany czas, a dopiero później zostanie obsłużone przerwanie? Inaczej mówiąc - czy mogą wystąpić jakieś przekłamania czy też skok do przerwania występuje dokładnie z przejściem Timera z max na bottom ? Doświadczalnie niczego takiego nie stwierdziłem ale wolałbym się upewnić.
I przy okazji drugie pytanko - opóźnienie czasu zapisania zdarzenia w głównej pętli o obsługę przerwania to: 3 takty na zawartość procedury przerwania, 4 takty na powrót z przerwania (reti) a ile taktów na skok do przerwania ? Inaczej - ile taktów zajmie cała przedstawiona procedura ?