6x3Channel Encoder an Mikrocontroller - nicht genug External Interrupts am STM32F4

OP #4649633
Lesenswert?

Hallo zusammen,

ich möchte 6 Encoder mit jeweils 3 Channeln (also 18 Leitungen) an den 
STM32F4(168Mhz) anschließen. Allerdings stehen mir dafür nicht genug 
external interrupts zur verfügung.

Was gibt es sonst für Möglichkeiten? Einfach die Pins in einer 
Dauerschleife auslesen und mit dem letzten Zustand vergleichen um 
Flanken zu detektieren?

Die max. Drehzal führt zu ca. 20000 Flankenwechseln pro Sekunde. Müsste 
also die Eingänge mit ca. 40KHz abfragen wenn ich auf der sicheren Seite 
sein möchte.

Wie lange dauert denn das auslesen eines Eingangs ungefähr?

Ich will nur die Flankenwechsel zählen...die Zeiten dazwischen sind mir 
nicht wichtig.

Oder gibt es externe Bausteine die direkt mit einem Encoder verbunden 
werden können und z.B. über SPI oder ähnliches vom Mikrocontroller 
ausgelesen werden können?

Gruß
Tobi
Gast #4649669
Lesenswert?

Aber wieso hast du nicht genug externe Interrupts?
Es ist doch jeder Pin interruptfähig.

Ansonsten kannst du ja ein paar kleinere STMs per SPI o.ä. ankoppeln, 
welche die Encoder auswerten und den Wert an den Haupt-µC weitergeben.
#4649684
Lesenswert?

Tobias K. schrieb:
> Danke, ja es sind normale Quadraturencoder. Allerdings brauche ich wie
> gesagt keine Timer. Die Timer sind leider auch schon anderweitig belegt.
> Ich will nur die Pulse zählen.

dann hast Du was grundlegend falsch geplant oder programmiert.
Timer kann man durchlaufend benutzen. Zählen mit ext. Interrupts ?
Suche mal hier nach Peters Routine. Es gibt unzählige Beiträge zu dem 
Thema.
OP #4649711
Lesenswert?

Hab glaube das von Peters Routine gefunden. Wenn ich das richtig sehe 
liest er auch ständig aus oder zählt die Flanken mit interrupts.

Das integriertes Encoder-Interface vom STM ist zwar super geht aber 
meines Wissens nach nur mit Timer2-5. Aber so könnte ich den Rest auf 
externe interrupts legen.
#4649715
Lesenswert?

@Tobias K. (Firma: fruitcore) (jayrock1987)

>Hab glaube das von Peters Routine gefunden. Wenn ich das richtig sehe
<liest er auch ständig aus oder zählt die Flanken mit interrupts.

Mit einem TIMER-Interrupt! Nicht mit einem Pin Change Interrupt! Siehe 
Drehgeber.

>Das integriertes Encoder-Interface vom STM ist zwar super geht aber
>meines Wissens nach nur mit Timer2-5. Aber so könnte ich den Rest auf
>externe interrupts legen.

Falsch! Nimm einen 40 kHz Timer-Interrupt und taste dort die Eingänge 
ab.

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