mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik probleme mit ADS7828


Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten tag alle zusammen.

ich habe ein problem mit einem 8ch i2c ad-wandler!
( von ti ADS7828 )
er antwortet einfach nicht :-(

ich habe ihn als first gekennzeichnet, ein poti am ch 0 angeklemmt,

er erhält von mir die adresse 0x93 (10010011 bin);
danach das Commandbyte 0x0f (00001111 bin);

und dann sollte ich ein byte von ihm zurück erhalten, was er jedoch
nicht tut!. am oszi habe ich gesehen, das die clock anliegt und die
signale auch gesendet werden, nur antwortet er nicht :-(

kann mir jemand helfen?

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für einen µC verwendest Du? Hast Du die I2C-Routienen selbst
geschrieben, oder sind es "fertige" aus dem Netz? Funktionieren diese
mit einem anderen I2C-Chip (z.B. RTC, EEPROM...)?
Wie groß ist Dein Source-Code? Kannst Du ihn hier posten?

Also, gib mal mehr Infos!

Gruß,
Markus_8051

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

Bewertung
0 lesenswert
nicht lesenswert
der code ist für den msp430!


der code funktioniert z.b. mit pcf8574's.... < also ist
er in ordnung! und nein, er ist nicht von mathar :-P!!!
er ist einfacher aufgebaut ;-)


aber warum willst du das wissen? bist du nur hinter dem code her?
denke mal schon! kannst ihn aber haben! (naja ich schließe von deinem
namen mal her, dass du 8051'er bist ;-) also ohne arbeit kannst du
damit nix anfangen ;-)...

aber mein ad-wandler läuft immer noch nicht :-(

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi KoF,

messerscharf kombiniert, wenn ich allerdíngs alle µCs in meinem Nick
aufführen würde, mit denen ich arbeite, würde er etwas lang werden,
also danke für den Code ;-))

Nein, Spaß beiseite, wenn der Code schon getestet ist, hilft es nicht
viel, ihn hier zu posten. Da wär dann eher das Hauptprogramm
interessanter (und auch nur die Routienen, die hier den ADC
betreffen).

Aber vielleicht finden wir den Fehler auch so: Nachdem Du mit einem
Write-Befehl die Adresse und das Command-Byte gesendet hast, bekommst
Du nicht automatisch den gewandelten Wert zurück. Vielmehr erhältst Du
als Antwort eine Ack-Kondition, wenn das Command-Byte in Ordnung war.
Wenn Du diese bekommen hast, kannst Du mit einem Read-Befehl auf die
Adresse des ADC die gewandelten Daten abholen.

Noch etwas zu Deinem Command-Byte: durch die 0x0F die Du sendest,
konfigurierst Du den Chip auf eine Differenzmessung zwischen den
Kanälen 0 und 1. Du hast aber geschrieben, daß ein Poti an Eingang 0
angeschlossen ist. (Vermute mal, der Mittelabgriff an ADC-CH0, die
beiden äußeren Pins an Vcc und GND). Dann solltest Du als Commad-Byte
ein 0x8F senden.

Viel Erfolg,

Markus_8051

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das habe ich auch gerade gemerkt und behoben!!!
aber trotzdem tut sich nix!

ich bin schon so verzweifelt, ich lasse jetzt jede adresse hochöaufen
(bei eins beginnend) und zu jeder einzelnen adresse lasse ich die
cmd's hochlaufen!!! aber nirgends habe ich etwas verwertbares gefunden
:-(

^^ das ist zwar nicht sinnvoll, aber bei irgend einer adresse muß er ja
antworten!!!

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh man, ich versteh es nicht!

adresse: 0x93;
cmd: 0x8f;

am chip liegen 3,3v an.
clock signal ligt am richtigen pin an.
data signal ligt am richtigen pin an.
a0 und a1 liegen auf gnd.
ein kondensator liegt zwischen vcc & gnd.
etwas über 3v pegel auf dem bus...

... und nix geht :-(

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau klappt denn jetzt nicht? Bekommst Du keine Daten, oder sendet
der Chip schon keine Ack-Kondition zurück?

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal von vorne (theoretisch)

1. Adressbyte (write) senden -> slave.ackn
2. commandbyte senden        -> slave.ackn
3. Adressbyte (read) senden  -> slave.ackn
4. datenbyte1 lesen          -> master.ackn
5. datenbyte2 lesen          -> master.ackn


ist das richtig?

Autor: Stefan Winter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe ihn ohne Probleme zum Laufen bekommen... Vileicht hilft Dir
dies weiter::::

u16 I2C_ADConv(u08 channel)
{  // zZ. wird nur CH0 abgefragt
 u08 ADH, ADL; //Temps für Werte

 channel = channel<<4;
 set_c(4,10);
 lcd_bin(channel);
 I2C_Start();           // Start Senden
 Write_I2C_Control(0x09,0x00,0x00); //0x09 Adresse von ADS7828E ,0x00 =
A0-A2, 0x00 = write
 Write_I2C_Byte(channel | 0x04); // Kanal und Wandlungstyp
 I2C_Stop();
 I2C_Start();
 Write_I2C_Control(0x09,0x00,0x01); // ADS zum Lesen anwählen
 ADH = Read_I2C_Byte();        // Higbyte einlesen
 I2C_SAckn();              // ACK Senden
 ADL = Read_I2C_Byte();        // Lowbyte einlesen
 I2C_Stop();               // Stop senden
 return ADCombi(ADH,ADL);
}

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh man, ich bin am verzweifeln!!! heul

ich mache nun folgendes!

1. i2c-start
2. i2c-schreiben (adresse: 10010000 = 0x90)
3. i2c-schreiben (comandb: 10000111 = 0x87)
4. i2c-start
5. i2c-schreiben (adresse: 10010001 = 0x91)
6. i2c-lesen
7. i2c-lesen
8. i2c-stop

aber ohne erfolg :-(

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
er läuft luftsprung

... nachdem ich einige fehler in der adressierung und des cmd-byte's
ausgemerzt habe, läuft er jetzt. erst hatte ich sehr ungenaue werte,
was jetzt aber auch vorbei ist! ich hatte die interne referenz am
laufen, was ihn meistens bei 3,3v inputs gestört hatte...

aber alles schon vergesse, denn er läuft jetzt :-)

Autor: KlaRa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo KoF,
ich bin erfreut das jemand auch mit dem ADS7828 arbeitet.
Ich habe bislang noch keine Bezugsquelle für diesen Chip ermitteln
können ohne gleich 250 Stück abnehmen zu müssen. In der Tat habe
ich mir von TI 4 Samples schicken lassen.
Jetzt möchte ich auch den ADS7823 ausprobieren. Hier habe ich ebenfalls
noch keine Bezugsquelle.
Kannst Du mir da weiterhelfen?

Gruss Klaus.

Autor: anton Steiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

habe das gleiche Problem.
Kannst du mir bitte den funktionierenden Code schicken.

Danke & LG Toni

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.