- LiFePO4 Speicher Test         
Ergebnis 1 bis 2 von 2

Thema: RPi3 und RP6 SMBus Schwierigkeiten

  1. #1

    RPi3 und RP6 SMBus Schwierigkeiten

    Anzeige

    Powerstation Test
    Hallo zusammen,

    zu mir:
    ich bin neu hier und das ist mein erster Post.
    Daher eine ganz kurze Vorstellung:
    Mein Name ist Jo(hannes), bin nicht mehr ganz taufrisch und dieses Jahr auf den Roboter gekommen.
    Ursprünglich wollte ich direkt mit einem Humanoiden anfangen, habe mich aber dank dieser Plattform anders entschieden.
    Nun steht ein RP6 V2 und RPi V3 vor mir und ich versuche diese zu verheiraten. Auf dieser Basis sollen dann weitere Projekte starten. Die Beiträge hier im Forum zum Thema sollte ich gelesen haben. Ob ich sie alle (richtig) verstanden habe ist ein anders Thema .

    Problem:
    ganz kurz - I/O-Fehler zwischen RP6 und RPi. Diese münden oft darin, das der SMBus keine Daten mehr liefert bis der RP6 resetet wurde.

    Hintergrund:
    RP6 Base V3 (Slave-Programm aus den Beispielen unverändert ("RP6Base_I2CSlave"))
    RPi V3 (neuestes Jessie, neueste SMBus Libs für Python 2+3)
    Verkabelung über I2C (SCL, SDA sind nicht vertauscht, + und GND). Verwendung eines Pegelwandlers.
    Code auf dem RPi:
    Code:
    #!/usr/bin/python
    
    import smbus
    import time
    import sys
    import subprocess
    
    TimeStart = 0
    TimeEnd = 0
    TimeDt = 0
    Count = 0
    
    bus = smbus.SMBus(1) 						# Or bus = smbus.SMBus(0) for Revision 1 boards
    address = 0x05      						# This is the address value read via the i2cdetect command RP6
    
    print "Start"
    time.sleep(2.0)
    subprocess.call(['i2cdetect', '-y', '1'])
    time.sleep(0.1)
    bus.write_i2c_block_data(address, 0,[3, 0]) #LEDs off
    time.sleep(2.0)
    bus.write_i2c_block_data(address, 0,[3, 1]) #LED1 on
    time.sleep(0.1)
    
    #Messschleife
    while (True):
    	try:
    		print "Loop"
    		data = ""
    		TimeStart = time.time()
    		data = bus.read_byte_data(address, 0x1D)	#LED read
    		time.sleep(0.1)
    		print "Data1 LED:", data
    		data = ""
    		data = bus.read_word_data(address, 0x00) 	#Bumper read
    		time.sleep(0.1)
    		if (data == 2):
    			print "Bumper left"
    			time.sleep(1.0)	
    		if (data == 4):
    			print "Bumper right"
    			time.sleep(1.0)		
    		if (data == 6):
    			print "Bumper both"
    			time.sleep(1.0)						
    		print "Data2 Bumper:", data
    		TimeEnd = time.time()
    		TimeDt = TimeEnd - TimeStart
    		print TimeDt;
    	except IOError as e:
    		print "I/O error({0}): {1}".format(e.errno, e.strerror)
    		#subprocess.call(['i2cdetect', '-y', '1'])
    	Count += 1
    	if (Count % 100 == 0):
    		print 'Loop: ',Count
    		time.sleep(2.0)								#Pause every 100 times
    Grundsätzlich funktioniert die Kommunikation zwischen den Beiden. Mit den I/O-Fehlern könnte ich ja noch leben. Aber wenn irgendwann nicht mehr vom Bus gelesen werden kann, ist das sehr blöd.
    Kennt jemand eine Lösung oder einen funktionierenden Workarround? Oder die Möglichkeit den SMBus zu resetten, sodass ich wieder vom RP6 lesen/schreiben kann?

    Sollten relevante Informationen fehlen, bitte ich das zu entschuldigen. Gerne reiche ich diese nach. Auch warum ich mich für diese Varianten entschieden habe.

    Beste Grüße und vorab ein Dankeschön

    Jo

  2. #2
    Hallo,

    kurzes Update, da die Resonanz hier eher mägerlich ist:

    ich habe die IC2-Busgeschwindigkeit des Masters jetzt auf 9600 Baud eingestellt.
    Damit habe ich keine I/O-Fehler und keine Abbrüche mehr.

    Mal schauen, wie weit ich mit der geringen Rate komme. Zum Auslesen der RP6-Sensoren reicht es auf jeden Fall.

    Gruß
    Jo

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 16.05.2016, 14:00
  2. Python: curses UND smbus in python2/3
    Von SGH pRO.BOTICS im Forum Raspberry Pi
    Antworten: 8
    Letzter Beitrag: 16.12.2014, 10:59
  3. Daten Flash vom BQ3060 über den SMBus beschreiben
    Von KingVita1989 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 09.07.2013, 23:44
  4. Schwierigkeiten mit Kommunikation
    Von Phren im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 11
    Letzter Beitrag: 01.10.2012, 19:05
  5. [ERLEDIGT] Schwierigkeiten mit Nibobee
    Von Nibo_user im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 8
    Letzter Beitrag: 22.07.2012, 18:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen