Forum: Mikrocontroller und Digitale Elektronik ATmega32 ADC differentiell


von Thilo M. (tmoells)


Angehängte Dateien:

Lesenswert?

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

von Marko (Gast)


Lesenswert?

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.

von Thilo (Gast)


Lesenswert?

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.

von Mario Schrenk (Gast)


Lesenswert?

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.

von Branko Golubovic (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Thilo,
Ich persönlich verwende volgende Lösung für Differentielle modus.


Branko

von Branko Golubovic (Gast)


Angehängte Dateien:

Lesenswert?

Und die Headerdatai.

von Thilo (Gast)


Lesenswert?

Hi Leute, danke für die Hilfe!
Hatte vor lauter Hochsprache die Grundlagen des Binärsystems
vergessen!
Jetzt läuft's jedenfalls!

Gruß Thilo

von Thilo (Gast)


Angehängte Dateien:

Lesenswert?

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

von A.K. (Gast)


Lesenswert?

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.

von Thilo (Gast)


Lesenswert?

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