Skocz do zawartości

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


kling

Pomocna odpowiedź

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?

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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:)

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.