IRQHandler beim STM32F4 mit Drehimpulsgeber

Gast #4604151
Lesenswert?

Moin moin an alle,
ich hab eine Frage bezüglich des IRQHandler beim STM32F4 mit 
angeschlossenem Drehgeber.
Und zwar sobald ich das Programm auf dem Board starte und es debuggen 
will springt er immer in EXTI3_IRQHandler obwohl ich den Drehimpulsgeber 
nicht bewege. Meine Frage ist, ob eventuell mir jemand ein Tipp geben 
kann wie ich den Fehler behandeln soll.
An sich habe ich alles so programmiert und verkabelt wie es sein sollte.
Den Quellcode für den InterruptController hab ich in den Anhang gestellt 
hoffe es lässt sich ohne weiteres öffnen.
Mfg
Kagegan
Angehängte Dateien:
Gast #4604174
Lesenswert?

Tja, das ist eben immer so, wenn die Anfangs-Konditionen entsprechend 
sind, also welche Flanke, statisch oder auf Flanke reagieren usw. Ich 
lese jetz tnicht das Manual für dich, da mußt du schon selber 
reingucken.

W.S.
Gast #4604222
Lesenswert?

Belch schrieb:
> Ob das stimmt?

Jedenfalls, Timer hat der STM32F4 genug an Bord.

1
in .h
2
/*GLOBALES*/
3
static volatile int count;
4
static volatile int8_t direction;    // 1 order -1
5
static int direct;

Du musst dich entscheiden, entweder global oder static. Wo werden die 
Variablen initialisiert?

Irgendwo hast du zweimal diegleiche nvic Prio verteilt. K.A, ob das so 
geht.

mfg
#4604327
Lesenswert?

Also Problem ist gelöst..
Und zwar fehlte beim Routing der Pins die negation.
Vorher:
1
SYSCFG ->EXTICR[0] &= (0xf << (4*pin1));
Nachher
1
SYSCFG ->EXTICR[0] &= ~(0xf << (4*pin1));

Danke an euch für die Hilfe, hätte ich nie ohne euch geschafft :)
und ja der prof wollte den interrupt über die Flanken, Timer wäre zwar 
ehr richtig aber ich muss mich ja an die richtlinien meines Prof 
halten...
Auf jeden Fall schönen Abend noch
Gast #4604363
Lesenswert?

Philipp J. schrieb:
> und ja der prof wollte den interrupt über die Flanken, Timer wäre zwar
> ehr richtig aber ich muss mich ja an die richtlinien meines Prof
> halten...

Unsinn. Du dünkst dich schlauer als dein Professor, aber du bist es 
nicht.

Du solltest eher darüber nachdenken, was eigentlich dir zu begreifen 
ansteht.

Das Öffnen und Schließen eines der beiden Drehgeberkontakte ist ein 
Ereignis, was dir sagt, daß der Drehgeber bewegt wurde. Die 
Richtungs-Information hingegen bekommt man aus dem Zustand des anderen 
Signals zum Änderungszeitpunkt des ersteren Signals. Normalerweise 
ändert dieses zweite Signal seinen Zustand direkt im Rastpunkt (also 
möglicht weit weg von den Umschaltpunkten des ersteren Signals), 
weswegen das simple Abtasten im festen Timer-Raster eben grundfalsch 
ist, da man dann zwar das Ereignis als solches erkennen kann (wie bei 
einem Taster), aber nicht mehr die Richtungsinformation bekommt, da 
diese nur eine gewisse Zeit nach dem Ereignis zur Verfügung steht. Man 
müßte sehr häufig pollen, um das Abtasttheorem zu beachten und keinen 
Unfug zu dekodieren.

Kapiert?

Was tut man also?
1. die Signale konditionieren, also vom Rauschen befreien, was hier 
heißt, sie vom Prellen zu befreien - und zwar analog, da du ja wohl 
gelernt hast, daß man eine digitale Signalverarbeitung nur dann sauber 
praktizieren kann, wenn höhere Frequenzen als 1/2 Abtastrate nicht mehr 
vorkommen.
2. die zuvor analog konditionierten Signale ins Digitale übersetzen 
(sprich an einen Eingang legen, der signaltheoretisch als 1 Bit Wandler 
daherkommt)
3. diese digitalen signale auswerten. Da man den Zustand des zweiten 
Signals direkt nach dem Zustandwechsel des ersten Signals benötigt, 
kommt da eben nur der Interrupt auf den Zustandwechsel des ersten 
Signals in Frage. Alles Andere ist Pfusch, weil es sinnlos Rechenzeit 
verbraucht.

Hast du auch dieses jetzt verstanden?

Nochmal zum Mitschreiben: zuerst konditionieren, dann wandeln, dann 
auswerten.

W.S.
Gast #4604513
Lesenswert?

W.S. schrieb:
> 1. die Signale konditionieren, also vom Rauschen befreien, was hier
> heißt, sie vom Prellen zu befreien - und zwar analog,

Ach da ist ja wieder der Handelsreisende in Kondensatoren. Sind deine 
Umsätze so zusammengebrochen, daß du hier Werbung für den Einsatz von 
deinen Kondensatoren machen mußt? Hast du auch die passenden 
Drehkondensatoren im Angebot, die man bei alternden Kontakten nachregeln 
kann?

MfG Klaus

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