atmega16 und DA-Wandler MCP4921

Gast #3556311
Lesenswert?
• ▲
▼
Hallo Freunde,

ich möchte einen MCP4921 12Bit DA-Wandler per ATmega16 via SPI 
ansteuern. Das gelingt mir mittlerweile auch schon recht gut, ich kann 
dem DA-Wandler sagen was er machen soll, und er tut ungefähr das... aber 
eben nur ungefähr.

Zum Testen möchte ich ganz einfach die Variable
1
value.Short

in der Funktion  update() übertragen. Bei 12 bit sollte ich somit bei 
einem Wert von 4096 die Referenzspannung am Ausgang messen (4.09V). 
Leider stimmen diese Werte bei mir überhaupt nicht.

Bei einem Wert von value.Short von 300 messe ich 0.443V, bei 600 1.202V 
und wenn ich value.Short auf 2000 setze,  messe ich sogar 4.98V.

Ich übertrage die beiden Bytes (12 Bit Daten, und 4Bit overhead) ganz 
einfach nacheinander.

Kann bitte jemand schnell den Code anschauen und mir sagen wo der Fehler 
liegt? Vielleicht liegt es trotzdem an der Art wie ich die Bytes 
übertrage, aber ich kann den Fehler beim besten Willen nicht finden.

Denkt ihr es kann an der Beschaltung liegen. Im Moment ist der Ausgang 
des DA-Wandlers einfach offen.

Vielen Dank für die Hilfe

Hoanz
Angehängte Dateien:
#3556368
Lesenswert?
• ▲
▼
@ hoanz (Gast)

>in der Funktion  update() übertragen. Bei 12 bit sollte ich somit bei
>einem Wert von 4096 die Referenzspannung am Ausgang messen (4.09V).

Nein. Der größte Wert eines 12 Bit Wandlers ist 4095 und knapp unter 
Vref.

AD-Wandler

http://www.mikrocontroller.net/articles/Quantisierung

>Bei einem Wert von value.Short von 300 messe ich 0.443V, bei 600 1.202V
>und wenn ich value.Short auf 2000 setze,  messe ich sogar 4.98V.

>Denkt ihr es kann an der Beschaltung liegen. Im Moment ist der Ausgang
>des DA-Wandlers einfach offen.

Ist OK.

Im Prinzip sollte dein programm funktionieren, wenn gleich die Funktion 
noch etwas sehr gebastelt ist. Du musst aber den gainx1 Modus noch 
einschalten, sonst geht es nicht. DU kannst keine Spannung > VCC 
erzeugen. Also noch ein

value.Short |= 0x2000;  // GAIN x1

ergänzen.

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.