06-03-2021, 20:18
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:
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
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.