ATmega32 ADC differentiell

OP #395249
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
Angehängte Dateien:
Gast #395250
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.
Gast #395251
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.
Gast #395252
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.
Gast #395256
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
Angehängte Dateien:
Gast #395257
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren