Inkrementalgeber mit max. 40kHz auslesen

Gast #2442172
Lesenswert?
• ▲
▼
Hallo,
ich habe in meiner Anwendung einen Quadratur Decoder. Dieser liefert 
Impulse mit max. 40kHz. Daher ist eine Methode über das Auslesen über 
einen 1ms Timer unmöglich. Gibt es eine sinnvolle Lösung über Interrupt, 
bei der man sich bei Störungen keine Probleme bezüglich der Rechenzeit 
einhandelt?

Gruß,
Alex
Gast #2442209
Lesenswert?
• ▲
▼
hi,

du hast wie immer mehr als einen möglichen ansatz:

1. nimm einen uC mit incremental-encoder-mode timer, da zählt die hw für 
dich = null rechenzeit problem von vorneherein

2. isr-flankensensitive inputs, in der/den isr einen zähler 
inkrementieren, den du in deinem hauptprogramm überwachst und im von dir 
vorgegebenen zeitintervall zurücksetzt. so kannst du eine abschätzung 
der isr-last machen und diesen bei störungen ggf. disablen und nur 
zyklisch für eine endliche zeit wieder freigeben bis die störung weg 
ist. das encoder-signal kannste bei störung eh als unzuverlässig 
vergessen...


gruss, tom.
#2442286
Lesenswert?
• ▲
▼
@  Alex Rappl (Gast)

>Impulse mit max. 40kHz. Daher ist eine Methode über das Auslesen über
>einen 1ms Timer unmöglich.

Logisch. Dann nimm einen 3us Timer. Da hat der uC zwar sehr viel zu tun, 
geht aber nicht anders.

> Gibt es eine sinnvolle Lösung über Interrupt,

NEIN!

Siehe Drehgeber.

Wenn eine Softwarelösung zu langsam ist bzw. zuviel CPU-Leistung 
benötigt, muss eben Hardware her. Oder ein uC, welcher den Dekoder in 
Hardware hat, da gibt es einige.

MFG
Falk
#2442304
Lesenswert?
• ▲
▼
Man kann statt des Timerinterrupts auch den Pin-Change-Interrupt nehmen.
Falls man Probleme mit Oszillationen befürchtet, kann man ein Timeout 
aufsetzen, der bei zu hoher Interruptlast eine minimale Totzeit 
absichert.

Generell sollte der (unbekannte) MC aber Interruptlevel unterstützen, 
damit langsame Interrupts den Encoder nicht blockieren.

Falls nicht, kann man aber auch einen MC nur für den Encoder abstellen 
(z.B. ATtiny25), der dann vom Master per I2C oder SPI ausgelesen wird.


Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.