- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 12

Thema: Datenaustausch per I2C

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Du hast recht- bei mir läuft es tatsächlich auf Multi-Master hinaus.
    Und teilweise (mehr hab ich schlichtweg noch nicht versucht, momentan frisst das grafische Interface meine Zeit) funktioniert es auch.

    Ich hab ein kleines OLED-Display drauf, was sowohl der Nano als auch der Pi beschreiben können.
    Das hatte ich zum testen versucht: klappt.
    Nötig ist das nicht, da der Pi ein grafisches Interface bekommt, auf das ich per VNC zugreifen kann.
    Inzwischen hab ich, zum testen, dem Nano auch mal ne feste Adresse verpasst, nun erkennt der Pi ihn, den Kompass, und das Display auch als I2C-Gerät.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Es geht...noch etwas holprig (der Nano antwortet momentan auf alle Anfragen mit der Spannung des Akkus, der kanns schlichtweg noch nicht anders), aber der Wert hinter "Akku" kommt direkt vom Nano, der den Akku ab und zu prüft (ich glaube, alle 10 Sekunden).
    Die Anzeige ist das grafische Interface, was auf dem Pi läuft (ich hol mir das per VNC auf den Laptop, da am Pi gar kein Display dran ist, würde aber auch gehen).
    Klicke auf die Grafik für eine größere Ansicht

Name:	FreddieBordspannung.jpg
Hits:	11
Größe:	40,1 KB
ID:	35636

    Die Sache fängt an, mir zu gefallen.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    66
    Beiträge
    358
    Hallo !

    Hoert sich so an , als ob der Pi mit den Daten vom Nano noch nichts anfangen kann (zumindest alles was nach der Akku Spannung kommt).
    Oder der Pi weiss einfach noch nicht, was er mit den nachfolgenden Daten anfangen soll.

    Du bist auf einem guten Weg.
    Ich kenne das Problem!
    Es ist so, dass es nicht reicht, am Nano etwas umzuschreiben, du musst dann auch den Pi so umprogrammieren, das er mit den neuen Daten etwas anfangen kann.
    Multi Master ist eben kompliziert, aber ich wuerde mich freuen , wenn Du es hin bekommst.

    MfG
    Roland
    Robotik & Arduino Homepage
    http://www.ardumega.de

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Nein, da liegt das Problem nicht.
    Das kann man nämlich ganz easy lösen: man fragt einfach jeden Wert separat an....
    Du löst das aus, indem der Master einfach sowas mach:

    Code:
    wire.write(adresse,wert)
    Der Slave weiss nun anhand des Wertes, der kommt, was der Master will.
    Ich hab nur schlichtweg im Slave (also im Nano) noch keine Tabelle mit den Kommandos, die kommen könnten.
    Auch muss ich noch rausfinden, wie ich als Wert mehr als nur ein Byte senden kann (das hab ich schlichtweg noch nicht versucht), weil z.B der Kompasskurs (Freddie hat im Unterdeck nen Kompass) nicht wirklich in ein Byte passt.
    Zwar könnte ich den Kompass auch direkt vom Raspberry auslesen (der hängt ja auch am I2C-Bus), müsste dann aber auch die ganze Kalibrierung im Pi machen- da der Nano das aber sowieso macht, kann er auch den Kurs direkt rausrücken.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Die Sache fängt an, _richtig_ zu funktionieren.
    Im Screenshot sieht man die Akkuspannung (so weit war ich ja neulich schon), etwas drunter der stilisierte Freddie mit seinen Hindernis-Sensoren.
    Etwa alle 50ms wird der Status der Sensoren vom Raspberry per I2C angefordert- und auch aktualisiert.
    Vor den rot leuchtenden halte ich grade die Hand...nehm ich sie weg, wechselt er auf grün, wie der andere.

    Klicke auf die Grafik für eine größere Ansicht

Name:	FreddieAktuell.jpg
Hits:	12
Größe:	44,6 KB
ID:	35640

    Allerdings gibt es noch Probleme: der linke funktioniert einwandfrei, aber der rechte "friert" nach einer Weile meistens ein.
    In Python gibts dann einen I/O-Fehler.
    Da muss ich mich wohl noch mal ans Timing der Sache setzen...möglicherweise schaffts der Arduino nicht immer, schnell genug zu antworten?

    Das Ganze funktioniert jetzt so, dass der Pi "von Zeit zu Zeit" einfach eine Zahl (als Byte, das reicht für 256 Kommandos) an den Nano sendet.
    Der schaut sie sich an und sendet dann die dazu passende Antwort zurück, eigentlich ganz einfach.
    Das "von Zeit zu Zeit" ist unterschiedlich: es gibt keinen Grund, den Akku andauernd abzufragen, das wird nur alle Weile mal gemacht (ich glaube, alle 2 Sekunden), die Sensoren aber möchte ich möglichst schnell aktualisiert haben, bei 100ms sieht man die Verzögerung dann schon.
    Bei 50 _nicht_ (ich jedenfalls nicht).

    Macht Spass, hehe.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    66
    Beiträge
    358
    Hallo!

    Das kommt mir bekannt vor.
    Die gleichen Probleme hatte ich damals auch.
    Eine Weile hat alles gut funktioniert, aber dann kam ein "Error" , ohne ersichtlichen Grund.
    Ich hoffe es gelingt Dir noch , alles so hin zu bekommen wie Du es willst.
    Habe für Dich noch einen "Chat" zum Thema rausgesucht, der mir damals in einigen Sachen geholfen hat.

    https://www.mikrocontroller.net/topic/489801#new

    Viel Erfolg
    Robotik & Arduino Homepage
    http://www.ardumega.de

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.211
    Eine Fehlerquelle konnte ich inzwischen lokalisieren, hier war es tatsächlich ein Multi-Master-Problem: jedes Mal, wenn der Nano den Akku überprüft hat, blieb _eine_ Abfrage auf I2C stecken.
    Das war der ausfallende Sensor...
    Grund war offenbar, dass der Nano nach dem auslesen der Akku-Spannung den Wert zum OLED-Display geschickt hatte.
    In dem Moment ist er selber Master...
    Merkwürdig daran war, dass dabei _immer_ nur der eine der Sensoren hängen blieb, der zweite lief einwandfrei weiter.
    Nachdem ich den Teil auskommentiert hatte (darauf kann ich verzichten, weil Freddie ja sowieso fern gesteuert werden soll, es gibt also keinen Grund, irgendwas auf das montierte Display zu schreiben, im VNC-Panel sehe ich ja die Spannung auch), lief es.
    Bis ich den dritten Sensor vom Pi aus abfrage...nun bleibt der ganze Bus relativ häufig komplett stecken.
    Da hilft nur noch ein Reset des Nano...seltsam.
    Das ist erstmal unerklärlich, denn der Nano wird nun gar nicht mehr zum Master (es sei denn, eine der Librarys spuckt in diese Suppe).

    Den Trick mit der zusätzlichen Busy-Leitung hatte ich irgendwo schonmal angewendet, weiss aber nicht mehr, wo das war. Falls am Nano noch was frei ist (der ist pinmässig ziemlich ausgereizt), wäre das ne Option.
    Der Levelshifter hätte noch zwei freie Leitungen, wäre also recht unkompliziert machbar.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Ähnliche Themen

  1. Roboter Datenaustausch
    Von hammerle im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 27.04.2010, 18:12
  2. Datenaustausch PC
    Von Facharbeit im Forum Assembler-Programmierung
    Antworten: 12
    Letzter Beitrag: 22.10.2009, 16:25
  3. Datenaustausch mit Interrupts: volatile
    Von ikarus_177 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 06.07.2009, 20:25
  4. BTM222 Datenaustausch
    Von crusico im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 30.11.2008, 07:33
  5. Datenaustausch
    Von martin66119 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 05.02.2007, 20:37

Berechtigungen

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

LiFePO4 Speicher Test