Das ist´n bisschen tricky - aber eigentlich ganz einfach:
Es gibt nur 3 PinChange-Interrupts, die aber von je 8 verschiedenen I/O-Pins ausgelöst werden können. Hierzu sind die 24 PCINT-Eingänge in 3 Gruppen zusammengefasst:
PCINT0: Umfasst alle PCINT-Pins von 0-7 (d.h. PB.0 - PB.7)
PCINT1: Umfasst alle PCINT-Pins von 8-15
PCINT2: Umfasst alle PCINT-Pins von 16-23.
Wenn Du also mit dem Anschluss B.4 arbeiten willst, musst Du erstmal in etwa folgenden Code schreiben:
Config PCINT0 = change
On PCINT0 ISR
Enable PCINT0
Damit aber die anderen Pins, die zur Gruppe PCINT0 gehören, nicht den selben Interrupt auslösen, gibt´s für jede Gruppe ein sogenanntes "Mask"-Register, mit dem man festlegenen kann, welcher PCINT-Anschluss denn auch wirklich einen Interrupt auslösen soll: PCMSK2, 1 und 0.
PCMSK0 = &B00010000
aktiviert z.B. den PCINT4-Eingang als einzigen der Gruppe 0-7 - so wie Du es vorhattest.
Klar?
Lesezeichen