Witam
W jaki sposób sprawdzić czas w którym wykonuję się funkcja lub fragment kodu w avr studio ?
W jaki sposób sprawdzić czas w którym wykonuję się funkcja lub fragment kodu w avr studio ?
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam2P napisał:Albo jeśli jest to funkcja która nie jest uwarunkowana zdarzeniami w świecie zewnętrznym (na przykład czysta funkcja obliczeniowa), można przeprowadzić symulację. Wstawiasz punkt wstrzymania przed i za wywołaniem funkcji. W trybie symulacji w AVR-Studio masz licznik cykli procesora (nie działa niestety w trybie debuggowania JTAG). Licznik ten możesz wyzerować na pierwszym breakpoincie i przy drugim masz czas wykonania w cyklach.
2P napisał:Kompilator może optymalizować kod ponieważ widzi, że zmienna In nie jest nigdzie używana i po prostu przypisuje jej wartość 64 a następnie wywołuje ciało for-a.
tmf napisał:Można odczytywać poprawny czas, tylko należy najpierw ustawić faktyczną częstotliwość taktowania. Wystarczy nacisnąć Debug->Start Debugging (Ctrl+Shift+Alt+F5) i następne AVR Simulator Option (Alt+O). Na wypadek, gdyby ktoś nie wiedział...BTW, nie patrz na czas, bo ten zależy od ustawionej częstotliwości, tylko na cycle counter, który ci pokaże liczbę taktów zegara, którą jeśli potrzebujesz przeliczysz sobie na czas znając faktyczne taktowanie MCU.
tmf napisał:Nie jest to możliwe, gdyż optymalizacja _delay jest zabroniona - zawiera ona volatile.
tmf napisał:Dodatkowo nie ma atrybutu zezwalającego na zastąpienie wywołania wynikiem funkcji (__attribute__(const)).