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

[Atmega8] [Atmega8][C] Precyzyjne zliczanie czasu co 1us w odległościomierzu

lycon5 20 Lut 2012 19:55 1464 5
REKLAMA
  • #1 10573803
    lycon5
    Poziom 11  
    Właściwie dwa pytania ale jedno z większym priorytetem ;) Otóż, projektuje odległościomierz. Zamysł jest następujący
    1. Załączam tranzystor który steruje napięciem dla nadajnika.
    2. Włączam zliczanie czasu
    3. Gdy pojawi się sygnał na odbiorniku. Wyłączam naliczenie i prezentuje wynik.

    Timer skonfigurowałem, żeby przerywał co 1us jednak nie jest to zbyt zgodne z prawdą. Wynik nijak się ma do realnego czasu. Załączenie tranzystora i sygnał na odbiorniku dla pewności symuluje, przyciskami. Emiter tranzystora znajduje się INT1 a sygnał z odbiornika na INT0. Liczę na pomoc

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10573858
    sulfur
    Poziom 24  
    Przerwania tutaj są zbędne. Polecam zrobić tutaj pomiar na flagach, ale tych sprzętowych.
    Z jaką częstotliwością działa ta atmega ?
  • REKLAMA
  • #3 10573880
    lycon5
    Poziom 11  
    Przepraszam zapomniałem napisać. Wewnętrzne taktowanie z częstotliwością 1MHz. Flagach sprzętowych ? to znaczy ? :)
  • REKLAMA
  • Pomocny post
    #4 10573905
    excray
    Poziom 41  
    Czyli teoretycznie co takt zegara ma być przerwanie. Teoretycznie bo w praktyce będzie po takcie od wpisania do TCNT0->255 ale następne będą co 256 cykli. Swoją drogą jak chcesz w jednym takcie obsłużyć całe przerwanie?
  • REKLAMA
  • #5 10573917
    lycon5
    Poziom 11  
    Rzeczywiście nie ma to większego sensu jak na to tak spojrzeć. Przerwanie co 10us powinno załatwić sprawę ? Czy dalej za mało ?
  • Pomocny post
    #6 10573961
    sulfur
    Poziom 24  
    No to działać na pewno nie będzie, bo przy 1MHz to jeden cykl trwa 1us. Zapomnij, że coś pomierzysz dobrze.
    Zapoznaj się z rejestrami GICR (INT0 i INT1) i GIFR (INTF0 i INTF1).
REKLAMA