Forum: Mikrocontroller und Digitale Elektronik Drehgeber Auswerten an Attiny13 und Atmega8 bascom


von Neubi (Gast)


Angehängte Dateien:

Lesenswert?

Hi! Ich komme hier im Text nicht weiter. Mag einen Drehgeber auswerten 
und habe im www den obigen Textschnipsel gefunden. Jedoch geht beim 
compilieren schon ein Fehler los, die Baudrate wäre nicht möglich- hab 
ich also das Schicken des Werts von "D" gecancelt. Nun würde ich gern 
wissen, warum nicht mein Atmega 8 diese Aufgabe kann?

Stelle ich auf den Mega8 um, so stört den Compiler u.A. diese Stelle:

On Pcint0 Int_isr

bei der Sache mit angenommenem tiny13 stellt das kein Problem dar, beim 
Atmega8 gehts nicht?!

Weiterhin akzepiert man beim tiny13 diese Stelle, jedoch beim Atmega8 
nicht:

Pcmsk = 8
Gimsk = 32

Da ich in der Hilfe hierzu nichts finden kann wende ich mich hier an 
einen erfahrenen Experten :-)
Da ich keinen Tiny13 habe und diesen auch nicht nutzen mag suche ich 
nach einer Lösung, den Drehgeber auszuwerten an Atmega8

von Hannes Lux (Gast)


Lesenswert?

> Stelle ich auf den Mega8 um, so stört den Compiler u.A. diese Stelle:

> On Pcint0 Int_isr

Ja logisch, Du willst damit ein Feature verwenden, das Du gar nicht 
gekauft hast... ;-)

Der Mega8 hat kein PinChange-Interrupt, was Du durch einen Blick in das 
Datenblatt des Mega8 auch selbst herausfinden konntest...

Du kannst stattdessen einen der externen Interrupts verwenden.
Sei Dir aber bewusst, dass das Auswerten von Drehgebern mit Interrupt 
den Controller arg belasten kann, besonders bei Drehgebern ohne Rastung 
oder bei billigen mechanischen Drehgebern.

Ich bevorzuge (zumindest bei Drehgebern, die der manuellen Bedienung 
dienen) eine Variante, die vom Timer-Interrupt synchronisiert wird oder 
im Timer-Interrupt läuft. Dies läuft auch mit billigen Drehgebern aus 
Sonderposten zufriedenstellend.

Funktionsweise: Es wird aus den beiden aktuellen Drehgeberbits und den 
gemerkten Drehgeberbits der letzten Abfrage eine 4-Bit-Zahl gebildet 
(0..15) und der Increment-Wert (0, +1 oder -1) aus einer Lookup-Tabelle 
geholt und zum zu verstellenden Wert addiert. Das Prinzip ist auch im 
Wiki unter Drehgeber beschrieben.

...

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
Noch kein Account? Hier anmelden.