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
Ohne dass verraten wurde was genau gemessen werden soll sag ich einmal "input capture unit".
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.
@ 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
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
ich würde mal schauen ob dein controller ein sogenanntes "Quadratur-Encoder-Interface (QEI)" hat. Diverse STM32 und PIC's haben sowas!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.