Kommunikation zwischen RPI und Microcontroller

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
allrounder93
User
Beiträge: 5
Registriert: Donnerstag 27. August 2015, 14:54

Hey zusammen,

ich möchte zwischen meinem Raspberry PI und meinem Microcontroller Zahlen von 0 bis 7 austauschen. Mein Microcontroller steuert über acht Taster ein Relaismodule mit acht Eingängen. Nun würde gerne folgendes Szenario abbilden:
• Raspberry fragt nach aktiven Pins (get pins)
• Der IC übermittelt alle aktiven Pins an das RPI (1,3,6,7)
• Das RPI sendet Pins die negiert werden sollen (Ein -> Aus bzw. Aus -> Ein)
Kennt jemand ein ähnliches Tutoriell von dem ich dies ableiten kann?
Mein bisheriger Ansatz wäre:
Alle Angaben sind nur sinnbildlich zu verstehen!
• Das RPI schaltet RPI-GPIO10 ein (hat zu folge das der IC solange wartet bis der Pin wieder aus ist. Also keine Taster abfrage für schnellere bearbeitung…)
• Der IC sendet über IC-GPIO11 bit-Impulse an das RPI (001, 011, 110,111) aller Pins die aktiv sind.
• Das RPI ließ über RPI-GPIO11 die bit-Impulse ein.
• Anhand einer Benutzereingabe werden nun alle Veränderungen wieder als Bit-Impulse an den IC gesendet.
• Das RPI sendet nun über RPI-GPIO11 Bit-Impusle zurück
• Das RPI schaltet RPI-GPIO10 aus
Geht dies nicht sinnvoller über einen Bus o.ä.? Wenn ja, wie sieht dazu der Code beispielweise aus

Gruß Chris
BlackJack

@allrounder93: Das was Du da beschreibst ist ein Bus, allerdings ein selbst programmierter. Wenn man etwas wie I²C/SMBus oder SPI nehmen möchte dann kommt es darauf an was der Mikrocontroller kann, oder für welche Protokolle es dafür bereits Code gibt, beziehungsweise welche Du bereit wärst selber zu implementieren, notfalls auch etwas eigenes. Kann der vielleicht sogar RS-232?
allrounder93
User
Beiträge: 5
Registriert: Donnerstag 27. August 2015, 14:54

Genau das war gemeint :lol:
Mein verbauter Microcontroller (ATMEGA 8-16 DIP) hat leider nur eine SPI-Schnittstelle und wie kann ich dies programmieren? Gibt es dazu vielleicht ein tutoriell?

Gruß Chris
BlackJack

@allrounder93: Von Python aus kann man dafür das `spidev`-Modul verwenden. Wie man das auf AVR-Seite macht ist keine wirkliche Python-Frage.
Antworten