Skocz do zawartości

[C, AVR] W jaki sposób sprawdzić czas wykonywania programu


Pomocna odpowiedź

Napisano

Witam,
dążąc do jak największej optymalizacji kodu w swoim robocie, interesuje mnie sposób mierzenia czasu jaki potrzebuje program by wykonać całą swoją pętle.

Dobrze by było, aby podany sposób uwzględniał również czas potrzebny na dokonanie pomiarów w przetworniku A/C.

Zna ktoś na to sposób?

Możesz po prostu w symulacji w AVR studio sprawdzić jak długo wykonuje się dany fragment kodu, ustawiając breake-pointy. Jeżeli nie ufasz symulacji, możesz zrobić sobie jakieś dwa punkty - start i stop timer'a i przy jego pomocy zmierzyć czas. Oczywiście pod warunkiem, że masz ten czas jak odczytać: LCD, wyswietlacze 7segm, rs232 etc.

Ja czasy mierze w ten sposób, że na wolnym pinie zmieniam stan przed wywołaniem określonej procedury i po powrocie. Następnie na oscyloskopie oglądam przebieg.

Oscyloskopu nie mam więc to odpada. Jedynie timer i rs232 wchodzi w grę. Jednak jest to sporo roboty.

A ta symulacja jest bardzo nie dokładna?

Nie potrzeba oscyloskopu, nada się analizator stanów logicznych na LPT/RS232 (samoróbka Scanalogic), a jeśli przebieg miałby być naprawdę z małą częstotliwością to i karta dźwiękowa się nada. Z tym, że ja ogólnie polecam złożenie sobie takiego analizatorka, zawsze się przyda.

Symulacja jest ogólnie dobra, o ile czas wykonywania nie zależy od danych dochodzących z zewnątrz. Pamiętaj, że czas wykonywania pętli głównej będzie zależał od tego ile w danym podejściu razy zostanie wywołąne i wykonane przerwanie od ADC oraz od wykonywanych działań (np. mnożenie i dzielenie może trwać krótko bądź długo). Jeśli interesuje cię średnia po prostu wywołaj w symulatorze podczas symulacji kilka razy "run to cursor" na początku pętli.

Dzięki za porady:) z symulacją nie jest tak kolorowo, bo jest 7 odczytów ADC i nie wiem ile one będą trwały. Jak skończę pisać program, to zastosuje pomysł z timerem i rs'em:) zobaczę co z tego wyjdzie:)

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...