www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADUC842 sendet kein ACK


Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnt ihr mir vielleicht helfen. Ich programmiere zur Zeit eine 
Kommunikation zwischen dem PC und dem Mikrocontroller ADUC842 der Firma 
Analog Devices. Die Kommunikation soll über den I²C-Bus erfolgen. Für 
die Programmierung verwende ich die im Datenblatt vorgegebenen Bits MDO 
(Master Data Output), MDE (Master Data Enable), MCO (Master Clock 
Output) und MDI (Master Data Input). Allerdings bekomme ich, wenn ich 
die Funktion i2c_write_byte verwende, immer MDI = 1, also kein 
Acknowledge vom Mikrocontroller, zurück. Hat jemand eine Idee woran das 
liegen könnte? Ich arbeite mit dem Compiler µVision3 von Keil.
Danke schonmal für die Hilfe.

Carola

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste ma schaltung!

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uh sry doche nicht geht ja ums proggen! ;-)


MFG mike

Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
also dies ist der Auszug aus meiner Funktion i2c_write_byte:

  // Empfang des Slave-Ack ermöglichen
  MDE = 0;
    zeit();
    MCO = 1;
    zeit();
   ack = MDI;
    MCO = 0;          // Takt erzeugen
    zeit();

   if (ack)      // Wenn kein Ack vom Slave
     {
       return(ack);    // Fehlermeldung
     }
    else                    // Bei empfangenen Ack des Slaves
              {
       return(ack);           // Bestätigung
     }

Um die Zeile ack = MDI; geht es mir. Denn dort soll der PC den Wert 
übernehmen, den der Slave auf die Datenleitung geschrieben hat. 
Allerdings bekomme ich immer eine 1, also kein Acknowledge zurück. Mein 
Problem ist, dass ich nicht herausfinde woran das liegen kann.

carola

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer oder was ist hier Master bzw. Slave?

Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der PC ist der Master und der Mikrocontroller der Slave.

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
siehe Datenblatt: The I2C interface is implemented as a full hardware 
slave and software master.

Die Programmierung der Bits aus der Fkt. i2c_write_byte ist nur im 
Master-Betrieb notwendig. Im Slave Mode muss nur das I2CDAT-Register 
beschrieben werden.

siehe auch:
http://www.analog.com/UploadedFiles/Application_No...

Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe. Werde dass dann mal ausprobieren.

Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

also ich habe mich vertan, ich arbeite im Software Master Mode. 
Entschuldigung. Deswegen muss ich in der i2c_write_byte die Bits 
programmieren. Ich verstehe aber nicht, warum ich kein Ack oder kein 
NoAck zurückgeschickt bekomme. Vielleicht könnt ihr mir helfen. Ich 
suche schon seit ein paar Tagen nach dem Fehler und mir fällt auch 
nichts mehr ein wo ich suchen soll.
Danke schonmal im voraus.

Carola

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der ADUC842 der Master ist, welchen Slave-Baustein versuchst du 
dann zu adressieren? Den PC?

Autor: carola (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich versuche den IC AD5933 von der Firma Analog Devices zu adressieren. 
Der IC ist ein Impedance Converter.
Aber gesteuert wird das über den PC. Ich empfange und sende die Daten 
mit Hilfe eines HyperTerminal.

carola

Autor: Marcus Moser (marcus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
was genau machst du mit dem Ad5933? Ich arbeite auch mit dem Ad5933. 
Allerdings arbeite ich mit dem AduC7020 als Master von Analog um den 
Ad5933 anzusteuern. Nun habe ich aber Probleme mit dem Imedanzconverter, 
dass ich ihn richtig konfiguriere. Hast du schon Efolge zu verzeichnen?

MFG Marcus

Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe gerade genau das gleiche Problem mit dem AD5933
ich bekomme einfach kein ACK.

Andere Busteilnehmer funktionieren einwandfrei.

Konntest du das Problem lösen?

Gruß Jörn

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.