Forum: Mikrocontroller und Digitale Elektronik MSP430: I2C ohne Interupt Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von MSP430R (Gast)


Lesenswert?

Hallo,

ich versuche beim MSP430F2274 die I2C Controller (Master) ohne 
Interrupts
zu benutzen, habe aber ein Problem damit.

Im Moment habe ich noch keine I2C Device angeschlossen , aber ich kann
SCL und SDA mit einem Timinganalyzer ansehen.

Ich sehe, dass Daten gesendet werden und dass natürlich KEIN ACK kommt.
Mein Problem ist jetzt zu erkennen, dass eben kein ACK kommt. Im Daten-
blatt des MSP430F2274 steht, dass sobald der Slave das ACK gesendet hat,
das Flag UCTXSST rückgesetzt wird. Daher gehe ich davon aus, dass es
nicht rückgesetzt wird wenn kein ACK kommt. Das ist aber nicht der Fall.
Das besagte Flag wird immer zurückgesetzt.

Meine Frage ist, ist das so richtig? Mache ich was falsch oder wie kann
ich schnell anders erkennen, dass kein ACK gekommen ist. Das NACK Flag
hilft mir da nichts, ich will ja weiter Daten senden wenn das ACK kommt.

Habe ich einen Gedankenfehler ?

Danke für sachdienliche Hinweise.

von Clemens L. (c_l)


Lesenswert?

Das User's Guide sage in Abschnitt 17.3.4.2.1:
> As soon as the slave acknowledges the address the UCTXSTT bit is cleared.

Dasselbe steht in Abbildung 17-2.

Abschnitt 17.4.2 sagt aber:
> UCTXSTT is automatically cleared after START condition and address
> information is transmitted.

MSP430R schrieb:
> wie kann ich schnell anders erkennen, dass kein ACK gekommen ist

Siehe 17.3.4.2.1:
> The data written into UCBxTXBUF is transmitted if arbitration is not
> lost during transmission of the slave address. UCBxTXIFG is set again
> as soon as the data is transferred from the buffer into the shift
> register.

Solange noch kein ACK gekommen ist, hängt dein erstes Datenbyte noch im 
TXBUF fest. Du musst also auf TXIFG (oder NACKIFG) warten.

Wenn man denn dem User's Guide vertrauen darf. Der Beispielcode in 
SLAC123 benutzt auf jeden Fall Interrupts, also sollten die wohl 
funktionieren.

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]
  • [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.