Forum: Mikrocontroller und Digitale Elektronik Pin Change Interrupt am Mega88


von Jan M. (riker)


Lesenswert?

Ich bin beim Empfang vom IR-Signalen auf Pin Change Interrupt 
angewiesen, da beide ext. Interrupts schon belegt sind.
Ich möchte aber nur auf fallende Flanken reagieren. Wie mache ich eine 
Abfrage, ob es eine fallende oder steigende Flanke war?

Oder muss ich mit einen Timer für die Bitzeit den PCI ausschalten und 
dann wieder Scharf machen?

Muss ich den PORT-PIN erst als Eingang initialisieren?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jan Mueller wrote:

> Ich möchte aber nur auf fallende Flanken reagieren. Wie mache ich eine
> Abfrage, ob es eine fallende oder steigende Flanke war?

Den Zustand des Pins in der ISR abfragen.

> Oder muss ich mit einen Timer für die Bitzeit den PCI ausschalten und
> dann wieder Scharf machen?

Ist sicher sinnvoll.  Abschalten kann er sich ja selbst innerhalb
der ISR, zuschalten dann durch einen Timer.

> Muss ich den PORT-PIN erst als Eingang initialisieren?

Sinnvoller Weise ja (du willst ja von außen was eingeben), aber das ist
er ja nach einem Reset ohnehin.  Aber der PCInt funktioniert wohl auch
an einem Ausgang.

von Jan M. (riker)


Lesenswert?

Den Zustand abfragen:

Etwa so?:

ISR(PCINT2)
{
if(PIND & (1<<PIN6))
{
...    //Flanke war steigend
}else{
...    //Flanke war fallend
}
}

von Hannes L. (hannes)


Lesenswert?

Schonmal über den ICP-Interrupt nachgedacht? Der liefert zusätzlich noch 
automatisch den Zeitstempel (Timer) für die Impulsmessung.

...

von Jan M. (riker)


Lesenswert?

Nein, ich muss als Eingang PD6 benutzen. Die anderen sind alle schon 
belegt. (Platine ist vorgegeben und fertig!)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jan Mueller wrote:

> Nein, ich muss als Eingang PD6 benutzen.

Das wäre AIN0.  Schade, AIN1 wäre einfacher, dann könntest du den
Komparator gegen die interne Bandgap benutzen. ;-)  Bei AIN0 brauchst
du irgendwas an AIN1 oder an einem der ADC-Pins, gegen das du
vergleichen kannst.

Ja, die Pin-Abfrage ist so OK.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.