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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.