logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Jak zmierzyć czas wykonania algorytmu na AVR z użyciem Timera?

dasej 12 Sie 2019 23:08 792 9
REKLAMA
  • #1 18112042
    dasej
    Poziom 32  
    Posty: 1911
    Pomógł: 165
    Ocena: 267
    Witam.

    Szukam pomysłu jak zmierzyć czas wykonywania algorytmu np;

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Znając zegar procesora ma czas, potrzeba zliczyć impulsy, pewnie wchodzi w rachubę Timer, ale nie mam koncepcji jak się za to zabrać.
  • REKLAMA
  • #2 18112068
    excray
    Poziom 41  
    Posty: 5502
    Pomógł: 739
    Ocena: 657
    Uruchamiasz timer przed wywołaniem procedury, zatrzymujesz po i odczytujesz ilość taktów które zliczył.
  • REKLAMA
  • #3 18112197
    dasej
    Poziom 32  
    Posty: 1911
    Pomógł: 165
    Ocena: 267
    Bardzo pomocna podpowiedź!
    Tyle to i Ja wiem.

    A jak przekroczy czas timera?
  • REKLAMA
  • #4 18112264
    robiw
    Poziom 26  
    Posty: 2032
    Pomógł: 25
    Ocena: 133
    Niestety zgrubnie musisz określić czas wykonania funkcji i dobrać odpowiedni preskaler Timera. Bardzo zgrubnie. Ja bym użył timera 16-bitowego z taktowaniem 1MHz, to każdy takt to będzie 1µS...wtedy masz maksymalny dostępny czas 65ms - raczej wystarczy...robiw

    Dodano po 2 [minuty]:

    Poza tym możesz napisać prosta funkcje obsługi przerwania od przepełnienia Timera i tam inkrementować zmienną - dowiesz się w ten sposób czy timer nie przepełnił się...robiw
  • #5 18112282
    Konto nie istnieje
    Poziom 1  
  • #6 18112358
    simw
    Poziom 27  
    Posty: 762
    Pomógł: 94
    Ocena: 288
    dasej napisał:

    A jak przekroczy czas timera?

    Można też użyć analizatora stanów logicznych. Przed i po wywołaniu algorytmu zmieniać stan pinu i sprawdzać czas na wykresie. W ten sposób nie jesteś ograniczony czasem od góry.
  • #7 18112397
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #8 18112494
    excray
    Poziom 41  
    Posty: 5502
    Pomógł: 739
    Ocena: 657
    dasej napisał:
    A jak przekroczy czas timera?

    A jak przekroczy czas timera to robisz przerwanie od przepełnienia w którym inkrementujesz jakąś zmienną co rozszerza Ci skalę.
  • #9 18112518
    Konto nie istnieje
    Poziom 1  
  • #10 18113617
    dasej
    Poziom 32  
    Posty: 1911
    Pomógł: 165
    Ocena: 267
    Co prawda nie zliczam czasu tylko cykle zegara ale można z tego bez problemu wyliczyć czas.
    Umieszczam ten kod dla innych którzy będą czegoś takiego potrzebowali.
    Efekt końcowy tematu.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jedną rzecz którą każdy będzie musiał zmienić to obsługę USART-a.

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono metody pomiaru czasu wykonania algorytmu na mikrokontrolerach AVR z wykorzystaniem timerów. Użytkownicy sugerują uruchomienie timera przed rozpoczęciem algorytmu i zatrzymanie go po jego zakończeniu, aby odczytać liczbę taktów. Wskazano na konieczność doboru odpowiedniego preskalera, a także na możliwość użycia przerwań od przepełnienia timera do zliczania cykli. Proponowane rozwiązania obejmują użycie timerów 16-bitowych z taktowaniem 1MHz oraz analizatorów stanów logicznych do pomiaru czasu. Użytkownicy dzielą się również fragmentami kodu, które ilustrują implementację tych metod na przykładzie mikrokontrolera Atmega1284P.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA