Interrupt bei STM32F103C8

OP (Firma: Frickelhauptquartier) #7827983
Lesenswert?

Moin, wie kann es sein, dass der erste Interrupt funktioniert, der zweite jedoch nicht?

volatile byte B5=0,B4=0; // ohne volatile selbes Ergebnis ... pinMode(PB5, INPUT_PULLDOWN); // DATUM attachInterrupt(digitalPinToInterrupt(PB5),B5Pressed,RISING); pinMode(PA15, INPUT_PULLDOWN); // ALARM1 attachInterrupt(digitalPinToInterrupt(PA15),B4Pressed,RISING); ... if(B5==1)dispdatesun(); if(B4==1){Serial.print("AL1:");...} ... void B5Pressed(){ B5=1; }

void B4Pressed(){ B4=1; } Ich habe auch schon die Pins B3 und B4 ausprobiert, selbes Ergebnis.

Edith hat gerade herausgefunden: an PA6 funktioniert es, aber warum?

(Firma: matzetronics) #7828129
Lesenswert?

Thomas G. schrieb:

Wäre mir neu, dass das gemacht werden muss.

Gab sogar mal einen Beitrag hier dazu. Es betrifft auf jeden Fall IRQs, die über GPIO ausgelöst werden. Erst den Request löschen, dann im Interrupt weitermachen. Ist aber easy für dich, das einfach mal auszuprobieren. Selbst löschen tut der STM32 den Request nämlich sowieso nicht.

Gast #7829745
Lesenswert?

Thomas G. schrieb:

wie kann es sein, dass der erste Interrupt funktioniert, der zweite jedoch nicht?

Die Frage ist nicht eindeutig. Meinst du mit "der zweite" dass am zweiten Eingang PA15 (auch PB3 und PB4)

a) gar kein Tastendruck erkannt wird oder b) nach dem Reset nur der erste Tastendruck erkannt wird?

Handelt es sich um ein Blue-Pill Board? Dann liegt es sich mit hoher Wahrscheinlichkeit an einer schlechten Fälschung. Probleme mit Interrupts wurde da schon öfter berichtet.

Wastl schrieb:

Vermutlich weil du ein Interrupt Flag nicht löschst nachdem ein Interrupt aufgetreten ist.

Daran liegt es nicht, darum kümmert sich das Framework.

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