Hey,
das musst du in zwei Schritten machen. Als erstes musst du den aktuellen Zustand der IOs auslesen und dann in dieses Bitmuster den neuen Zustand des IOs, den du schalten willst, einbauen. Dann musst du das Muster wieder übertragen.
Hallo lieber Forenmitglieder und Raspberry Pi Freunde,
ich möchte meinen Raspberry Pi mit dem MCP23017 Chip um ein paar I/O´s erweitern und bekomme keine vernünftige Interruptabfrage hin. Hat sich zufällig schonmal jemand mit der Portabfrage beim MCP beschäftigt mit Python?
Wie kann ich eigentlich nur EINEN definierten Ausgang schalten ohne die anderen zu beeinflussen durch das setzen der Bits?
Vlt. könnte mir das jemand erklären
Grüße
opc
Geändert von opc (29.12.2014 um 23:56 Uhr)
Hey,
das musst du in zwei Schritten machen. Als erstes musst du den aktuellen Zustand der IOs auslesen und dann in dieses Bitmuster den neuen Zustand des IOs, den du schalten willst, einbauen. Dann musst du das Muster wieder übertragen.
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo Kampi,
genau das ist mein Vorhaben, mir fehlt es nur leider an der Umsetzung in den Python-Code. Programmierungen mit Python von den internen GPIO´s des Pi war bislang weniger das Problem aber mit dem MCP bekomm ich das einfach nicht hin.
Bis zum Auslesen der IO´s lief es bisjetzt immer... es scheiterte immer an dem Verarbeiten und zurückschreiben des Bitmusters
Hier mein Code bis zum Auslesen, den Rest hab ich gelöscht, da keine Funktion.
Code:import smbus import time bus = smbus.SMBus(1) mcp = 0x20 #MCP23017 iodira = 0x00 #Input/Output Bank A festlegen olata = 0x14 #Werte IO/A schreiben gpioa = 0x12 #Wert Bank A lesen bus.write_byte_data(mcp,iodira,0x01) #GPA0 = Eingang, alle anderen Ausgang bus.write_byte_data(mcp,olata,0x00) #alle Ausgänge auf 0 schalten read = bus.read_byte_data(mcp,gpioa) #liest die Bits der Bank A
Sorry nicht mitbekommen das es hier bereits eine Antwort von dir gab...
Also falls du das Problem noch nicht gelöst hast...
Hast du dir mal den Status der IOs ausgeben lassen und geprüft ob das stimmt? Und lassen sich die IOs dem Bitmuster entsprechend schalten?
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo!
Möglicherweise lassen sich gewünschte Bits per Verknöpfung mit OR setzen and AND löschen, aber ich über Python k.A. habe.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Lesezeichen