Forum: Mikrocontroller und Digitale Elektronik MSP430F2013 - I2C als Slave?


von Nobbie (Gast)


Lesenswert?

Hallo,

ich möchte mit dem 2013 eine I2C Kommunikation aufbauen. Der 2013 soll 
hierbei als Slave agieren. Jetzt hat mit aber ein Kollege gesagt, dass 
der 2013 nur als Master arbeiten kann. Grund hierfür soll ein Fehler im 
2013 sein. Hat jemand von euch diesbezüglich schon Erfahrungen???
Danke

Gruss Nobbie

von Tilo S. (thesurfer)


Lesenswert?

Moin,

also da hat dein Kollege nicht ganz unrecht.

http://focus.ti.com/lit/er/slaz026h/slaz026h.pdf , da waere der USI4 und 
USI2 Bug von interesse.

Jedoch habe ich es schon geschafft einen F169 und F2013 über I2C 
kommunizieren zu lassen. Ich hab aber ne ganze Weile an der Clock 
geschraubt und auf nen Oszi gestarrt, bis es dann endlich geklappt hat. 
Die Daten welche ich gesehen haben waren immer Korrekt, aber eine 
Garantie wuerde ich dafuer nicht geben.

In dem Projekt hab ich den F169 als Master zum senden und Empfangen und 
den F2013 als Slave.

Solltest du nicht weiterkommen, kann ich montag ja mal das Projekt 
raussuchen.
Ist aber kein schoener c-Stil, ich wollte es einfach mal testen.

MfG
Tilo

von Nobbie (Gast)


Lesenswert?

Hallo Tilo,

danke für deine Antwort.
Für das Projekt ist die Zuverlässigkeit der Datenübertragung sehr 
wichtig.

Von der Hardwarekonstallation benutze ich die selbe Hardware wie du, 
also F169 und F2013. Der F169 soll als Masterplatine agieren und der 
F2013 für sekundäre Mess- und Speicheraufgaben(Hardwareinfo, 
Temperaturmessung) "missbraucht" werden.
Der Datenaustausch zwischen F169 und F2013 soll, wie bereits angedeutet, 
über I²C erfolgen. Da die Daten vom F169 sporadisch abgerufen werden 
müssen, ist dieser vom Design eindeutig als Master auszulegen.
Nun bin ich ein wenig in der Zwickmühle. Wenn ich nun der 2013 als 
Master konfiguriere, müßte dieser in gewissen Zeitabständen die Daten 
zum F169 übertragen.

Mein Gedanke ist jetzt, es wie folgt zu lösen:
- der SDA-Pin am 2013 wird als Eingang mit Interrupt konfiguriert
- benötigt der F169 Daten vom F2013 signalisiert er dies mit einem
  High auf dem SDA-Pin des F2013
- dieser löst den Interrupt aus und konfiguriert intern die I²C-Komm.
- nach der Initialisierung beginnt der F2013 als Master zu senden
- sind alle Daten übertragen, wird beim F2013 der SDA-Pin wieder als
  Eingang mit Interrupt konfiguriert

Vorteil dieses Gedanken wäre, dass die Daten nur Übertragen werden, wenn 
diese wirklich benötigt werden.

Was hälst du davon???

Gruss Nobbie

von Tilo S. (thesurfer)


Lesenswert?

Die Idee ist nicht verkehrt, wird zwar ein wenig Zeitverzoegerung geben, 
aber das ist ja immer noch besser als Daten zu verlieren. Laesst du dann 
die I2C beim F169 auch immer initialisiert, stellt sich ja denn die 
Frage wie er darauf reagiert wenn auf einmal HIGH anliegt. Oder willst 
du auch den Highpegel vom SDA des F169 losjagen und dann diesen auch 
immer wieder neu initialisieren.

von Nobbie (Gast)


Lesenswert?

Hallo Tilo,

geplant ist, dass auch die I²C Kommunikation des F169 nach Bedarf 
initialisiert wird. Das heißt im normalen Mode ist auch der SDA Port des 
F169 als IO Port konfiguriert. Will dieser über I²C Daten austauschen, 
zieht er den Port auf High. Danach werde ich ein Delay einbauen. Im Kopf 
funktioniert es jedenfalls. Mal schauen was die Praxis sagt.

Gruss Nobbie

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
Noch kein Account? Hier anmelden.