- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 25

Thema: RP6Control M32: Projekt I2C-Slave

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    @Filou89
    Die Idee mit den Strings per ID aufrufen ist erst mal bestechend gut - schauen wir uns aber mal die Praxis an:
    + Man könnte die Strings im EEPROM oder SPI Rom hinterlegen so das sie nicht im knappen Speicher rumliegen.
    - Das ist aber letztlich nur für fixe Strings ohne Variablen sinnvoll.

    Möchte ich - was wohl öfter statt findet - z.b. einen String wie "Bat:7,2V LDR_L: 500 LDR_R: 270" ausgeben,
    wird schnell klar das es nicht lohnt davon irgendwas vor zu definieren oder man müsste Funktionen basteln die Werte in Platzhalter abgelegter Strings frickeln... erinnert mich irgendwie an printf oder?

    Also geht es - für was auch immer - nur um Fixe Strings, ist die Idee gut. Für zusammengesetzte Strings bleibt nur "morsen".

    Schön wäre letztlich nur eine Lösung wie es ähnlich mit der RS232 gäbe, in dem man einfach per printf/scanf o.ä. ein Datenstrom auf der I2C verarbeitet und der Slave dies direkt zum Display bringt.
    Da sagte aber Dirk leider schon: "übers Ziel hinaus"

    Mehrarbeit an einer Stelle führt meist zu weniger Arbeit an vielen anderen Stellen. Leider wird bei den Interfaces gepart, auf vorhandene Lösungen gesetzt und auf Lowlevel programmiert.. nur muss man sich dann nicht über Lowlevelfunktionalität als Ergebnis wundern...

    So lässt sich jedenfalls kein vielseitiges, modulares Interface bauen auch wenn es für diese eine Anwendung vielleicht halbwechs funktioniert.

    EEPROM bzw. SPI ROM Speicher eignet sich hervorragend um z.B. crc, SIN, COS und ATAN2 Tabellen abzulegen... und vielleicht auch den ein oder anderen String ... aber das ist kein Ersatz für standartisiertes Stringhandling auf seriellen Interfaces jeglicher Bauform. Und genau das Fehlen solcher Konzepte auf dem RP6 erzwingt leider Lowlevel-I2C-Registergefummel-Lösungen.
    Natürlich kosten Alternativen auch Speicher aber man spart anderso wo auch - mit etwas Geschick sogar mehrfach. Der Witz ist... solche Lösungen gibts sogar schon - werden aber nicht verwendet.
    Stellt euch doch bitte nur mal vor... was man anstellen müsste wenn man 2 RP6 hat.. beide mit RFM12 und M32, wo nun die M32 der RP6_1 Daten auf die Base oder Display vom RP6_2 schreiben/lesen will.... Ok weil die M256 grade "in" ist nehmen wir halt die, statt der RFM12... macht es auch nicht einfacher. Mal abgesehen das 2 RFM12 10 Euro und bissel Hirnschmalz kosten, 2 M256 das 24fache!!!

    Ich bin mir aber sicher das Dirk und/oder Du da was funktionierendes zusammen bekommen. Ach wenn es nur eine Lösungs-Replikation der Base_Slave und keine Invention für Serielle Schnittstellen ist - was ja zugegebener Weise auch nicht eure erklärte Aufgabenstellung ist.

    Gruß Rolf
    Sind Sie auch ambivalent?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ich hab mal hier: http://www.rn-wissen.de/index.php/RP...M32:_I2C-Slave
    ... einen RN-Wissen Artikel zum M32 I2C-Slave aufgemacht.

    Mitschreiben, wer möchte ...
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hier: http://www.rn-wissen.de/index.php/RP...lave#I2C-Slave
    ... gibt es jetzt eine V1.0 des M32 I2C-Slave.

    Wenn man die in die M32 lädt, fangen alle 3 Skunden die 4 LEDs an, für 3 Sekunden zu blinken. Das ist die Timeout-Anzeige, die nach 3 Sek. auslöst, dann nach weiteren 3 Sek. Blinken einen "Soft-Reset" auslöst.

    Dazu blinkt die Heartbeat-Anzeige (* in der rechten LCD-Ecke).

    Würdet ihr das mal testen?
    Den M32-Master (am einfachsten RP6Control_07_I2CMaster.c) müßtet ihr für die M256 etwas anpassen.
    Die Zeile: if(!block && (PIND & EINT1))
    wird in: if(!block && (PINJ & INT2_PI15)) // XBUS INT2 -> PJ6 (PCINT15)
    ... geändert, weil XBUS INT2 als Interrupt verwendet wird.
    Gruß
    Dirk

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Filou89
    Registriert seit
    24.12.2010
    Ort
    Thun, Switzerland
    Alter
    36
    Beiträge
    116
    Also wenn immer die äusseren und die inneren blinken, dann funktioniert das bei mir!
    Nur für die als Kosmetik habe ich noch das LCD gelöscht, jedoch nicht über den I2C Bus.
    Grüsse

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hab mal ne Frage zur Befehlsstruktur unter Punkt 8:
    Wollt ihr für #define CMD_SETIOS jeden I/O einzeln setzen?
    Oder analog zu SETLEDs auch mehrere auf einmal?
    Und wie ists, wenn manche als Input, andere als Output behandelt werden sollten?

    Die Idee ist wirklich klasse!
    Und der Einschub mit den abgespeicherten Strings finde ich ebenfalls sinnvoll. Man kann ja auf gewisse Ereignisse vordefinierte Strings z.B. ins LCD schreiben lassen etc.

    Grüße

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @Filou89:
    Danke für deinen Slave-Code!
    Also wenn immer die äusseren und die inneren blinken, dann funktioniert das bei mir!
    Ja, so sollte es ohne Master sein. Könntest du das mal mit einem einfachen Master testen (z.B. nur M32-LEDs blinken lassen)?

    @fabqu:
    Sollten wir die IOs wirklich einzeln als I oder O setzen können? Möglich ist das ...
    Mit den Strings muss ich mal überlegen. Im Augenblick möchte ich noch writeStringLCD versuchen ...
    Gruß
    Dirk

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Im RN-Wissen Artikel gibt's jetzt die erste Master-Slave Demo:
    Ein simples Lauflicht auf der M32, über I2C von der M256 WiFi gesteuert, und mit Timeout-Funktion.

    Dazu gehört auch schon eine unfertige Beta-Version der M32 I2C Master Library für die M256 mit den Funktionen zur Steuerung der M32. Diese Library kommt zunächst in den Projektordner,- wenn sie fertig ist später (wie die mitgelieferte RP6M256_I2CMasterLib) auch in den \RP6Lib\RP6control_M256_WIFI Ordner.

    Vorschläge?
    Insbesondere brauchen wir noch Ideen für die Nachbildung der SPI-Lesefunktionen und der schwierigeren LCD-Funktionen in der Lib...

    Schön wäre auch eine Ergänzung der Demo um eine M32 LCD-Ansteuerung und um einen M32 Sound-Test...
    Gruß
    Dirk

Ähnliche Themen

  1. RP6Control M32: Library für 8 Servos
    Von Dirk im Forum Robby RP6
    Antworten: 84
    Letzter Beitrag: 12.02.2013, 22:17
  2. Slave Transmitter und Slave Receiver Mode
    Von masasibe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 26.02.2011, 20:55
  3. RP6Control M32: Tonfrequenzen
    Von Dirk im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 10.10.2009, 19:47
  4. Slave-Master-Slave übertragung geht nicht
    Von Dämmi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.11.2008, 01:08
  5. Antworten: 0
    Letzter Beitrag: 26.08.2007, 16:03

Berechtigungen

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

Solar Speicher und Akkus Tests