Forum: Compiler & IDEs I2C- MSP430F169 Multimaster

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.
Autor: Nicola (Gast)

0 lesenswert
nicht lesenswert
We try the example code of Texas (slaa208) : The program supports the
communication between a MSP430F169 and an EEPROM 24AA65.
And it works fine.
But now we try the same example in two MSP430F169 and one EEPROM
And we have bigs problems...!!!!!???? When a collision occurs, the SDA
line remains blocked forever "low" !!!
Which kind of software adaptation must we make to solve this problem ?
Because Texas don't give any example with a similar configuration (2
masters this one or more shared slaves) !

Thanks for your help :)

Autor: KoF (Gast)

0 lesenswert
nicht lesenswert
do you mean, that you have 2 masters (the msp430f169) ?

i2c allows just one master at the bus!
if you would use 2 masters, you should use an extra portpin between the
msp`s, so you can put it maybe high if one is operating on the bus. if
the other msp would operate on the bus, he should look at the pin. if
it is high, he would not be allowed to write to se bus. if it is low,
he should set it high, so that the other msp would not be allowed to

Autor: Susanne (Gast)

0 lesenswert
nicht lesenswert
The Specification of the I2C bus allows multible masters and a device
compliant to the Philips I2C Spec must have a mult-imaster
functionality. Accordant to the device's datasheet it's able to hadle
it. But it seems it is not implemented in the software.

First it is necessary to understand the multi-master function (esp.
arbitration)as defined by Pilips
therefore see I2C Spec

A detailed description of I2C functionality of the device can be found

and these are bits that have to be set/checked to detect a loss of
arbitration. (just as a starting point, I did not check the whole

I2CIE, I2C Interrupt Enable Register

I2CIFG, I2C Interrupt Flag Register

U0CTL, USART0 Control Register-I2C Mode
LISTEN (might be necessary to be able to listen to the SDA line)

If a loss of arbitration is detected, the device must release the bus
and be set into slave mode until the bus is free again.

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.