Forum: Mikrocontroller und Digitale Elektronik Raspberry als Slave (I²C)


von Rhaudi X. (rhaudi)


Lesenswert?

Hallöchen,

Problem: I²C Bus System besitzt 2 Master.
Es kann nur der Raspberry als als Lösung betrachtet werden.

Mein Bus System besteht aus 2 Master, das System an sich wird sie nicht 
ändern. Dabei handelt es sich um Microcontroller - ein spezieller und 
ein Raspberry PI.

Als Kommunikationsschnitstelle wird nur I2C unterstützt. Nun bin ich am 
überlegen wie der PI als Slave im Bus-System implementiert werden kann.
Nach stunden Recherche bin ich auf diesen Link gestoßen 
"https://raspberrypi.stackexchange.com/questions/76109/raspberry-as-an-i2c-slave";, 
dort wird beschreiben wie mit der Bib "pigpio" ein Slave "emuliert" 
wird. Nur leider bekomme ich es nicht kompiliert =(.

Vielleicht kennt ja noch irgendjemand eine alternative Lösung.

Viele Grüße,
Rhaudi

von Timmo H. (masterfx)


Lesenswert?

Rhaudi X. schrieb:
> Nur leider bekomme ich es nicht kompiliert =(.
Meine Glaskugel sagt, dass du vergessen hast die -pigpio lib zu linken

von Mikro 7. (mikro77)


Lesenswert?

Joan (pippio Creator) ist sehr aktiv im RPi Forum. Einfach dort fragen. 
-- Würde mich aber schon sehr überraschen wenn sich die Lib nicht 
kompilieren läßt.

Anm:

1: Der "BSC Slave" des RPi ist sehr schlecht dokumentiert. Den SPI Slave 
bekommt man gar nicht zum Laufen. Mit dem I2C Slave scheint Joan aber 
Erfolg gehabt zu haben.

2: Pigpio läuft im Linux Userland. Da der "BSC Slave" kein DMA 
unterstützt ist daher mit Linux/Userland-typischen Aussetzern zu 
rechnen.

von Dirk B. (Gast)


Lesenswert?

Rhaudi X. schrieb:
> Als Kommunikationsschnitstelle wird nur I2C unterstützt.
> [..] Vielleicht kennt ja noch irgendjemand eine alternative Lösung.
u.U. Unterstützung  mit einem µC als I2C <-> Rs232 Wandler anschaffen.

Vom Prinzip eignet sich I2C (Langform: "IC 2 IC") nicht sonderlich für 
I2P, da es zwar sehr einfach ist aber praktisch sofort reagiert werden 
muss was für PC (auch einfache wie der RP) sehr schwierig ist.

Ein µC der praktisch ein IC für I2C UND ein IC für Rs232 eingebaut hat 
(der PPi hat praktisch auch ein Rs232-IC) eignet sich damit sehr gut um 
beim RPi I2C nachzurüsten.

Die "Linux/Userland-typischen Aussetzer" die von typischen Anwendern 
berichtet werden die gewohnheitsmäßig Hardware im Userland installieren, 
sind eher die Folge der User/Os Kombination.
Bit-Banging im Userland kann etwas funktionieren, aber wenn das 
betroffene Userland ansonsten ähnliche Aussetzer hat, dann hat der 
Landverwalter davon schon vorher ähnliches auf dem Land laufen.

von Mikro 7. (mikro77)


Lesenswert?

Dirk B. schrieb:
> I2C (Langform: "IC 2 IC")

Gibt es dafür eine Quelle? Das kannte ich noch nicht.

Dirk B. schrieb:
> Die "Linux/Userland-typischen Aussetzer" die von typischen Anwendern
> berichtet werden die gewohnheitsmäßig Hardware im Userland installieren,
> sind eher die Folge der User/Os Kombination.

Direktzugriff auf Peripherie aus dem Userland ist nicht "echtzeitfähig".

Dazu kommt, dass der Zugriff auf die Interrupts fehlen.

Was man allerdings hin bekommen kann, ist Daten über DMA zu streamen. 
Streams können so in Echtzeit aus dem Userland gesendet und empfangen 
werden. Dialoge bekommt so aber nicht zuverlässig hin (oder nur sehr 
trickreich über CB chains).

Für den BSC Slave sind die DREQ signals 8 und 9 vorgesehen. Dann sagt 
aber §11.2: "BSC and SPI controllers do not have DMA connected, hence 
DMA is not supported."

Die Alternative wäre es Joans Lib als Vorlage zu nehmen und selbst einen 
Kernel Treiber zu schreiben. Wer es sich denn zutraut.

von Dirk B. (Gast)


Lesenswert?

Mikro 7. schrieb:
> Dirk B. schrieb:
>> I2C (Langform: "IC 2 IC")
>
> Gibt es dafür eine Quelle? Das kannte ich noch nicht.
https://de.wikipedia.org/wiki/I%C2%B2C
("I²C, für englisch Inter -(I)ntegrated (C)ircuit)
praktisch ist I die Abkürzung für IC und C die Abkürzung für IC wenn I 
schon für eine andere Abkürzung benutzt wird.

Mikro 7. schrieb:
> Dirk B. schrieb:
>> [Vom Prinzip eignet sich I2C ..nicht sonderlich für
>> I2P, da es .. für PC (auch einfache wie der RP) sehr schwierig ist].
>> Die "Linux/Userland- typischen Aussetzer" die von typischen Anwendern
>> berichtet werden die gewohnheitsmäßig Hardware im Userland installieren,
>> sind eher die Folge der User/Os Kombination.
>
> Direktzugriff auf Peripherie aus dem Userland ist nicht "echtzeitfähig".
u.a. deswegen ist eine halbwegs lauffähige Softwarevariante *sehr 
schwierig*. Wenn User von typischen Aussetzern berichten, dann ist das 
eher die Kombination.

> Was man allerdings hin bekommen kann, ist Daten über DMA zu streamen.
Wenn man DMA (Langform: Direct memory access) dann noch mit einem IC 
unterstützt das einerseits das einerseits 2IC und andererseits 2memory 
bereitstellt, dann könnten Daten sogar aus einem IC2IC stammen, bei dem 
auf einzelne Bits/Flanken regiert werden muss.
DRM (Langform: Direct reaction access) mit einer 20er Packung 
Flipflops wäre da deutlich zielführender.

> Die Alternative wäre es Joans Lib als Vorlage zu nehmen und selbst einen
> Kernel Treiber zu schreiben. Wer es sich denn zutraut.
Die Alternative mit einem mehrbitigem OS auf einzelne bits zu reagieren 
dürfte wohl von Frau Merkel stammen (historisch: "alternativlos") Selbst 
8-bittige µC lassen sich deutlich sicherer mit einem Co-Schieberegister 
aus  ca. 10 FlipFlops programmieren um nicht jedes 1-Bit von Hand bzw. 
von 8++-bit CPU verarbeiten zu müssen.
Die Alternative für grob 50cent einen µC zu organisieren und mit einem 
20-Zeiler den µC zum Transceiver zu konfigurieren, dürfte bei denjenigen 
die sich so ein Spiel zutrauen ein zufälliges spielen unwahrscheinlich 
machen.

von Mikro 7. (mikro77)


Lesenswert?

Dirk B. schrieb:
>>> I2C (Langform: "IC 2 IC")

Ok, es handelt sich also um deine Interpretation der Schreibweise von 
I2C (Inter Process Communication würdest du dann als Process To Process 
Communication schreiben.)

Dirk B. schrieb:
> Wenn User von typischen Aussetzern berichten, dann ist das
> eher die Kombination.

Ich habe ehrlich gesagt nicht verstanden was du sagen willst, daher auch 
mein Folgeposting; und es ist mir nach deiner Antwort immer noch nicht 
klar.

Ist aber nicht wichtig. Wenn der TS Fragen hat, wird er sich schon 
melden.

: Bearbeitet durch User
von Dirk B. (Gast)


Lesenswert?

Mikro 7. schrieb:
> Dirk B. schrieb:
>> I2C (Langform: "IC 2 IC")
>
> Gibt es dafür eine Quelle? Das kannte ich noch nicht.
https://de.wikipedia.org/wiki/I%C2%B2C
("I²C, für englisch Inter -(I)ntegrated (C)ircuit)
praktisch ist I die Abkürzung für IC und C die Abkürzung für IC wenn I
schon für eine andere Abkürzung benutzt wird.

Mikro 7. schrieb:
> Dirk B. schrieb:
>>>> I2C (Langform: "IC 2 IC")
> Ok, es handelt sich also um deine Interpretation der Schreibweise von I2C
Falls du einen barrierefreien Zugang zu Wikipedia und dem Text auf den 
du reagiert hast gehabt hättest, dann hättest du nicht nur auf dein 
"Ok" antworten müssen, sondern könntest dein Problem eine 
ausgeschriebene Abkürzung als längere Form zu verstehen und deine 
Unkenntnis, dass I2C nicht als "IC to Computer" geplant war, 
eigenständig schreiben.

> Dirk B. schrieb:
> [Direktzugriff auf Peripherie aus dem Userland ist nicht "echtzeitfähig".
u.a. deswegen ist eine halbwegs lauffähige Softwarevariante *sehr
schwierig*. ]
>> Wenn User von typischen Aussetzern berichten, dann ist das
>> eher die Kombination.
>
> Ich habe ehrlich gesagt nicht verstanden was du sagen willst, daher auch
> mein Folgeposting;
Falls du ehrlich schreiben könntest welchen Text du nicht verstehen 
kannst, dann könntest du die Aussetzer beim kopieren bemerken.
Du bist wohl eher der ehrliche Sprecher der bei der Anforderung ein Wort 
ehrlich zu schreiben etwas überfordert ist. Wenn du auf gesprochene 
Sprache angewiesen bist, dann sind "daher" Folgeposting bei 
textbasierten Foren eine klassische Suchform.

> Ist aber nicht wichtig. Wenn der TS Fragen hat, wird er sich schon
> melden.
wenn du so unwichtig schreiben musst, dass du nicht mehr weißt warum du 
nach der Quelle gefragt hast und was diese belegen soll, dann kannst 
du dich wohl nicht mehr an das Ursprungsposting erinnern.

Wenn du dich ehrlich auf eine schriftliche Frage konzentrieren 
könntest, dann müsste es nicht bei deinem "Ok" bleiben.

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.