mehrere Encoder auswerten

Gast #3387829
Lesenswert?

Hallo
ich möchte drei bis vier encoder an einem atmega32 betreiben. bislang 
habe ich nur von lösungen über die internen timer gelesen jedoch brauche 
ich diese für andere aufgaben.die externen interrupts hätte ich noch 
frei. kann man mit dieser schaltung ( 
http://www.mikrocontroller.net/articles/Datei:Schaltplan_quad_decoder.png 
) irgendwie die interrupts verwenden ?
danke schonmal
#3387936
Lesenswert?

@ Steve (Gast)

>ich möchte drei bis vier encoder an einem atmega32 betreiben.

Mit welcher Abtastrate?

> bislang
>habe ich nur von lösungen über die internen timer gelesen jedoch brauche
>ich diese für andere aufgaben.

Man kann mehre Dinge mit EINEM Timer machen. Ausserdem haben die meisten 
uCs mehrere Timer.
Gast #3387965
Lesenswert?

hi falk
ich weiss das du hier zu den richtigen profis gehörst. wenn du jetzt 
einen encoder auswertest , nimmst du wahrscheinlich immer die lösung 
über den timer. kannst du mir da mal eine kleine starthilfe schicken mit 
der es gehen müsste ? ich habe hier nämlich einen standart encoder von 
alps rumliegen mit 24rastungen/24impulsen und weiss jetzt garnicht was 
der timer genau von pegelwechsel zu pegelwechsel machen soll
Gast #3387978
Lesenswert?

Steve schrieb:
> standart encoder

DEN GIBT ES NICHT!!!!!

Schau dir die timerbasierten StandarD-Encoderroutinen an, dann weißt du 
was die machen.

Wie wäre es denn mit einer timergesteuerten Statemachine?
Wenn du keinen Timer mehr frei bekommst, dann nimm einen µC mit noch 
mehr Timern oder nutze einen bestehenden mehrfach, zB als Statemachine.
Gast #3387997
Lesenswert?

du scheinst dich ja wohl ganz gut mit encodern auszukennen.
ich habe keine ahnung was der timer macht,wodurch er ausgelößt werden 
soll und wie mann schlussendlich einen gewünschten wert über die 
drehrichtung erhöhl/vermindert. kannst du mir das erklären wie das geht 
?
man liest überall von greycode konvertierung und ähnlichem aber wie ???
#3388079
Lesenswert?

Steve schrieb:
> Sebi schrieb:
>> Schau dir die timerbasierten StandarD-Encoderroutinen an, dann weißt du
>> was die machen.
>
> wo gibt es die ?

Artikel Drehgeber (das ist die deutsche Übersetzung von Encoder)

und evtl. die dort verlinkten Threads.

Für mehrere Drehgeber gibt es verschiedene Varianten des Handlings:

- trivial aber suboptimal: jedem sein eigener Timer-Interrupt

- meist ausreichend: pro Drehgeber eine Funktion zur Abfrage und aus dem 
Timer-Interrupt jede dieser Funktionen aufrufen

- optimal: alle Drehgeber in einer Funktion zusammenfassen. Da kann man 
auch ein paar Bits sparen, indem man die 2 Statusbits die man pro 
Drehgeber braucht, für mehrere Drehgeber in einer gemeinsamen Variable 
zusammenfaßt


XL
(Firma: matzetronics) #3388157
Lesenswert?

Axel Schwenke schrieb:
> - optimal: alle Drehgeber in einer Funktion zusammenfassen. Da kann man
> auch ein paar Bits sparen, indem man die 2 Statusbits die man pro
> Drehgeber braucht, für mehrere Drehgeber in einer gemeinsamen Variable
> zusammenfaßt

Das ist das beste. Wenn man dann sowieso einen Timer-Ticker laufen hat, 
reicht es, die Drehgeber Routinen alle 1-5 ms aufzurufen. Wenn der 
Ticker schneller läuft, teilst du ihn mit einer Variable runter. So 
kombiniere ich z.B. Encoder Routine (1ms) und Button Routine (10ms) am 
Ende einer Timer ISR, die eigentlich die Uhr antreibt :-)
#3388394
Lesenswert?

Matthias Sch. schrieb:
> Axel Schwenke schrieb:
>> - optimal: alle Drehgeber in einer Funktion zusammenfassen. Da kann man
>> auch ein paar Bits sparen, indem man die 2 Statusbits die man pro
>> Drehgeber braucht, für mehrere Drehgeber in einer gemeinsamen Variable
>> zusammenfaßt
>
> Das ist das beste.

Ja, das ist die landläufige Bedeutung von optimal ;)

Es gibt aber einige Gründe für Variante 2

- Bit-Pfrimelei ist kompliziert und fehleranfällig; die 6 gesparten Bits 
pro Drehgeber sind es nicht wert

- man muß die Funktion nur einmal schreiben und testen; die Adaptierung 
auf einen weiteren Drehgeber ist trivial

- wenn ein weiterer Drehgeber dazu kommt, muß man funktionierenden Code 
nicht anfassen, kann ihn also auch nicht kaputt machen


XL

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