- SF800 Solar Speicher Tutorial         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: RP6Control M32: Projekt I2C-Slave

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Anzeige

    Praxistest und DIY Projekte
    @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

  2. #12
    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

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Leute,

    jetzt gibt es die erste vollständige Version (1.00) der M32 I2C Master Library für die M256 WiFi.
    Der Slave für die M32 liegt passend in der Version 1.10 vor.

    Ich werde jetzt vorläufig nichts weiter ändern, so dass ihr in Ruhe testen könnt.

    Wie gefällt's euch?
    Gruß
    Dirk

  4. #14
    Max Web
    Gast
    Das sieht sehr gut aus - ich werde das Ganze mal auf mein RNControl (hab kein M32) portieren und eventuell noch eine Unterstützung für ein paar Servos einbauen - dann ist meine Software auf RP6-Seite so gut wie fertig

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    So, jetzt ist auch das "Sahnehäubchen" fertig:

    Der "Dual-Slave Master".
    Was ist das denn?
    Das ist ein I2C-Master-Programm, das gleichzeitig die RP6BASE und die RP6 CONTROL M32 ansteuert.
    Ihr findet es hier: http://www.rn-wissen.de/index.php/RP...l-Slave_Master

    Was kann das Programm:
    Es zeigt anfangs Demos für die RP6BASE (MOVE-/ROTATE-Test) und die M32 (LCD-Ausgabe, Sound-Test, SPI-EEPROM Schreib-/Lesetest).
    Danach läuft eine Dauerschleife mit je einem Lauflicht auf der RP6BASE und M32 (natürlich vollständig über I2C von der M256 gesteuert!).

    Während diese Lauflichter ablaufen, sind insgesamt 8 Event Handler (mit Watchdog Handler: 9!) aktiv:
    M32:
    --> mem_cs2 Pegel-Wechsel
    --> IO-Ports (ins) Pegel-Wechsel
    --> Tastenbetätigung
    BASE:
    --> ACS Zustandswechsel
    --> Bumper Zustandswechsel
    --> IRCOMM: RC5-Daten empfangen
    --> Batteriespannung niedrig
    --> Bewegungsstatus

    Da kann man ausgiebig testen: Pins der freien IO-Ports der M32 auf andere Pegel legen, Tasten auf der M32 drücken, eine Hand vor den Roboter halten (ACS-Test), Bumper betätigen, RC5-Code senden, (Akku leerlaufen lassen = eher nicht zu empfehlen...).

    Der mem_cs2 Pin auf der M32 ist am nicht bestückten IC-Sockel IC5 zu kontaktieren. ACHTUNG: Er ist von der RP6ControlLib auf AUSGANG geschaltet! Also erst auf EINGANG umschalten, bevor man ihn zum Testen des Event Handlers z.B. mit GND oder VCC verbindet.

    Testaufbau:
    - RP6BASE: RP6Base_I2CSlave.c (aus den Demos des RP6!)
    - M32: RP6Control_I2CSlave.c (siehe oben!)
    - M256 WiFi: RP6M256_M32_I2CMaster_02.c (siehe oben!)
    - M256 WiFi über WLAN und über PROG_UART Stecker mit PC verbunden
    - Beide Terminal-Fenster des RobotLoaders ausgeklappt
    - Start des Systems über Serial Loader

    Damit ist zumindest geklärt, dass man mit der M256 WiFi den Roboter mit M32 komplett über I2C steuern kann.

    Jetzt fehlen noch eure Anwendungen ...

    Viel Spaß damit!
    Geändert von Dirk (22.09.2012 um 21:01 Uhr)
    Gruß
    Dirk

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    27.08.2006
    Alter
    76
    Beiträge
    83
    Hallo Dirk,

    bekomme Fehlermeldung.

    Bitte Make File anzeigen.

    Compiling: RP6M256_M32_I2CMaster_02.c
    avr-gcc -c -mmcu=atmega2560 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6M256_M32_I2CMaster_02.lst -I../../RP6Lib -I../../RP6Lib/RP6control_M256_WIFI -I../../RP6Lib/RP6common -I../../RP6Lib/RP6control_M256_WIFI/sdc -std=gnu99 -MD -MP -MF .dep/RP6M256_M32_I2CMaster_02.o.d RP6M256_M32_I2CMaster_02.c -o RP6M256_M32_I2CMaster_02.o
    In file included from RP6M256_M32_I2CMaster_02.c:38:
    ../../RP6Lib/RP6control_M256_WIFI/RP6M256_M32_I2CMasterLib.h:347: error: expected identifier or '(' before '{' token
    make: *** [RP6M256_M32_I2CMaster_02.o] Error 1

    > Process Exit Code: 2
    > Time Taken: 00:00

    Gruß
    Kurt

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo Kurt,

    hier das makefile (Ausschnitt):
    Code:
    ###############################################################################
    # Target file name (without extension).
    # This is the name of your main C source file! Do NOT append the ".c"!
    # Example: Let's assume your main source file is "RP6Base_MyProgram.c", then
    # you would write: TARGET = RP6Base_MyProgram
    TARGET = RP6M256_M32_I2CMaster_02
    ###############################################################################
     
    ###############################################################################
    # Specify relative path to RP6 library files here.
    # This is "../../RP6Lib" or "../RP6Lib" usually.
    RP6_LIB_PATH=../../RP6Lib
    RP6_LIB_PATH_OTHERS= $(RP6_LIB_PATH)/RP6control_M256_WIFI $(RP6_LIB_PATH)/RP6common
    RP6_LIB_PATH_OTHERS += $(RP6_LIB_PATH)/RP6control_M256_WIFI/sdc
    ###############################################################################
    
    #------------------------------------------------
    # Main Source file is _automatically_ added here:
    SRC = $(TARGET).c
    # DO NOT EDIT THIS!
    
    ###############################################################################
    # If there is more than one source file, append them here separated by spaces.
    # Usually you have to add the Library files here! (ONLY add c files "*.c" here,
    # NO header files "*.h"!)
    # Don't forget to add relative paths!
    
    #SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CslaveTWI.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CmasterTWI.c
    
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/RP6M256_I2CMasterLib.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/RP6M256_M32_I2CMasterLib.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/RP6M256Lib.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/RP6M256uart.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/RP6M256_WIFIlib.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/sdc/sd_raw.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/sdc/fat.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/sdc/partition.c
    SRC += $(RP6_LIB_PATH)/RP6control_M256_WIFI/sdc/byteordering.c
    Gruß
    Dirk

  8. #18
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Hallo Dirk,

    ich möchte gerne dein I2C-Slave-Programm für die M32 Verwenden. Ich habe mir die aktuellen Examples (v1.8, siehe http://www.rn-wissen.de/index.php/RP...rung#Versionen ) heruntergeladen. Dort in "RP6CONTROL_EXAMPLES" einen Ordner "M32-Slave" erstellt. Dort hab ich eine RP6Control_I2CSlave.c mit dem Quelltext von http://www.rn-wissen.de/index.php/RP...2C-Slave#Slave erstellt. Dazu das Makefile eines anderen Beispiels kopiert und ein paar Parameter angepasst:
    Code:
    TARGET = RP6Control_I2CSlave
    
    SRC += $(RP6_LIB_PATH)/RP6control/RP6ControlLib.c 
    SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c 
    SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CslaveTWI.c 
    #SRC += $(RP6_LIB_PATH)/RP6common/RP6I2CmasterTWI.c
    Beim übersetzen "make all" bekomme ich aber folgende Fehler:
    Code:
    $ make all
    
    -------- begin --------
    avr-gcc (GCC) 4.7.0
    Copyright (C) 2012 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    Compiling: RP6Control_I2CSlave.c
    avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Control_I2CSlave.lst -I../../RP6Lib -I../../RP6Lib/RP6control -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Control_I2CSlave.o.d RP6Control_I2CSlave.c -o RP6Control_I2CSlave.o
    RP6Control_I2CSlave.c:96:1: error: unknown type name ‘freeIOs_t’
    RP6Control_I2CSlave.c: In function ‘task_update’:
    RP6Control_I2CSlave.c:116:5: error: ‘pressedKeyNumber’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:116:5: note: each undeclared identifier is reported only once for each function it appears in
    RP6Control_I2CSlave.c:129:41: error: ‘ins’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:129:60: error: request for member ‘byte’ in something not a structure or union
    RP6Control_I2CSlave.c:137:8: error: ‘releasedKeyNumber’ undeclared (first use in this function)
    RP6Control_I2CSlave.c: In function ‘task_updateRegisters’:
    RP6Control_I2CSlave.c:205:57: error: ‘ins’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:214:56: error: ‘adc4’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:216:56: error: ‘adc3’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:218:56: error: ‘adc2’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:220:56: error: ‘adc6’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:222:56: error: ‘adc5’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:224:56: error: ‘adc7’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:226:57: error: ‘adcMic’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:228:59: error: ‘adcKeypad’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:230:63: error: ‘releasedKeyNumber’ undeclared (first use in this function)
    RP6Control_I2CSlave.c:231:62: error: ‘pressedKeyNumber’ undeclared (first use in this function)
    RP6Control_I2CSlave.c: In function ‘task_commandProcessor’:
    RP6Control_I2CSlave.c:339:4: warning: implicit declaration of function ‘setOUTs’ [-Wimplicit-function-declaration]
    RP6Control_I2CSlave.c:343:32: error: ‘adcMic’ undeclared (first use in this function)
    RP6Control_I2CSlave.c: In function ‘main’:
    RP6Control_I2CSlave.c:472:9: error: request for member ‘byte’ in something not a structure or union
    RP6Control_I2CSlave.c:484:3: warning: implicit declaration of function ‘task_RP6M32System’ [-Wimplicit-function-declaration]
    make: *** [RP6Control_I2CSlave.o] Fehler 1
    Hilfe

    (Für mich sieht das so aus, als währe eine Lib nicht eingebunden. Aber welche? Und warum meckert er dann nicht?)

    Viele Grüße
    -schumi-

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @-schumi-:
    Hast du im Abschnitt "Planung" (http://www.rn-wissen.de/index.php/RP...-Slave#Planung) den Punkt 9 gesehen?
    Gruß
    Dirk

  10. #20
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    31
    Beiträge
    449
    Hi Dirk,

    Ja, hab ich. Allerdings hab ich nicht überrissen, dass man die 1.32beta in die 1.3 integrieren soll (Ordner zusammenführen und existierende Dateien überrschreiben)

    Naja, jetz konnte ich das ganze übersetzen

    Herzlichen Dank! :-D

    Viele Grüße
    -schumi-

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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

Labornetzteil AliExpress