Hi!
Danke für die Antwort ... dann ist mir das jetzt klar. Die Wandlung ist immer noch eine 10 Bit Wandlung. Nur die letzten Stellen werden einfach weggelassen.
Gruß Olli
Druckbare Version
Hi!
Danke für die Antwort ... dann ist mir das jetzt klar. Die Wandlung ist immer noch eine 10 Bit Wandlung. Nur die letzten Stellen werden einfach weggelassen.
Gruß Olli
Hallo,
ich hätte jetzt noch eine Frage dazu.
Was soll dann in der var buffer stehen??
Ich wollte den Analogen wert in einen Digitalen umwandeln.
:
/* Wandlung starten */
ADCSRA |= (1<<ADSC); // Setzt das ADSC Bit im ADCSRA Register Also eine einfache Wandlung steht an.
/* Warten bis die AD-Wandlung abgeschloßen ist */
while ( !(ADCSRA & (1<<ADIF)) ) //Das ADCSRA wird mit dem ADIF Bit und verknüpft
//Rückgabewert 1 Wenn die Wandlung abgeschlossen ist. Duch die Negation wir die While Schleife möglich.
;
/* AD-Wert auslesen */
buffer = ADCL; Steht hier der Wert drin??? also ein wert zw. 1 und 512??
Danke
Hoi,
also wenn ich mal von meinem AD-Wandler ausgehe, dann handelt es sich um einen 10bit wandler. D.h der Bereich zwischen 0V und Vref wird dementsprechnd in 1024 Bereiche aufgeteilt und somit in Werte von 0..1023 gewandelt.
Da die Register im Mikrocontoller aber nur eine Größe von 8 Bit haben wird der Wert auf 2 Register aufgeteilt. Und zwar in die Register ADCL und ADCH.
Mit diesem Befehl liest du also nur das eine Register aus und lässt die 2 höherwertigen Bits des ADCH Registers unbeachtet!!! Du erhäst somit einen 8bit Wert also zwischen 0 und 255.Zitat:
buffer = ADCL; Steht hier der Wert drin??? also ein wert zw. 1 und 512??
uint16_t buffer = ADC;
That's it. Wenn du nur ADCL liest klemmt der ADC, weil immer ein Register gelacht wird und der Wert sonst nicht mehr aktualisiert wird.
Stimmt,
mit
buffer = ADC
gehts!!! \:D/
So, jetzt aber was anderes, ich habe ja mehrere von den Sensoren...
Mit
ADMUX = 0;
Weise ich ja dem Multiplexer den Port 0 zu, oder?
Wenn ich jetzt noch Port 1 und 2 zusätzlich haben will, muß ich dann die Ports hintereinander abfrage, soll heißen , in jedem Durchlauf Sensor 1 initen, abfragen, auswerten, dann Sensor 2 initen, abf... usw???
Danke für eure Hilfe
Gruß
Frostie