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

Jak wywołać przerwanie przy każdej zmianie TCNT1 w mikrokontrolerze?

bremenpl 22 Mar 2013 09:22 1848 6
  • #1 12094850
    bremenpl
    Poziom 13  
    Witam,
    Mam taki problem: Chciałbym wywoływać przerwanie za każdym razem kiedy nastąpi zmiana TCNT1 (timer 1 skonfigurowany na zliczanie impulsów zewnętrznych z wejścia T1 Mikrokontrolera).

    Timer działa poprawnie gdyz w konsoli z rsa widze jak wzrasta TCNT1 (tylko jezeli jest to printowane do konsoli z pętli głównej, a chciałbym to zrobić przerwaniem od zmiany TCNT1) oraz widze przebieg na oscyloskopie.

    Oto mój kod:

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


    Bylbym wdzieczny za jakakolwiek pomoc. Wedłóg mnie wszystko jest zadeklarowane poprawnie, nie wiem dlaczego nie działa.

    Próbowałem użyć INT0 do generowania przerwania przy zmianie zbocza (zwarłem int0 do T1), ale mam chyba jakieś problemy elektryczne bo taka konfiguracja zawiesza mi cały program przy zmianie wartości na INT0.
  • #2 12094938
    Konto nie istnieje
    Poziom 1  
  • #3 12094952
    bremenpl
    Poziom 13  
    Cytat:
    Timer zgłasza przerwanie przy przepełnieniu albo komparacji a nie przy każdej zmianie wartości o 1.


    Tak tez podejzewalem dlatego poczekalem cierpliwie az 16 bitowe TCNT1 sie przepelni, ale zadnego przerwania nie dostalem.

    Czy mógłbyś mi polecić jakiś inny sposób na przerwanie w momencie zmiane TCNT1?
  • #5 12095013
    bremenpl
    Poziom 13  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Tez nie dziala :(

    Dodano po 25 [minuty]:

    Udało mi się uzyskać pożądany efekt poprzez zwarcie INT0 do T1. W procedurze przerwania od zbocza narastajacego na INT umiescilem to co miało być w timerze.

    Dziekuje za odpowiedzi.
  • #6 12097240
    BlueDraco
    Specjalista - Mikrokontrolery
    I tym oto sprytnym sposobem połączenie elektryczne zastąpiło ustawienie jednego bitu.
    Wiesz, to chyba nie jest metoda...
  • #7 12097247
    bremenpl
    Poziom 13  
    Nie da sie w prosty sposob uzyskac efektu o ktory mi chodzi tylko timerem. teraz zmienilem zalozenie i bede uzywal przerwania od przepelnienia :).

    EDIT:

    btw, problem rozwiazany- zapomnialem ustawic TOIE1 na 1, w TIMSK1 (pozwolenie na OVF).
    guuuupiiiii :P.
REKLAMA