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
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
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_Notes/412405076856483265967078526285536153903450693251uC001_-_MicroConverter_I2C_Compatible_Interface.pdf
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
Wenn der ADUC842 der Master ist, welchen Slave-Baustein versuchst du dann zu adressieren? Den PC?
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.