Raspberry Pi übern i2c Bus mit µC verbinden

  • Hey,


    ich wollte mal fragen, kann mir jemand ggf. ein Art "Minimalebasis" an Script evtl. Posten, wie ich über den i2c Bus den Raspberry Pi mit einem oder mehren µC verbinden kann? Also wie das in der Minimallösung aussehen würde? Der Raspberry soll bei diesem Senario den Master geben und nehmen wir für ein einfaches Beispiel 1 µC von Atmel der mit Bascom Programmiert werden würde, wäre der Slave.


    Und um kein Riesen großes hin und her zu haben, soll der Raspi lediglich den Slave ansprechen und im Takt den Befehl übermitteln "LED 1" / "LED 0". Ich weiß, dass kann der µC bzw. der Raspi auch alleine, aber nur um ein einfaches Senario zu haben. Der µC soll dem Raspi über den Bus eine "Bestätigung" übermitteln, welche dafür sorgt, dass beim Raspi eine LED für 2 Sekunden angeht.


    Also an so ein Senario dachte ich um nicht eine zu gewaltige Aufgabe zu haben.


    Ich habe zwar schon bischen mit dem i2c Bus rum gespielt, nennen wir es einfach mal so. Aber da war es Primär ein Uhrenchip, welchen ich abgefragt habe.


    Danke schon mal vorab für eure Hilfe.



    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.


    :angel: :wallbash:

  • und warum nicht über die Serielle ?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ja oder man nimmt anstelle eines Pegelwandlers einfach µCs die auch mit weniger als 5 V laufen und versorgt die ebenfalls mit 3,3V. Ich denke, dass wäre die einfachere und sichere Lösung wäre.


    Und an sich benötigt Bascom, wenn man das auf den µCs nutzen möchte keine Lib für i2c. Also zumindest für die sonstige Kommunikation mit RTC oder so.




    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.


    :angel: :wallbash:

  • Für Bascom brauchst Du die I2C-Slave Library für nur 14,95€. Zumindest war das so als ich mir Bascom angesehen hab und das die immernoch verkauft wird, wird sich das nicht geändert haben. Nachdem ich die Preisliste gesehen hatte bin ich bei C geblieben.


    Auf dem Pi kannst Du die I2C-Schnittstellen ganz normal wie eine Datei öffnen, lesen und reinschreiben. Den Rest macht der Treiber.

  • Na das wäre schon doof, wenn man für sämtliche Erweiterungen Geld zahlen muss. Da hab ich dann 2 Möglichkeiten. Entweder ich packe auf jeden Busteilnehmer ein Arduino Bootloader drauf und Programmiere dass alles dann über Arduino. Oder ich muss mir überlegen die Sprache zu wechseln. Wie kompliziert wäre den z.B. der Umstieg auf C? Also wenn man lediglich ein paar Aufgaben mit machen will, wie Sensoren (1-Wire, Taster, Fotowiderstand, und ähnliche) ab zu rufen bzw. einfache Gleichstrommotor / Serveromotor an zu steuern und auf eine Anfrage per i2c zu reagieren.


    Also empfangene Daten des i2c Bus einlesen, vergleichen und drauf reagieren.


    Den dann könnte ich mir auch ggf. vorstellen die Slaves in C zu machen und Master in Bascom bleiben oder sonst wie gucken. Weil eigentlich wollte ich nun nich noch in eine weiteren Sprache in alle möglichen Ecken gucken und so. Ich hoffe man versteht was ich meine.




    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.


    :angel: :wallbash:

  • Wenn Du schon über die Arduino-IDE programmiert hast, bleib doch dabei, das ist C. Arduino bietet nur zusätzlich viele Libraries die sich schon miteinander vertragen und die bequeme Programmiermöglichkeit über den Bootloader.
    Ansonsten kannst Du Dir mal das AVR-Studio ansehen, das gibt es bei Atmel umsonst und Du hast eine schöne Entwicklungsumgebung für C und ASM für die Atmelprozessoren.

  • Müsste nur im Falle der Arduino Lösung gucken, welcher µC unterstützt wird. Den zum Beispiel der ATtiny 2313 wird meines Wissens nicht unterstützt. Also könnte ich dann ggf. erst mit Atmega8 arbeiten. Ich glaub der wird unterstützt. Müsste nur gucken wie ich den passenden Bootloader bekomme und anschließend dadrauf.


    Und eigentlich habe ich bislang primär nämlich mit Bascom gearbeitet und dachte, ich könne dann dabei bleiben. Und soweit ich weiß, muss ich aber dann nicht für jeden µC ein Arduinoboard kaufen, den ein paar Controller habe ich noch hier rum fliegen.


    Falls aber jemand noch eine Bascom Idee einfällt hör ich gerne. Alternativ vll kombinier ich beides oder ist das eine schlechte Idee? Also das ich die Slaves in Arduino bearbeite und den Master in Bascom lasse. Also der Master soll ja lediglich die Slaves abfragen und Befehe entsprechend austeilen.




    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.


    :angel: :wallbash:

  • So ich hab mich auch mal drangemacht einen ATMega32 als I2C Slave am Pi zu betreiben, da der Mega32 alles bietet was man braucht.


    400x282 400x285


    Ich habe die TWI Slave C Library von jtronics genutzt.


    jtronics c library


    200x155


    Hier der Quellcode den ich für den Mega32 genommen hab, komplett mit Makefile und vorkompilierter Hexfile


    i2c-slave