www.mikrocontroller.net

Forum: Compiler & IDEs auslesen des ADC - MAX127


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

Bewertung
0 lesenswert
nicht lesenswert
Erst einmal ein frohes Fest.

Ich habe einen ATmega8 mit 16Mhz und möchte einen MAX127 (ADC) auslesen. 
Dieser wird mit I2C angesteuert. Als Pullp habe ich die internen des 
ATmega aktiviert. Die TWI Bibliothek, welche ich verwende, habe ich 
schon mehrfach bei anderen Projekten eingesetzt und da hat immer alles 
einwandfrei funktioniert. Das Problem diesmal ist, das ich zwar Daten an 
den MAX127 senden kann und auch jedes mal ein ACK erhalte, aber ich 
keine Datene auslesen kann. Also die START-Condition geht noch und beim 
auslesen geht der ATmega dann ins timeout.

Die Beschaltung habe ich aus dem Datenblatt Seite 1 entnommen. Da der 
MAX127 2xVdd besitzt war ich ein wenig irretiert, habe aber nur eines 
auf +5V gelegt.

Danke schon mal im voraus
Das Projekt und das Datenblatt hänge ich an den Beitrag an.

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner ne Idee oder macht ihr Feiertage ;)

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Die beiden VDDs sollte man miteinander verbinden.
2. SDA und SCL verdienen vernünftige Abschlußwiderstände nach VDD (1,7 k 
... 4,7 k). Die AVR-internen Pull-Ups sind ausschließlich dann sinnvoll, 
wenn unbenutzte Eingänge des AVR auf ein definiertes Potential gelegt 
werden sollen.

Sind Abblockkondensatoren u.ä. sinnvoll angeordnet?
Passen die Wartezeiten zwischen Anstoßen einer AD-Konversion und Abholen 
des Ergebnisses?

Bernhard

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ablockkondensatoren sind natürlich direkt am ADC angeordnet. Die 
beiden Vdd werd ich auch noch mal verbinden, wobei ich meine das schon 
probiert zu haben. Mit der Wartezeit ist das so eine Sache. Laut 
Datenblatt ist die conversion time max. 10µs. Da ich in der TWI_read_ack 
bzw. TWI_read_nack ja den timeout von 250ms drin habe, sollte das schon 
passen. Das Schreiben des Konfigurationsregisters klappt ja auch. 
Deswegen scheint die Kommunikation grundsätzlich zu funktionieren. Aber 
ich werd auch mal richtige Pullups probieren.

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs gerade ausprobiert, auch mit richtigen Pullups bekomme ich beim 
Auslesen ein timeout.

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch jemand eine Idee?

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe meine TWI Bibliothek jetzt noch um die Statuscodes erweitert. 
Das Problem ist anscheinend, dass ich beim zweiten TWI_Start zum Lesen 
des ADC Wertes eine 0x48 (TWI_MasterRX_ADR_NACK) zurück erhalte. Es 
sollte aber eigentlich eine 0x40 (TWI_MasterRX_ADR_ACK) sein.

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das tun viele TWI-Slaves:
Wenn sie intern beschäftigt sind, liefern sie auf ihre Adresse "NACK" 
zurück.

Lösung: Auf dem NACK loopen, bis die interne Operation abgeschlossen ist 
und das Device wieder antwortet.

Bernhard

Autor: 6300 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das mache, bleibe ich in einer Endlosschleife hängen, da 
ständig die 0x48 zurückkommt.

Autor: I. E. (anfaenger69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute du wartest vergeblich auf das ACK, weil beim TWIRead eine 
andere Zieladresse existiert als beim TWIwrite:

        .
        .
        .
  uint8_t tmp=0;

  error=TWI_start(>>>>>>>>>0b0101000<<<<<<<<<<<,TWIwrite);

        .
        .
        .
        .
        .
        .

        {error=TWI_start(>>>>>>>>>0b1001000<<<<<<<<<<<,TWIread);}

  if (error!=true) {error=TWI_read_ack(&vor);}
        .
        .
        .

Der MAX127 reagiert nur auf die Adresse 0b0101xxx

Autor: MAX127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verdamte Sch....
und daran hab ich nun 4 Tage gesessen ;)

Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm..., ich möchte mir auch den Max127 anschaffen von Reichelt:
http://such001.reichelt.de/?SID=11TV-mA38AAAIAAGle...

Ist der das da oben für ca 23 Euro?

Der wird aber an SCK , MOSI, MISO angeschlossen.

Gruss

Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm, gebt bitte mal ein bei Reichelt : Max127

Irgendwie funktionier mein Link nicht dorthin.

Gruss

Autor: Remote One (remote1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max127 und Max1270 ist schon ein Unterschied.

Max127: I2C und 8ksps
Max1270: SPI und 110ksps (daher auch die 23€)

Der Rest ist beim groben Überfliegen des DB gleich

Autor: roboter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo kann man eigentlich den Max127 kaufen?

Finde keine deutschen Händler.
Wer kennt eine deutsche Adresse für das teil?

Gruss

Autor: Max127 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm doch erst einmal ein sample von Maxim direkt.

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.