Forum: Mikrocontroller und Digitale Elektronik Interrupt Atmega


von Felix (Gast)


Lesenswert?

Mahlzeit,
ich möchte bei einem Atmega328 einen Interrupt INT0, welcher bei 
steigender und fallender Flanke ausgelöst wird.
ISC01
Ist es möglich, je nach Interrupt eine andere Funktion aufzurufen? Oder 
muss ich mir den vorigen zustand merken und dann in der ISR abfragen?
Also momentan habe ich
1
extern "C" ISR(INT0_vect)
2
{
3
    if(button::getState() == false)
4
    {
5
        button::setState(true);
6
        timer->start();
7
    }
8
    else
9
    {
10
        button::setState(false);
11
        timer->abortBtn();
12
    }
13
}

Felix

von Thomas E. (thomase)


Lesenswert?

Ums Abfragen kommst du nicht herum.

Du könntest aber statt des INT0 den entsprechenden Pinchange Interrupt 
verwenden. Der löst, wie jetzt auch, bei jedem Flankenwechsel aus. Den 
INT0 konfigurierst du als Falling Edge ohne den Interrupt freizugeben. 
Dann kannst  du in der PCINT-ISR das Flag des INT0 abfragen, daß nur bei 
fallender Flanke gesetzt wird. Das Flag muß dann per Software gelöscht 
werden.

von Pandur S. (jetztnicht)


Lesenswert?

Es ist aber schon klar, dass man damit keine Tasten auswerten soll ?
Stichwort : Prellen.

von Peter II (Gast)


Lesenswert?

Sapperlot W. schrieb:
> Es ist aber schon klar, dass man damit keine Tasten auswerten soll ?
> Stichwort : Prellen.

wenn es aber z.b. eine Taste für "Not-Aus" ist dann spielt das Prellen 
überhaupt keine Rolle - Aus ist aus.

Also nicht alles so pauschal sehen.

von Pandur S. (jetztnicht)


Lesenswert?

Nee. auch Not-Aus nicht. Sooo ultradringend ist gar nichts, was man 
nicht mit einem periodischen Timer Interrupt ersetzen koennte.

von Felix (Gast)


Lesenswert?

Sapperlot W. schrieb:
> Es ist aber schon klar, dass man damit keine Tasten auswerten soll ?
> Stichwort : Prellen.

Unter anderem schon, aber auch ein DCF-Signal sollte auf dem zweiten 
Interrupt ausgewertet werden (aber mit selber logik).

Mit dem Button hast du aber recht, da muss ihc mir nochmal was überlegen

von Peter II (Gast)


Lesenswert?

Sapperlot W. schrieb:
> Nee. auch Not-Aus nicht. Sooo ultradringend ist gar nichts, was man
> nicht mit einem periodischen Timer Interrupt ersetzen koennte.

aber es stellt auch kein Problem dar, es im Interrupt machen zu lassen.

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.