mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Suche Software I2C Slave


Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

gibt es vielleicht fertige Libraries für Software I2C Slaves? Am besten
sogar für den MSP430?? Bislang habe ich immer nur Routinen für die
Masterfunktionalität gefunden.

Gruß
Norbert

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dankeschön...aber ähm , das ist aber ein SPI Interface, oder hab ich da
was übersehen???

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem.

Ich befürchte aber, ich habe mich missverständlich ausgedrcükt, tut mir
Leid. Was ich suche, ist ein "Software-I2C Slave" oder wie nennt man,
damit das deutlicher wird. Also ein I2C Slave, der nur normale Portpins
benutzt und nicht auf ein Hardwareinterface zurückgreift.

Sorry...vielleicht kann mir aber ja trotzdem jemand helfen.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen universellen I2C Slave zu programmieren, der die Specs einhält,
ist praktisch unmöglich zu realisieren auf einem MSP430 (zu langsam).

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte das mal durchgerechnet und da passte das eigentlich ganz gut.
Der MSP430 wird mit 8MHz getaktet und immerhin hat man dann (bei 100kHz
 I2C) zwischen den einzelnen Takten an SCL 80 Taktzyklen Zeit.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, das größte Problem wird sein, eine Start -Sequenz zu
ermitteln.

Hierzu könnte man einen externen Interrupt nutzen, somit ist man leider
wieder an spezielle PINs gebunden.

Oder man fragt in sehr kurzen Abständen die SDA-Leitung ab?

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also externe Interrupts muss man glaub ich auf jeden Fall benutzen.
Angenommen so eine Kommunikation wird mal zwischendurch abgewürgt,
würde der Controller ja sonst auch die ganze Zeit hängen bleiben.

Ich weiß nicht, wie das bei den ATMEGA Controllern ist, aber bei die
MSP430 können auf jeden Portpin einen Interrupt erzeugen.

Mein Problem ist halt zur Zeit nur, dass der Controller, den ich
verwende, kein Hardware I2C hat.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also externe Interrupts muss man glaub ich auf jeden Fall benutzen.
>Angenommen so eine Kommunikation wird mal zwischendurch abgewürgt,
>würde der Controller ja sonst auch die ganze Zeit hängen bleiben.

Den ext Interrupt benötigt man eigentlich nur, um die ganze Prozedur zu
starten.

Und anschließend könnte man durch einen Timer o.ä. die einzelnen
I2C-Bits abfragen und ggf auch BITS an den Master senden.

Ein Fehler in der Kommunikation könnte somit korrigiert werden.

>Ich weiß nicht, wie das bei den ATMEGA Controllern ist, aber bei die
>MSP430 können auf jeden Portpin einen Interrupt erzeugen.

Bei den Atmegas sind nur wenige Pins in der Lage einen ext Interrupt
auszulösen.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, du würdtest das mit einem Timer machen. Ich hätte jetzt (auch mit
einem Interrupt) das SCL Signal ausgewertet. Beim Lesen mit der
steigenden Taktflanke das Signal einlesen und beim Schreiben mit der
fallenden Taktflanke das nächste Bit rausschieben.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Achso, du würdtest das mit einem Timer machen. Ich hätte jetzt (auch
>mit einem Interrupt) das SCL Signal ausgewertet.

Vielleicht sollte man auch beides miteinander kombinieren?


> Beim Lesen mit der steigenden Taktflanke das Signal einlesen und
>beim Schreiben mit der fallenden Taktflanke das nächste Bit
>rausschieben.

Es kann sein, dass der Slave im Schreibmodus, das Bit vor dem SCL schon
gesetzt haben muss?
Bin ich mir aber auch nicht ganz sicher.

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.