www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F169 - I2C - ACK


Autor: master (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Verständnisproblem. Bei der I2C-Kommunikation wird ein Byte 
ja mit einem ACK nach den 8-Datenbitsbits quittiert.
Jetzt meine Frage:

1.) Wer generiert dieses ACK, ist es die Übertragungslogik im MSP430 
oder muss dies durch meine Software passieren?

2.) Wie kann man softwareseitig das ACK abfragen?

Hier im Forum habe ich schon ein schönes Beispiel für eine 
Software-I2C-Implementierung gefunden. Da ist die sequentielle 
Vorgehensweise gut erkennbar.
Ich möchte aber die für I2C vorgesehenen Pins 3.1/3.3 und die interne 
Logik des MSP430 nutzen.
Danke für eure Hilfe

gruss master

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1.) Wer generiert dieses ACK, ist es die Übertragungslogik im MSP430
> oder muss dies durch meine Software passieren?
Das ACK generiert der Teilnehmer der Daten empfängt. Wenn das der MSP 
ist, muss der das natürlich auch machen.

Für die MSP I2C Rountinen einfach mal einen blick in die Code Beispiele 
von Ti werfen:
http://www-s.ti.com/sc/techzip/slac015.zip

Autor: master (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ,

danke für den Hinweis mit den Quellcodebeispielen von TI.

Ich habe das Beispiel mit den Master/Slave über I2C implementiert.
Dabei ist jetzt folgendes Problem aufgetreten.
Der Master initiiert die I2C-Kommunikation mit dem Slave und schiebt die 
Adresse über den Bus. Das funktioniert sauber(ist am Oszi zu sehen). 
Dann müßte doch eigentlich das ACK vom Slave kommen(generiert durch die 
MSP430-Hardware). Und genau das passiert NICHT. Die Clock-Leitung wird 
dauerhaft auf LOW gezogen. Trenne ich die Datenleitung vom Slave, geht 
die Clockleitung ganz normal wieder auf HIGH. Dies bedeutet aus meiner 
Sicht, dass der Slave die Clockleitung auf LOW zieht.
Wenn ich richtig informiert bin, so will der Slave damit einen Fehler 
mitteilen. Aber ich verstehe nicht warum. Ich habe ja die 
Original-Quellfiles von TI für den Master und den Slave benutzt.

Habt ihr eine Idee????

Danke

gruss master

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Master ist bei dir der MSP? Was für ein Baustein ist dein Slave?

Autor: master (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

Master ist ein MSP430F169. Als Slave habe ich das Olimex-EvaBoard mit 
einem MSP430F1611. Und wie bereits gesagt, die Quellsourcen sind die 
Originalfiles von TI.

gruss master

Autor: Riker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich hatte ein ähnliches Problem. Dies trat aber nur auf wenn man 
CCE2 statt IAR nutzt. Die Quellcodebeispiele sind nur für IAR für den 
F1611 jedenfalls. Man muß da dann das schreiben des Interruptvectors 
anpassen.
Ein low ziehen der SCL-Leitung soll den Master ausbremsen. Sobald der 
Slave die empfangenen Pakete verarbeitet hat sollte SCL eigentlich 
wieder auf high gehen, damit der Slave die nächten Bytes empfangen kann.

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.