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