mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pin Change Interrupt


Autor: Wilfried H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage bezüglich eines Atmel Atmega48 Controllers.

Was bedeutet eigentlich genau die Sache mit PIN Chance Interrupt?

Vielen Dank schon mal im Voraus!

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist die Chance einen Interrupt zu bekommen wenn sich am Pin was 
ändert.

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MoinMoin,

PCINT bietet die Möglichkeit an JEDEM Pin deines Atmels mit einem 
Pegelwechsel einen entsprechenden Interrupt auszulösen. Hier ein kurzes 
Beispiel (für einen Mega644 PCINT für Pin7 an Port A:

/* Interruptroutine PCINT */
ISR(PCINT0_vect)
{
...
}

...
/* PCINT initialisieren */
DDRA &= ~(1 << PA7);  
PCMSK0 |= (1 << PCINT7);
PCICR  |= (1 << PCIE0);
...


Siehe auch die Doku für deinen Atmel und avr-libc...

Grüße Uwe

Autor: Wilfried H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal danke für Eure schnelle Antwort.
Nur nochmal dumm gefragt, hoffe ich habs jetzt verstanden!

1. Falls ich nur PORT A Pin 7 als INT initialisiere, ist dieser
Interrupt vergleichbar mit dem am z.B. INT0 Eingang?

2. Ich kann am PORT A Pin 4 + Pin 5 + Pin 6 auf einen Pin Change INT
initialisieren und die entsprechende ISR wird abgearbeitet, sobald sich 
einer dieser 3 PIN´s irgendwie ändert?

Danke wiedermal im Voraus!

Wilfried H.

Autor: Uwe Berger (boerge) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MoinMoin,

> Nur nochmal dumm gefragt, hoffe ich habs jetzt verstanden!
>
ich habe auch eine Weile gebraucht, ehe ich es verstanden habe und die 
richtigen Register gefunden habe, die man initialisieren muß...

> 1. Falls ich nur PORT A Pin 7 als INT initialisiere, ist dieser
> Interrupt vergleichbar mit dem am z.B. INT0 Eingang?
>
ja.

> 2. Ich kann am PORT A Pin 4 + Pin 5 + Pin 6 auf einen Pin Change INT
> initialisieren und die entsprechende ISR wird abgearbeitet, sobald sich
> einer dieser 3 PIN´s irgendwie ändert?
>
richtig, der Interrupt wird ausgelöst sobald sich an irgendeinem Pin des 
Port A sich etwas ändert (vorausgesetzt die sind als Eingänge 
initialisiert). Du mußt dann in der ISR herausfinden, welcher Pin es 
war.

Was ich noch nicht herausgefunden habe, ist, wie man festlegen kann, bei 
welcher Pegelflanke (L->H oder H->L) der Interrupt ausgelöst wird 
(analog INT0). Vielleicht weis das jemand hier...

Grüße Uwe

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe Berger wrote:
> Was ich noch nicht herausgefunden habe, ist, wie man festlegen kann, bei
> welcher Pegelflanke (L->H oder H->L) der Interrupt ausgelöst wird
> (analog INT0). Vielleicht weis das jemand hier...
Geht nicht. Pin Change Interrupts reagieren grundsätzlich auf jede 
Änderung. Eine Abfrage, welche Flanke es war, muss man in Software 
machen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.