Forum: Mikrocontroller und Digitale Elektronik AD-Wandler 10bit in 8bit Timer einlesen


von Andreas (Gast)


Lesenswert?

Hallo!

Meine Timerschaltung funzt soweit ganz schön.
Nun muß ich natürlich noch ein bißchen Feinarbeit leisten.

Also,...
Mein ADWandler im Attiny 26 wandelt auf 10bit um.
Dieser Wert soll in das Vergleichsregister des Timers1 geschoben
werden.
Das Register ist aber ein 8bit-Register.
Ihr könnt Euch vorstellen, daß es dann Probleme gibt!

Die Analogspannung kommt von einem Poti (linear).
Sie wird auch schön im ADC gewandelt.
Allerdings reagiert die Schaltung nicht "linear" auf die
Poti-Einstellung.
Liegt eigentlich nur an der 10 zu 8bit-Geschichte, oder?

Dabei gehen Bits verloren, bzw. es wird Müll in den Timer geschrieben.
Lt. Datenblatt genügt es, um den ADC auszulesen, x = ADC zu schreiben.
Wird hierbei aber automatisch ein 8-bit-Wert erzeugt?
Sprich zwei Bits "geschoben" o. ä.?

Klärt mich mal auf!
Es wäre ganz schön, wenn mein Timer proportional auf die Poti-Stellung
reagiert.
Je größer die Analogspannung, desto länger die Timeraktion.

Gruß,
Andreas

von ich hasse doppelpostings ! (Gast)


Lesenswert?


von Gerhard (Gast)


Lesenswert?

Hi Andreas,

ich kenne zwar den Attiny26 nicht aber
z.B. beim mega8 kann man im Register ADMUX
enstellen dass nur ein 8 Bit Wert vom ADC
ausgegeben wird. Dann erspart man sich die
Wandlerei.
Schau mal im Datenblatt, müsste eigendlich auch beim Attiny26 funzen.

Gruss Gerhard

von Thomas Burkhardt (Gast)


Lesenswert?

Warum zweimal?

Egal, du kannst den ADC so einstellen, dass die niedrigen zwei Bit
gleich verworfen werden. Siehe ADLAR im ADMUX - oder kurz RTFM.

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Ich habe im Moment kein Datenblatt vom ATiny26 da. Bei anderen Atmel's
kannst du mit dem ADLAR-Bit in einem ADC Register einstellen ob das
ADC-Ergebnis rechts- oder Linksbündig in die ADC-Ergebnis-
register eingelesen werden. Normalerweise werden die unteren 8Bit in
ADCL und die oberen 2 in ADCH geschrieben. Ich nehme an ,daß das bei
dir so ist. Bei ADLAR=1 sind die oberen 8 Bit in ADCH. Du brauchst nur
diesen Wert auszulesen und in dein Timerregister zu übernhmen. Dann
sollte es gehen.

MfG HG

von Andreas (Gast)


Lesenswert?

1. Danke an alle!
2. War kein konkretes Doppelposting, sondern eine gezielte Frage für
den ATtiny!

Gruß,
Andreas

von Andreas (Gast)


Lesenswert?

Ach, so:

Hab' ich ganz vergessen!
Mit ADLAR = 1, und nur ADCH auslesen klappt's!

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.