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

Konfiguracja przerwania PCINT1_vect dla PD6 w AVR328PB

pejdz 24 Mar 2020 13:10 351 5
REKLAMA
  • #1 18556231
    pejdz
    Poziom 4  
    Witam,
    Chciałbym się spytać gdzie popełniam błąd jeżeli chodzi o przerwanie od stanu wejścia pinu PD6 mam taką inicjalizację, jednak mi to nie wychodzi
    tutaj przedstawiam kod programu:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 18556392
    excray
    Poziom 41  
    A jakie dostajesz komunikaty błędów. Te definicje:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    są co najmniej dziwne.
  • REKLAMA
  • #3 18556459
    pejdz
    Poziom 4  
    Wszystko się kompiluje bez komunikatów, te definicje są da mnie aby kod programu był dla mnie przejrzystszy.

    Dodano po 1 [godziny] 20 [minuty]:

    Zaczeły działać mi przerwania, lecz gdy nacisnę przycisk dioda nie miga tylko sie raz zapala. Jak wykonać, żeby migała póki trzymam przycisk w przerwaniu?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    [/film]
  • REKLAMA
  • #4 18556832
    SuhaK01
    Poziom 10  
    Twoje przerwanie PCINT2 uaktywnia się, gdy zmienisz stan odpowiedniego pinu. Po naciśnięciu przycisku, program zmienia ci bit LEDbottom w PORTB na przeciwny, a następnie wychodzi z przerwania.
    Następna zmiana w tym porcie nastąpi dopiero, gdy puścisz przycisk.

    Jeżeli chcesz, aby migała gdy przycisk jest wciśnięty, powinieneś sprawdzić w przerwaniu, czy wejście jest w odpowiednim stanie (przycisk wciśnięty), a następnie możesz, na przykład,
    wejść w pętlę while, która będzie cyklicznie zmieniać stan wyjścia co np. 100 ms - do momentu, w którym nie puścisz przycisku.
    Po jego puszczeniu też wystąpi żądanie przerwania, ale, jeżeli dodasz warunek sprawdzający stan przycisku, program ominie pętlę i wyjdzie z przerwania, oczekując na ponowne wciśnięcie.
  • REKLAMA
  • #5 18557322
    pejdz
    Poziom 4  
    Dzięki wilekie za pomysł i w sumie rozwiązanie. Temat uważam za wyczerpany i zamknięty.
  • #6 18557335
    SuhaK01
    Poziom 10  
    Zanim zamkniesz, jeżeli chciałbyś migać bez używania _delay, poczytaj w datasheet o timerach i przerwaniach od nich.
REKLAMA