PCINT Interrupt mega88

Gast #766502
Lesenswert?

Hallo.
Ich verstehe die PCINT interrupts nicht wirklich...
Die Pins eines mega88 haben im Datenblatt alle die PCINT Eigenschaft. 
Wie kann ich das denn nun in meinem Program verwenden?
Ich habe ja nur PCINT0-PCINT2 zur verfügung. Ich müsste aber auf PB4 ein 
Interupt bekommen. Ist das irgendwie möglich?
#766511
Lesenswert?

Die Pin Change Interrupts sind in Gruppen mit den entsprechenden Pins 
verbunden. Jeder der drei Pin Change Interrupts ist für einen kompletten 
Port zuständig (PCIF0 für die Pins PCINT0...7, also Port B, PCIF1 für 
PCINT8...14, also Port C, PCIF2 für PCINT16...23, also Port D). Mit den 
PCMSK-Registern (Pin Change Interrupt Mask Register) kann man die 
einzelnen Pins für den dazugehörigen Interrupt aktivieren. Wenn Du also 
an PB4 einen Pin Change Interrupt haben willst, musst Du zunächst mal 
den Pin Change Interrupt 0 freigeben (PCIE0) und zusätzlich im PCMSK0 
das zu PB4 gehörige Bit PCINT4 setzen.
#766563
Lesenswert?

> EICRA |= (1<<ISC10) | (1<<ISC00);
Das hat mit den Pin Change Interrupts nichts zu tun, das ist nur für die 
externen Interrupts. Die Pin Change Interrupts können nicht 
flankenselektiv ausgelöst werden. Die Flankenerkennung muss in Software 
gemacht werden. Der Rest müsste aber stimmen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren