mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega32 ADC differentiell


Autor: Thilo Mölls (tmoells)
Datum:
Angehängte Dateien:
  • ADC.txt (709 Bytes, 234 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario Schrenk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Branko Golubovic (Gast)
Datum:
Angehängte Dateien:

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


Branko

Autor: Branko Golubovic (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und die Headerdatai.

Autor: Thilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thilo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.