mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Mega8 nur 8-Bit nutzen in C


Autor: Andreas Kramer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein kleines Problem. Ich möchte mit dem Mega8 (smd Ausführung) 
nur die 2 8-Bit ADC Kanäle nutzen da die von der Genauigkeit eh reichen 
und mir 8bit lieber sind als 16 zum weiterarbeiten mit dem Wert. Nun 
muss ich ja zum einlesen sowohl das low als auch das high Register 
auslesen brauche also eine 16 bit Variable. Wie bekomme ich jetzt diese 
8 bit aus der 16 bit Variablen raus in eine normal 8 bit ? Kann ich die 
einfach zuweisen und er übernimmt nur die low bits oder muss ich da noch 
etwas schieben ?

Also so

var16bit = var8bit;

also 0b00000000.XXXXXXXX und das XXXXXXXX wird übernommen das var8bit 
dann XXXXXXXX ist oder geht das so nicht ?

Andere Frage wie schließt man ein Poti an den ADC richtig an damit man 
dann einen wert zwischen 0-255 bekommt? Ich hab im Datenblatt oder 
Tutorial gelesen das AREF gegen GND mit einem R geht kann ich den 
gleichen R auch nach VCC machen damit ich das Poti dann so anschließen 
kann :

VCC---|
|     R
|     |
POTI----PIN-ADC--|
|                |
|                R (intern)
|                |
GND--------------|

Oder denke ich hier grade mist ?
Gruß A.Kramer

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Kramer wrote:
> Nun muss ich ja zum einlesen sowohl das low als auch das high Register
> auslesen brauche also eine 16 bit Variable.
Nö, musst Du nicht! Dafür gibts im ADMUX-Register das Bit ADLAR. Wenn 
das gesetzt ist, wird das Ergebnis in den beiden Ergebnisregistern 
"linksbündig" abgelegt und die 8 relevanten Bits stehen in ADCH und 
können von dort ganz normal ausgelesen werden.

Abgesehen davon sollte man, wenn man schon in C programmiert, die 
Ergebnisregister nicht einzeln auslesen, wenn man mehr als 8 Bit 
braucht. Jeder mir bekannte AVR-C-Compiler besitzt die Möglichkeit, auf 
ADCL und ADCH in einem 16-Bit-Zugriff zuzugreifen. Das 16-Bit-Register 
heißt dann i.d.R. ADC oder ADCW und der Wert kann direkt einer 
16-Bit-Variable zugewiesen werden. In dem Falle sorgt der Compiler auch 
für die richtige Zugriffsreihenfolge (und die ist wichtig!). Aber wenn 
nur 8 Bit benötigt werden, ist die Methode mit ADLAR die beste.

Autor: Andreas Kramer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Danke dann weiß ich jetzt auch was mit diesem Registerbit gemeint war 
^^ ich hab nicht daran gedacht weil es immer hieß man muss zuerst das 
low dannn das high auslesen wusste nicht das es auch nur das high geht. 
Aber so ist das logisch.

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.