• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wielowątkowość - aplikacja inteligentny dom
#3
Jarewa0606 ma jak najbardziej rację, ale nie do końca.
Przerwania od PCINT mamy w Atmega2560 trzy wektory, czyli 24 piny będą zgłaszały przerwanie.
I jak już się domyślamy, mając trzy wektory, to musimy trochę pokombinować aby dowiedzieć się, który pin się zgłosił.
Osiem pinów do jednego przerwania daje nam:
Kod:
    PCMSK2 = (1 << PCINT16) | // Pin change enable mask 16
             (1 << PCINT17) | // Pin change enable mask 17
             (1 << PCINT18) | // Pin change enable mask 18
             (1 << PCINT19) | // Pin change enable mask 19
             (1 << PCINT20) | // Pin change enable mask 20
             (1 << PCINT21) | // Pin change enable mask 21
             (1 << PCINT22) | // Pin change enable mask 22
             (1 << PCINT23);  // Pin change enable mask 23

    PCMSK1 = (1 << PCINT8) |  // Pin change enable mask 8
             (1 << PCINT9) |  // Pin change enable mask 9
             (1 << PCINT10) | // Pin change enable mask 10
             (1 << PCINT11) | // Pin change enable mask 11
             (1 << PCINT12) | // Pin change enable mask 12
             (1 << PCINT13) | // Pin change enable mask 13
             (1 << PCINT14) | // Pin change enable mask 14
             (1 << PCINT15);  // Pin change enable mask 15

    PCMSK0 = (1 << PCINT0) | // Pin change enable mask 0
             (1 << PCINT1) | // Pin change enable mask 1
             (1 << PCINT2) | // Pin change enable mask 2
             (1 << PCINT3) | // Pin change enable mask 3
             (1 << PCINT4) | // Pin change enable mask 4
             (1 << PCINT5) | // Pin change enable mask 5
             (1 << PCINT6) | // Pin change enable mask 6
             (1 << PCINT7);  // Pin change enable mask 7

Do tego dochodzą nam bardzo fajne przerwania zewnętrzne.
W Atmega2560 jest ich "aż" osiem INT0 - INT7.
Więc Kamil2234 będzie zadowolony.
Proponuję skorzystać z biblioteki https://github.com/NicoHood/PinChangeInterrupt
I bez kombinowania można obsłużyć wszystkie przerwania od pinów.
Proponuję kamil2234
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Wielowątkowość - aplikacja inteligentny dom - przez Robson Kerman - 06-03-2021, 20:18

Skocz do:


Przeglądający: 1 gości