mikrocontroller.net

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


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ich hasse doppelpostings ! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hartmut Gröger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas (Gast)
Datum:

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

Gruß,
Andreas

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, so:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.