Hallo zusammen, nachdem ich nun meine Timer und LCD's am laufen habe, versuche ich mich mit AD-Wandlung. Ich habe hier einen Mega16 mit 8 MHz (interner RC). Nun habe ich mir eine externe Referenzspannung von 4 Volt eingestellt und an Aref angelegt und lasse mir den gewandelten Wert am LCD ausgeben. Wenn ich nun ADC0 mit Aref verbinde, erscheinen Werte die zwischen 1020 und 1024 schwanken. Vollkommen ok, so soll es ja auch sein. Wenn ich nun aber ADC0 mit einer Spannung von 2.8 V beaufschlage, dann erscheinen Werte um die 7000. Habe ich nun einen Fehler in der Wandlung oder bei der Ausgabe gemacht ?
Du liest 4x aus, ohne ADSC zu setzen (das wird nur beim Dummy Read einmal beschrieben). Damit liest Du aus, ohne eine Konversion gestartet zu haben (wenn ich nichts übersehen habe). Als erste Anweisung in die for-Schleife gehört
1 | ADCSRA |= (1<<ADSC); |
Wie stellst Du fest, was ausgelesen wurde? Ich kann im Programm nichts entdecken, was einer Ausgabe ähnelt. Wenn mit Debugger, bist Du vermutlich ein Opfer des Optimizers geworden, denn es gibt für den Compiler keinen Grund, z.B. result /= 4 zu berechnen.
Du überschreibst nur das LCD. Wenn da vorher der Text steht 1000 und du schreibst dann den Zahlenwert 700 drüber, dann steht da: 7000 ^ | +----- Diese 0 steht noch von den 1000 da und ist durch 700 nicht überschrieben worden. Der Text "700" ist schlicht und ergreifend zu kurz um diese 0 auch noch zu überschreiben. Mach mal das hier sprintf(buffer,"%04d",result);
Och nö, ich hab Tomaten auf den Augen ... natürlich gibst Du aus. Vergiss, was ich geschrieben habe.
Hm, wenn ich mir die Werte so anschaue, dann ist das Ergebnis anscheinend um den Faktor 10 zu gross. Kann das sein ? 4V Referenz : 1024 ==> 1V : 256 ==> 2.8V : 716. Das Verhältnis von 716 zu dem angezeigten Wert ist ungefährt 10!
Sorry, aber als ich meinen Beitrag geschrieben habe war das noch nicht zu lesen!
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.