www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PCF 8591


Autor: Mike (Gast)
Datum:
Angehängte Dateien:
  • preview image for ad.JPG
    ad.JPG
    41,4 KB, 368 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche derzeit (bisher vergeblich), den AD-Wandler PCF 8591 mit 
einem Atmega32 auszulesen. Verbindung zwischen µC und PC ist über USB 
vorhanden, so können die Werte direkt weitergesendet werden.


i2c_init();
i2c_start(0x90);
i2c_write(0x04);
i2c_stop();

i2c_start(0x91);
i=i2c_readNak;
send(i);


Das ist mein Code. Die Initialisisierung und Addressierung funktioniert, 
die Rückgabewerte der Funktionen bestätigen das (Ich benutze die I2C 
Master library von Peter Fleury).
Was nicht funktioniert, ist das Lesen vom AD-Wandler.
Folgende Beobachtung habe ich gemacht:
Wenn ich den AD-Wandler (wie oben) mit der Funktion i2c_readNak 
(Einmaliges Auslesen, danach Stopbedingung) auslese, kommt immer 5F als 
Wert zurück. Benutze ich die Funktion ic2_readAck wird immer der Wert 71 
gesendet.
Und wenn ich als dritte Möglichkeit nicht den Rückgabewert der Funktion 
als gewandelten Wert auslese sondern direkt das TWDR-Register, bekomme 
ich 00 als Wert.

Hat irgendjemand eine Idee, wo ich nach meinem Fehler suchen könnte? Bin 
leider ziemlich ratlos und weiß nicht, was ich noch abklopfen könnte.
Die Beschaltung habe ich angehängt, ist ein wenig unübersichtlich aber 
ich denke, man kann das Wesentliche erkennen.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat denn gar niemand irgendeine Idee? Bin leider immer noch nicht 
weitergekommen....

Autor: Board Geist (boardgeist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es geschafft diesem Baustein einen Digitalen Wert abzuringen, 
also AD funktioniert.

Nur Digital -> Analog will gar nicht.

Was hat es mit AGND auf sich, muss ich das extra legen? oder offen 
hängen lassen, messe ich meine analog. spannung hiergegen?  irgendwie 
auf GND muss ich die aber legen.

MfG

Autor: Board Geist (boardgeist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der trick ist leicht,
man mache alles in einem rutsch. keine einzelnen sendeoperationen 
sondern als block, array, wie auch immer in einer folge senden.

sonst nimmt er das datenbyte wieder als befehlsbyte auf.

mfg

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.