Mam do Was pytanie dotyczące fragmentu programu, w szczególności pętli for, która wykonuje się 16 razy i każde kolejne wykonanie trwa dłużej niż poprzednie.
Czas trwania ostatniej pętli jest kilkanaście razy dłuższy niż pierwszej i przyrost czasu wykonania każdej pętli jest z grubsza liniowy.
fragment programu:
[/code]
Przebieg na pinie PB4 obserwowany oscyloskopem.
Atmega16 jest taktowana zegarem 16Mhz. W programie dwa przerwania:
ISR(TIMER1_COMPA_vect) wywołane co 100ms do inkrementowania jednej zmiennej (wyłącznie)
oraz
ISR(TIMER0_COMP_vect) wywołane z częstotliwością 800Hz do multipleksowania wyświetlaczy.
W programie nie ma żadnego "_delaya". Poza tym program na razie niewiele robi.
Funkcja prezentowania powyżej służy do komunikacji szeregowej procesora z przetwornikiem DC/AC i działa poprawnie, co stwierdzam na podstawie oglądanych przebiegów oscyloskopem oraz pomiarze napięcia na wyjściu przetwornika.
Interesuje mnie, dlaczego czas wykonania każdej kolejnej pętli for rośnie liniowo.
Czas trwania ostatniej pętli jest kilkanaście razy dłuższy niż pierwszej i przyrost czasu wykonania każdej pętli jest z grubsza liniowy.
fragment programu:
Kod: C / C++
Przebieg na pinie PB4 obserwowany oscyloskopem.
Atmega16 jest taktowana zegarem 16Mhz. W programie dwa przerwania:
ISR(TIMER1_COMPA_vect) wywołane co 100ms do inkrementowania jednej zmiennej (wyłącznie)
oraz
ISR(TIMER0_COMP_vect) wywołane z częstotliwością 800Hz do multipleksowania wyświetlaczy.
W programie nie ma żadnego "_delaya". Poza tym program na razie niewiele robi.
Funkcja prezentowania powyżej służy do komunikacji szeregowej procesora z przetwornikiem DC/AC i działa poprawnie, co stwierdzam na podstawie oglądanych przebiegów oscyloskopem oraz pomiarze napięcia na wyjściu przetwornika.
Interesuje mnie, dlaczego czas wykonania każdej kolejnej pętli for rośnie liniowo.
