Witam, pracuję obecnie nad pewnym projektem, w którym używam 32 kanałów PWM na procesorze Atmega162 generowanych programowo wg. dokumentu AVR136, program napisany w języku C. Mogę powiedzieć, że generalnie wszystko działa zgodnie z oczekiwaniami, modulacja działa prawidłowo, jednak chciałbym poznać, jaki procent czasowy zajmuje obsługa przerwania. Nie znam zbytnio assemblera, ale interesuje mnie, ile zajmuje martwa pętla przerwania, to jest kiedy nie ma nic do roboty (aktualizacja stanu pinów) oraz taka która ustawia wszystko.
Po prostu procesor obsługuje jeszcze komunikację po UART i generację komunikatów zwrotnych itd, itd.
Dany jest fragment programu w C:
Inicjalizacja timerów (procesor pracujący na 16MHz):
Przerwanie
Oraz odpowiadający mu fragment w assemblerze:
Domyślam się, że należałoby wykorzystać opcję debugowania i patrzeć, ile czasu zajmuje przerwanie na oscyloskopie, co z resztą zrobię, jednak chciałbym poznać od strony procesora, ile zajmuje wykonanie tego konkretnie przerwania, niewykluczone, że trzeba będzie wykorzystać timer 16bit, zliczający do 512, dlatego proszę o poradę, pozdrawiam.
Po prostu procesor obsługuje jeszcze komunikację po UART i generację komunikatów zwrotnych itd, itd.
Dany jest fragment programu w C:
Inicjalizacja timerów (procesor pracujący na 16MHz):
Kod: C / C++
Przerwanie
Kod: C / C++
Oraz odpowiadający mu fragment w assemblerze:
Kod: text
Domyślam się, że należałoby wykorzystać opcję debugowania i patrzeć, ile czasu zajmuje przerwanie na oscyloskopie, co z resztą zrobię, jednak chciałbym poznać od strony procesora, ile zajmuje wykonanie tego konkretnie przerwania, niewykluczone, że trzeba będzie wykorzystać timer 16bit, zliczający do 512, dlatego proszę o poradę, pozdrawiam.