www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C: abichtlich Stop-Bit gleich nach Start-Bit senden. Schlimm?


Autor: Hans Wurst (hans_wurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

laut Spezifikation ist das Senden eines Stop-Bits gleich nach dem 
Start-Bit nicht erlaubt. In meiner Anwendung würde ich aber am gleichen 
Bus auch ein Bauteil ansprechen, das genau diese Abfolge benötigt (In 
dem Fall würde ich dann immer zwischen I2C <-> GPIO hin und her 
switchen)

Natürlich würde das dann jeder im Bus mitbekommen und wäre vielleicht 
"verwirrt", aber glaubt ihr dass das vielleicht Probleme bereiten 
könnte?

Danke für eure Tipps....

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für ein Bastelprojekt kann man es testen und wenn es geht, dann ist es 
ok. Aber für ein kommerzielles Produkt würde ich das nicht tun. Schnell 
mal muss man auf eine Second Source eines Bauteils oder sonst einen 
Ersatztyp ausweichen und plötzlich funktioniert gar nix mehr. Dann ist 
viel, viel unnötige Arbeit angesagt.

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du nicht versuchen das andere Bauteil so anzuschließen, dass Du 
eben keine Start/Stop Sequenz erzeugst? Da Du die Bauteile nicht näher 
spezifizierst, ist es schwer, Dir zu etwas zu raten. Aber kannst Du 
jenes Bauteil nicht einfach anders herum anschließen, also SCL und SDA 
tauschen? Dann würdest vielleicht keine gültige Start-Sequenz erzeugen 
und damit würde die Stop-Sequenz ignoriert.

Aber ich würde wirklich versuchen, wenn überhaupt nur eine I2C Leitung 
für was anderes zu verwenden und nicht beide.

Gruß, Ulrich

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Wurst wrote:
> laut Spezifikation ist das Senden eines Stop-Bits gleich nach dem
> Start-Bit nicht erlaubt.

Warum soll das nicht erlaubt sein?

Start und Stop darf alle n*9 Takte (8Bits+ACK) gesendet werden, also 
auch nach 0*9 Takten.


Peter

Autor: Hans Wurst (hans_wurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Signal für Start+anschließendem StopBit benötige ich für den 
Temperatursensor SHT11 von Sensirion. Die verwenden einen (I2C 
ähnlichen) eigenen Bus.

Zusätzlich habe ich am gleichen Bus die Ultraschallsensoren SRF08.

Weitere Leitungen für eine extra Bus-Leitung kann ich leider nicht 
nutzen, da ich keine freien Pins mehr habe.

Allerdings Ulrich's Idee die Leitungen SDA und SCL zu vertauschen finde 
ich sehr gut.
Danke euch für die Hinweise.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch mal die SHT11 Sensoren in einem Projekt verwendet. 
Allerdings wegen der Inkompatibilität zu I²C über 2 eigene Leitungen für 
den Sensor. Wenn du das schaffst, die Dinger tatsächlich in den I²C-Buss 
zu integrieren, wäre ich sehr daran interessiert, wenn du uns hier auf 
dem laufenden hältst.

Autor: Hans Wurst (hans_wurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Klaus:

Ich würde in dem Fall einfach nur zwischen I2C und GPIO hin und her 
schalten, das jeweilige Bauteil somit ansprechen und eventuell eine Art 
I2C_is_busy_flag verwenden.

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.