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

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