Unterschied zwischen INT0 und PCINT0

Gast #1531198
Lesenswert?

dir auch frohe weihnachten,

bei INT0 kannst du auf die Positive bzw. negative Flanke einen Interrupt 
auslösen.

Bei PCINT0 (von PIN Change..) bekommst du nur auf eine Änderung einen 
Interrupt. Ob es High oder Low ist müsstest dann selber prüfen.

gruß
Gast #1531203
Lesenswert?

Int0 ist ein Interrupt, der bei glaub allen AVRs vorhanden ist und mit 
so ziemlich jeder Sleep / Powerdown /etc trotzdem funktioniert

Bei neueren AVRs gibts zusätzlich den PCINT (Pinchangeinterrupt), der 
alte INT0 ist wahrscheinlich aus Kompatibilitätsgründen auch noch mit 
drin.

Unterschiede gibts praktisch nicht zwischen den beiden.
Gast #1531206
Lesenswert?

Flo schrieb:
> Int0 ist ein Interrupt, der bei glaub allen AVRs vorhanden ist und mit
> so ziemlich jeder Sleep / Powerdown /etc trotzdem funktioniert
>
> Bei neueren AVRs gibts zusätzlich den PCINT (Pinchangeinterrupt), der
> alte INT0 ist wahrscheinlich aus Kompatibilitätsgründen auch noch mit
> drin.
>
> Unterschiede gibts praktisch nicht zwischen den beiden.

Dass st leider falsch.
Neben den Sleepmodes die nur mit INT0 aufgeweckt werden.
Weiters haben INT0, INT1,... eine eigene Interruptroutine.

Bei PCINT muß man nicht nur low/high überprüfen, sondern man muß auch 
noch überprüfen welcher der PCINT Pins der Schnittstelle den Interrupt 
ausgelöst hat.
Also hat man bei den INT Interrupts wesentliche Vorteile gegenüber 
PCINT.
Gast #1531213
Lesenswert?

Hi

Int0, und je nach Controller INT1...INT7, besitzen jeweils eine eigene 
Interruptroutine. Für die PC-Pins gibt es so eine Art 'Sammelinterrupt', 
meist für die Pins eines Ports. Welche(r) PC-Pin einen Interrupt 
auslösen darf wird mit einem Mask-Register festgelegt. Der Aufwand für 
die Auswertung von PinChange-Ereignissen ist in der Regel höher wie bei 
INT0 (...INT7).

MfG Spess
#1531333
Lesenswert?

Es sind 2 völlig unterschiedliche Einheiten auf dem AVR.

Die externen Interrupts nimmt man hauptsächlich dazu, schnell auf 
externe Peripherie zu reagieren, z.B. CAN- oder Ethernet-Controller.
Für schnarch langsame Sachen (mechanische Kontakte) ist er schlecht 
geeignet, da er die Behandlung nur unnötig aufwendig macht.


Die Pin-Change-Interrutps sind dagegen gedacht, um Strom zu sparen, d.h. 
aus dem Power-Down-Mode aufzuwecken. Deshalb auch die Möglichkeit auf 
die Flanke aufzuwachen.
Und daher ist es in der Regel nicht nötig, zu wissen, welcher der 
freigegebenen Pins den Interrupt ausgelöst hat. Das macht dann besser 
das Hauptprogramm, z.B. die Entprellroutine im Timerinterrupt.

Üblicher Weise ist die einzige Aufgabe des Pin-Change-Interrupts, sich 
selbst zu disablen und den Sleepmode zurückzusetzen.


Peter
Gast #1531545
Lesenswert?

Prinzipiell eignen sich doch Bedientasten, besonders wenn sie Form einer 
Matrix angeordnet sind, ideal zum Anschluss an die PC-Interrupts.
Das widerspricht zwar meiner (und von diesem Forum geprägten!) Vorliebe 
zu timer-entprellten Kontakten, aber die Analogie in der Auswertung von 
Interruptquelle der PC-Ints und einer gedrückten Taste in einer Matrix 
ist doch schon bemerkenswert ähnlich - wie ich finde.

screwdriver

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