Hi zusammen, Eure Gemeinschaft war bisher für mich immer sehr ergiebig, über dieses Thema hab' ich aber noch nix gefunden: Hat irgend jemand eine möglichst einfache Lösung mit einem ATmega32 per ADC differentiell (ADC0+, ADC1-, x1) mittels GCC den Analogwert einzulesen (und zu berechnen)? Ist im Gegensatz zum Tiny26 etwas kompliziert. Ich nutze den ADC auch single-ended (was funktioniert) und habe deshalb eine gemeinsame Funktion (siehe Anhang). Würde mich freuen wenn jemand was wüßte! Gruß Thilo
beim gcc muß ich zwar direkt passen, aber bei bascom läufts so ... getadc(0) bis getadc(7) ist singleinded, getadc(8) ist dann z.B. differentiell. schau mal ins datenblatt, wie welcher differentielle modus registermäßig verschlüsselt ist.
Die Einstellung und die Abfrage des ADC sind kein Problem, Schwierigkeiten machen nur noch die Auswertung des Messergebnisses (000H .. 1FFH => positiver Bereich, 200H .. 3FEH => negativer Bereich, MSB => Vorzeichen). Muss ich mir doch die Zeit nehmen und was ausknobeln. Danke erstmal.
Wenn Du mit dem ermittelten ADC-Wert rechnen willst, dann mußt Du ihn vorher zu einer "richtigen" negativen Zahl im Zweierkomplement konvertieren. Ob der ADC-Wert negativ ist, gibt ein gesetztes Bit 9 an. In diesem Fall sind dann auch noch die Bits 10 bis 15 zu setzen und man hat eine echte negative Zahl mit der sich ganz normal rechnen läßt.
Hallo Thilo, Ich persönlich verwende volgende Lösung für Differentielle modus. Branko
Hi Leute, danke für die Hilfe! Hatte vor lauter Hochsprache die Grundlagen des Binärsystems vergessen! Jetzt läuft's jedenfalls! Gruß Thilo
Ich nochmal, falls jemand Interesse (oder Verbesserungsvorschläge) haben sollte, hier meine Lösungen zum AD-Wandler, einmal 'single-ended' und einmal 'differentiell' für ATmega32. Das handling der Funktionen erklärt sich von selbst. Gruß Thilo
Das Verhalten von C bei arithmetischem Überlauf vorzeichenbehafteter Daten ist undefiniert. Eine Subtraktion durch Addition des Komplements zu ersetzen, ist also nicht zu empfehlen ("ADC_temp += 64512;"), auch wenn's hier funktioniert.
Vollkommen richtig! Sollte wirklich vermieden werden. Der ADC gibt halt nur 10 bit 'raus, deshalb hab' ich nicht weiter gedacht. Danke, hatte ich vergessen.
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.