-         

Ergebnis 1 bis 7 von 7

Thema: RP6 Base mal als i2C Master und als I2C Slave

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.03.2009
    Ort
    Rhein-Necker-Dreieck
    Beiträge
    78

    RP6 Base mal als i2C Master und als I2C Slave

    Anzeige

    Hallo,

    ich möchte die RP6 Base z.t. als I2C Slave betreiben (um es durch den das M32 Steuern zu lassen und Statusinformationen zu liefern) aber auch auf Sensoren am I2C Bus (z.b. Kompass) als Master zugreifen, damit ich die Motorsteuerung entsprechend überprüfen kann.

    Weis jemand ob das geht und überhaupt sinnvoll ist?
    Die Frage ist:
    - geht ein ständiger Wechsel der Base von Slave zu Master überhaupt?
    - kommt der M32 als Master nicht durcheinander wenn der Slave mal da ist und mal mal nicht?
    - kann ich evtl. beide Boards als ständige Master am Bus betreiben und trotzdem Daten zwischen den beiden austauschen?

    Die Alternative wäre, dass das M32 als Master die Sensorwerte der Base zur verfügung stellt - aber das erscheint mir sehr unelegant.

    Vielen dank im Voraus

    Lurchi :-)

  2. #2
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Was ist denn daran so unelegant, die M32 alle Sensoren auswerten zu lassen und dann die Base zu steuern?
    Eigentlich klappt das ganz gut so =)

    Fabi

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Die Sache ist zwar aufwendiger, geht aber tadellos
    http://www.roboternetz.de/wissen/ind...is_Multimaster
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    Generell würde ich dir raten, von dem Modell abzuweichen, dass die Base selber irgendwas auswertet...
    Überlass der doch einfach nur die Steuerung der Motoren und den restlichen Kram auf der Base.
    Wie genau die Motoren jetzt gesteuert werden, oder was mit den Sensordaten passiert, entscheidest du auf der M32.
    Es gibt doch eine kleine Lib für die M32, mit der du sie wie die Base verwenden kannst. Guck dir mal das M32 Move2 Beispiel an, da ist noch eine extra .c-Datei dabei, die das kann.

    Fabi

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.03.2009
    Ort
    Rhein-Necker-Dreieck
    Beiträge
    78
    Hi,

    danke für die Rückmeldungen.

    Wenn ich das richtig sehe, scheint es möglich zu sein gleichzeitig Maste rund Slave zu sein. Leider schließt das die aktuelle implementierung der RP6 Lib aus... Mal sehen ob ich Quellen finde, die das implementieren...

    @Fabi: Ich stricke gerade desdalb die Baselib um, da mir der Ansatz nicht gefällt, das die Base jegliche "Verantwortung" an das RP6 Control Board abgibt. Dann (wie im Beispielcode) brauche ich ja die Base nicht.

    Die 8 MHz der Base sollten ausreichend sein, die paar Tätigkeiten zuverlässig auszuführen. Allerdings benötigt die Base ein paar zusätzliche Sensorwerte...

    Grüße

    Lurchi :-)

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    > Dann (wie im Beispielcode) brauche ich ja die Base nicht.

    Irrtum . Der Base Controller entlastet den Master Controller von der kompletten Motorregelung und dem Überwachen des ACS / IRCOMM und einigen anderen Dingen... (kann per Interrupt bei niedriger Akkuspannung warnen z.B. und informiert auch NUR DANN über den Zustand des ACS oder der Bumper wenn sich etwas geändert hat ).
    Man schickt nur kurz ein Kommando rüber - den Rest übernimmt der Controller auf dem Mainboard.

    Das spart eine Menge Rechenzeit auf dem Master und man hat nebenbei auch noch mehr freien Speicher, freie Timer, mehr freie I/O Ports usw......

    Das macht also sehr wohl Sinn

    MfG,
    SlyD

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.03.2009
    Ort
    Rhein-Necker-Dreieck
    Beiträge
    78
    Hmmm. Nicht von der Hand zu weisen... Aber mein Gedankengang geht in die Richtung, nicht einfach die LIB Commands den Control zur Verfügung zu stellen sondern ein etwas "höheres" und komfortables Interface.

    Nebenbei bringe ich der Base im Moment ein wenig mehr Zuverlässigkeit bei Richtung (Compass), Hindernissabstand (US Sensoren), Klippensensoren (IR Sensoren) bei und eine komfortablere Schnittstelle für die Funktionen und die Motorsteuerung. Zudem bin ich halt einfach C++ Fan... (Leider gibt hier so wenige davon)

    Der reine LIB Port ist fertig und funktioniert für Base und Controlboard... (Bis auf einen Bug im ACS...) Jetzt kommen die Funktionserweiterungen.

    Wenn mein RP6 nicht mehr vom Schreibtisch hüpft hab ichs geschafft ;-)

    Grüße

    Lurchi

Berechtigungen

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