Hallo,
ich hatte bisher immer einen single mode beim ADC Atmega8 verwendet. Nun
wollte ich auf differential mit Atmega16 umstellen. Dabei habe ich auch
den Programmcode geändert. Da ich es nicht ganz hinbekommen habe wollte
ich nun zurück zu single mode wechseln. Nun klappt gar nichts mehr -.-
und ich sehe den Fehler nicht. Kann eventuell einer von euch über den
Code schauen?
Ich habe momentan GND an ADC0 anliegen. Dennoch wird mir immer der Wert
276 angezeigt.
Das soll ein dummy auslesen sein. Hab ich im Netz gesehen. Kann man
sicher auch anders machen bspw. return ADCW. Führt aber leider auch
nicht zum Erfolg :(
damit hatte ich zwischen den ADC-Eingängen umgeschaltet aber sollte
jetzt grundsätzlich auf "0" stehen, sodass nur ADC0 für die single conv.
verwendet wird.
Hatte ich ursprünglich verwendet, um auf diff-mode umzustellen (dann
natürlich nicht mit 00000 sondern 01011).
Thomas H. schrieb:> Wo ist diese Variable definiert, die Du zurück gibst>> ADCW
Ich habe angenommen, dass ich keine Variable benötige. Das ist doch ein
Register im Atmega
Bin nicht Profi das ist richtig. Bin froh, dass ich mein LCD zum
Anzeigen bekomme und Relais schalten kann. Nun möchte ich mich auch mal
am ADC versuchen.
Wie kommst Du denn auf den Code...? Zusammengewürfelt aus Beispielen,
oder selber ausgedacht mit Datenblatt zur Hand?
Warum hast Du den Vorteiler so genommen wie Du es getan hast? Warum die
interne Ref Spannung auf 2,56V Hast Du einen Kondensator am AREF pin?
Mit wieviel MhZ läuft dein Atmega8
Ich habe mit einem Tutorial hier angefangen und das dann über das manual
auf meine benötigten Funktionalitäten angepasst (bspw. nur single
conversion und fest definierten channel).
Die interne Ref Spannung habe ich verwendet um "klein" anzufangen.
Wollte einfach mal schauen wie das so funktioniert und dafür war Vref
ausreichend. Einen Kondensator habe ich nicht angeschlossen.
Atmega läuft mit 1 Mhz. Das sollte sich auch mit F_CPU decken, sonst
würde das LCD nichts anzeigen.
Ich habe jetzt auf diff mode geswitcht. Funktioniert super.
Nur noch eine Frage zur Versätkrung mit 200x. Was genau verstärkt er
hier? Beide Eingänge falls die Differenz im mV Bereich liege um diese
dennoch zu identifizieren? Sprich sollte ich einen sehr großen
Unterschied feststellen wird mir ab einer bestimmten Schranke immer 255
angezeigt, also irgendwann könnte der ADC den Unterschied nicht mehr
messen da er aufgrund der 200x außerhalb der Range liegt. Ist das so?
Und Warnungen ignoriert man. Wusstest du das nicht?
Wenn man nochmal kompiliert ist sie weg.
"Na, da hat der Compiler sich wohl beim ersten Mal geirrt."
mfg.
Thomas E. schrieb:> Karl H. schrieb:>> Wie hast du das durch den Compiler gebracht?>> Das gibt doch nur eine Warnung:
Hoffen wir mal, dass der TO (sollte er noch einmal reinschauen) seine
Lektion gelernt hat.
Peter II schrieb:> oder du?> (void) ADCW;>> ist ok, und macht auch sinn.
Abgesehen von der Tatsache das die Frage darauf abzielte zu evaluieren
ob der TO weiss was er da macht und in keiner Weise von mir offen, oder
implizit darauf hingewiesen wurde das diese Instruktion an dieser Stelle
falsch sei, oder generell keinen Sinn macht, würde mich an dieser Stelle
aber natürlich interessieren warum das genau "hier" Ok ist und auch noch
einen Sinn hat. Ich lerne nämlich immer gerne etwas dazu. Vielen Dank im
Voraus!
@Peter II
..wie ich mir dachte, da kommt nichts mehr. Früher in der Schule nannten
wir so Leute "Klugscheisser". Nach der Schule waren die einsam, heute
machen Sie auch nach Schulfrei im Internet weiter..