-         
Seite 15 von 19 ErsteErste ... 51314151617 ... LetzteLetzte
Ergebnis 141 bis 150 von 182

Thema: Diskussion zum RP6 M256 WIFI Modul

  1. #141
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    57
    Beiträge
    5.796
    Blog-Einträge
    8
    Anzeige

    Hallo

    Das macht echt Spass mit dem Loader und seinen abgedockten Terminals zu spielen.

    Auf Basis des Webserverbeispiels eine LED-Ansteuerung mit dem Browser:

    Code:
    // LEDs mit dem Browser ansteuern                                                mic 22.7.2012
    
    #include "RP6M256Lib.h"
    
    char c, kommando=0;
    
    void send_html_page(void);
    
    int main(void)
    {
    	initRP6M256();
    	
    	writeString_P("\n\nsetLEDs() mit dem Browser                            22.7.2012 mic\n\r");
    
    	// Make sure WLAN Module Packet size / buffer size and flush timer is OK
    	enter_cmd_mode_WIFI();
    	issueCMD_WIFI("set comm size 1024","AOK");
    	issueCMD_WIFI("set comm time 10","AOK");
    	leave_cmd_mode_WIFI();
    	
    	while(true)
    	{
    		if(getBufferLength_WIFI()) // Daten vom Browser empfangen?
    		{
    			c=readChar_WIFI();
    			writeChar(c);  // ja, dann Daten zum seriellen Terminal senden
    			
    			if(c == '?') { kommando=1; setLEDs(0); } // und ab dem ? interpretieren
    
    			if(kommando) switch(c)
    				{
    					case 'a': setLED1(1); break;
    					case 'b': setLED2(1); break;
    					case 'c': setLED3(1); break;
    					case 'd': setLED4(1); break;
    				}
    
    			if(c == 13) // Datenende
    			{
    				if(kommando) kommando=0; else setLEDs(0); // LEDs aus, wenn kein ? gefunden
    				send_html_page();
    			}
    		}
    	}
    	return 0;
    }
    
    void send_html_page(void)
    {
    	// Send HTTP Header:
    	writeString_P_WIFI("HTTP/1.0 200 OK\r\n");
    	writeString_P_WIFI("Content-Type: text/html\r\n");
    	writeString_P_WIFI("\r\n");
    
    // Send HTML Content:
    writeString_P_WIFI("<html><head><title>RP6-WIFI: Leds ansteuern</title></head><body>\n");
    
    writeString_P_WIFI("setLeds():\n");
    writeString_P_WIFI("<form action=\"http://169.254.77.3:2000\" method=\"get\">\n");
    
    writeString_P_WIFI("<input type=\"radio\" name=\"SL4\" value=\"d\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL3\" value=\"c\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL2\" value=\"b\">&nbsp;\n");
    writeString_P_WIFI("<input type=\"radio\" name=\"SL1\" value=\"a\">\n");
    writeString_P_WIFI("<br>\n");
    
    writeString_P_WIFI("<input type=\"submit\" value=\"Setzen\">\n");
    writeString_P_WIFI("<input type=\"reset\" name=\"Name\" value=\"reset\">\n");
    writeString_P_WIFI("</form>\n");
    
    writeString_P_WIFI("</body>\n");
    writeString_P_WIFI("</html>\n");
    
    	// Wait a bit and then close connection:
    	mSleep(50);  // Depending on the content you may have to wait longer.
    
    	enter_cmd_mode_WIFI(); // ??? Wie funktioniert das?
    	writeCommand_WIFI("close\r");
    	leave_cmd_mode_WIFI();
    }
    Die URL im Form-Tag muss man natürlich anpassen.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #142
    Benutzer Stammmitglied
    Registriert seit
    29.08.2008
    Beiträge
    73
    Hey leute,

    ich werf mal so zwischen durch ein, dass ichs auch endlich am Laufen habe
    Die Einarbeitung ist doch etwas tricky, wenn man keinen RP6 hat, aber es ist eigentlich alles super erklärt nur schadet es nicht das RP6 Handbuch auch zu kennen.
    ich hatte zuerst auch Probleme mit der WLAN-Verbindung, aber es lag an meinem Router. Hab das Modul jetzt wo anders getestet, da geht es sofort ohne Probleme. Super Arbeit von Arrex. Jetzt auf ans weiter testen.

    Gruß
    Elchi

  3. #143
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    765
    Jo, Ichthyosaurier nun auch endlich ein vernünftiges WLAN-Terminal in labview, welches ich nun gerade versuche, zu verwenden und einzubauen.
    Mal sehen...

  4. #144
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    57
    Beiträge
    5.796
    Blog-Einträge
    8
    Hallo

    Beim Kompilieren des SD-Card-Beispiel habe ich einige Hürden zu überwinden. Gegen " 'for' loop initial declaration used outside C99 mode" hilft ein "-std=c99" in den Flags des Kompilers im Makefile. Das war noch einfach. Aber das verstehe ich nicht:

    Code:
    avr-gcc -std=c99 -mmcu=atmega2560 -Os -mno-interrupts -funsigned-char -funsigned-bitfields -Wall -Wstrict-prototypes -ggdb -c -DF_CPU=16000000UL -Wa,-acdhlmns=RP6M256Lib.lst RP6M256Lib.c -o RP6M256Lib.o
    RP6M256Lib.c:547: warning: declaration does not declare anything
    RP6M256Lib.c: In function 'delayCycles':
    RP6M256Lib.c:650: error: 'asm' undeclared (first use in this function)
    RP6M256Lib.c:650: error: (Each undeclared identifier is reported only once
    RP6M256Lib.c:650: error: for each function it appears in.)
    RP6M256Lib.c:650: error: expected ';' before 'volatile'
    make: *** [RP6M256Lib.o] Error 1
    Beides bezieht sich auf die Datei RP6M256Lib.c:

    Code:
    /*****************************************************************************/
    // Delays, Stopwatches and Beeper:
    
    
    // ---------------------
    // Internal status bits
    volatile union {
    	uint8_t byte;
    	struct {
    		unsigned beep:1;
    		unsigned unused:7;
    	}; <-- Zeile 547
    } controlStatus;
    Code:
    /**
     * Delay a number of instruction cycles. 
     * No exact delay function! And interrupts can still occur and 
     * add a lot of extra cycles.
     * This function only guarantees to delay for a MINIMAL number
     * of cycles! 
     *
     * Example:
     * 	delayCycles(1000); // Delays for *about* 1000 instruction cycles
     */
    void delayCycles(volatile uint16_t dly)
    {
    	//volatile uint16_t delay2 = dly;
    	//while(delay2--) nop();	
    	while(dly--) nop(); <-- Zeile 650
    }
    Das #define für nop() findet sich in RP6M256.h in Zeile 276:
    Code:
    // Assembly and system macros:
    #define nop(); {asm volatile("nop\n\t");} <-- Zeile 276
    #define bl_reset(); cli();bl_start();
    (Zeilenangaben jeweils aus der Library der Testmodule)

    Irgendwelche Ideen?

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #145
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    35
    Beiträge
    1.516
    Hallo mic,

    gibt keine Probleme hier, der Compiler Aufruf ist aber auch deutlich anders... Du verwendest nicht die makefiles die dabei waren nehme ich an?

    Compiling: ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.c
    avr-gcc -c -mmcu=atmega2560 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.lst -I../../RP6Lib -I../../RP6Lib/RP6control_M256_WIFI -I../../RP6Lib/RP6common -I../../RP6Lib/RP6control_M256_WIFI/sdc -std=gnu99 -MD -MP -MF .dep/RP6M256Lib.o.d ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.c -o ../../RP6Lib/RP6control_M256_WIFI/RP6M256Lib.o
    Wie sieht Dein Makefile denn aus?
    Benutzt Du WinAVR oder was anderes?


    Übrigens das nop(); wird auch an anderen Stellen in der Lib verwendet, also dürftest Du eigentlich wenn es denn Probleme macht gar kein Programm erfolgreich compilieren können.

    > "-std=c99"

    Nimm mal gnu99.

    MfG,
    SlyD

  6. #146
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    57
    Beiträge
    5.796
    Blog-Einträge
    8
    Hallo

    Danke für die schnelle Antwort.

    Ich verwende KamAVR welches sein eigenes Makefile automatisch erstellt:

    Code:
    ################################################################################
    ################################################################################
    ##                                                                            ##
    ## NOTE:  This makefile uses GNU make syntax.                                 ##
    ## =====  It may not work when called by other make utilities                 ##
    ##                                                                            ##
    ################################################################################
    ################################################################################
    
    ################################################################################
    ###              ###############################################################
    ### PROJECT NAME ###############################################################
    ###              ###############################################################
    ################################################################################
    
    PROJECT = sd-card-test
    
    ################################################################################
    ##     #########################################################################
    ## CPU #########################################################################
    ##     #########################################################################
    ################################################################################
    
    CPU = atmega2560
    
    ################################################################################
    ###         ####################################################################
    ### SOURCES ####################################################################
    ###         ####################################################################
    ################################################################################
    
    OBJ  = RP6M256Lib.o
    OBJ += RP6M256uart.o
    OBJ += RP6M256_WIFIlib.o
    OBJ += sdc\partition.o
    OBJ += sdc\sd_raw.o
    OBJ += sd-card-test.o
    OBJ += sdc\fat.o
    OBJ += sdc\byteordering.o
    
    ################################################################################
    ##       #######################################################################
    ## TOOLS #######################################################################
    ##       #######################################################################
    ################################################################################
    
    COMPILER  = avr-gcc
    ASSEMBLER = avr-gcc
    LINKER    = avr-gcc
    ROMIZER   = avr-objcopy
    DUMPER    = avr-objdump
    
    ################################################################################
    ##       #######################################################################
    ## FLAGS #######################################################################
    ##       #######################################################################
    ################################################################################
    
    COMMON_FLAGS  = -std=c99
    COMMON_FLAGS += -mmcu=$(CPU)
    COMMON_FLAGS += -Os
    COMMON_FLAGS += -mno-interrupts
    COMMON_FLAGS += -funsigned-char
    COMMON_FLAGS += -funsigned-bitfields
    COMMON_FLAGS += -Wall
    COMMON_FLAGS += -Wstrict-prototypes
    
    LINK_FLAGS  = $(COMMON_FLAGS) -ggdb
    
    COMPILE_FLAGS  = $(LINK_FLAGS) -c -DF_CPU=16000000UL
    
    ASSEMBLE_FLAGS  = $(COMMON_FLAGS) -c -I. -x assembler-with-cpp
    
    EEPROM_FLAGS  = -j .eeprom
    EEPROM_FLAGS += --change-section-lma .eeprom=0
    
    FLASH_FLAGS  = -j .text
    FLASH_FLAGS += -j .data
    
    ELF_FLAGS  = --cref
    ELF_FLAGS += -lm
    
    ################################################################################
    ##         #####################################################################
    ## ACTIONS #####################################################################
    ##         #####################################################################
    ################################################################################
    
    COMPILE      = $(COMPILER) $(COMPILE_FLAGS)
    ASSEMBLE     = $(ASSEMBLER) $(ASSEMBLE_FLAGS)
    LINK         = $(LINKER) $(LINK_FLAGS)
    REMOVE       = rm -f
    
    ################################################################################
    ##       #######################################################################
    ## BUILD #######################################################################
    ##       #######################################################################
    ################################################################################
    
    all: elf flash eep
    
    rebuild: clean all
    
    clean:
    	$(REMOVE) $(PROJECT).hex
    	$(REMOVE) $(PROJECT)_eeprom.hex
    	$(REMOVE) $(PROJECT).elf
    	$(REMOVE) $(PROJECT).map
    	$(REMOVE) $(PROJECT).cof
    	$(REMOVE) $(PROJECT).lst
    	$(REMOVE) $(OBJ:.o=.lst)
    	$(REMOVE) $(OBJ)
    
    eep:     $(PROJECT)_eeprom.hex
    flash:   $(PROJECT).hex
    elf:     $(PROJECT).elf
    
    ################################################################################
    ##      ########################################################################
    ## LINK ########################################################################
    ##      ########################################################################
    ################################################################################
    
    $(PROJECT)_eeprom.hex: $(PROJECT).elf
    	$(ROMIZER) $(EEPROM_FLAGS) -O ihex $(PROJECT).elf $(PROJECT)_eeprom.hex
    
    $(PROJECT).hex: $(PROJECT).elf
    	$(ROMIZER) $(FLASH_FLAGS) -O ihex $(PROJECT).elf $(PROJECT).hex
    
    $(PROJECT).elf: $(OBJ)
    	$(LINK) $(OBJ) -o $(PROJECT).elf $(ELF_FLAGS)
    
    ################################################################################
    ##         #####################################################################
    ## COMPILE #####################################################################
    ##         #####################################################################
    ################################################################################
    
    %.o : %.c
    	$(COMPILE) $< -o $@
    
    %.o : %.s
    	$(ASSEMBLE) $< -o $@
    Inzwischen bin ich etwas weiter gekommen. Die union-Strucktur habe ich auskommentiert, asm habe ich in __asm__ umbenannt. Und siehe da: Es funktioniert!

    Code:
       _______________________
       \| RP6  ROBOT SYSTEM |/
        \_-_-_-_-_-_-_-_-_-_/
    
    Hello World from RP6 CONTROL M256 WIFI!
    Let's move it!  :)
    This message was sent via ***WLAN***!
    (Kompiliert von mic 25.7.2012
    Testing SD Card. Please wait (SDHC Cards will take longer)...
    
    SD INIT OK!
    opening filesystem OK!
    opening root directory OK!
    manuf:  0x27
    oem:    PH
    prod:   SD04G
    rev:    48
    serial: 0xc202
    date:   2/12
    size:   3768MB
    copy:   0
    wr.pr.: 0/0
    format: 0
    free:   0/0
    M256_SELFTEST_TESTFILE.txt           1455
    
    
    ###############################################################################
    RP6 M256 SD CARD Testfile 01234567890
    ###############################################################################
    If you can see the two 3D Triangles below and can read this text, 
    SD Card reading works fine! 
    ###############################################################################
         ____  ____  ____  ____                      ______________________
        /\   \/\   \/\   \/\   \                    /\                     \
       /  \___\ \___\ \___\ \___\                  /  \    _________________\
       \  / __/_/   / /   / /   /                  \   \   \                /
        \/_/\   \__/\/___/\/___/                    \   \   \__________    /
          /  \___\    /  \___\                       \   \   \    /   /   /
          \  / __/_  _\  /   /                        \   \   \  /   /   /
           \/_/\   \/\ \/___/                          \   \   \/   /   /
             /  \__/  \___\                             \   \  /   /   /
             \  / _\  /   /                              \   \/   /   /
              \/_/\ \/___/                                \      /   /
                /  \___\                                   \    /   /
                \  /   /                                    \  /   /
                 \/___/                                      \/___/
    
    ###############################################################################
    Juhu :)

    Gruß

    mic

    P.S.: Hier klemmts noch:

    sd-card-test.c:283: warning: pointer targets in passing argument 1 of 'strstr' differ in signednes

    Code:
    			uint8_t buffer[160];
    			uint32_t offset = 0;
    			intptr_t count;
    
    			while((count = fat_read_file(fd, buffer, sizeof(buffer))) > 0)
    			{
    				if(offset == 0) {
    					// Briefly check if the contents are correct!
    					// Only one single line is checked.
    					char* ptr = strstr(&buffer[0], "RP6 M256"); <-- Zeile 283
    					if(strncmp(ptr, "RP6 M256 SD CARD Testfile 01234567890", 37) != 0) {
    Angehängte Dateien Angehängte Dateien
    Geändert von radbruch (25.07.2012 um 21:29 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #147
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    35
    Beiträge
    1.516
    Ah gut.
    Das asm statement kann je nach Compiler und auch abhängig von den Compilerpoptionen durchaus auch anders sein.
    Das ist ja eh nicht portabel.


    > sd-card-test.c:283: warning: pointer targets in passing argument 1 of 'strstr' differ in signednes

    Das ist an der Stelle eigentlich egal.
    In der einen Lib ist es halt ein uint8_t, in der anderen ein char...

    Aber hast recht sollte man vielleicht noch casten:

    char* ptr = strstr((char*)&buffer[0], "RP6 M256");


    MfG,
    SlyD

  8. #148
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    57
    Beiträge
    5.796
    Blog-Einträge
    8
    Hallo

    Das hat ja nicht wirklich was mit recht haben zu tun, ich melde nur weiter, was mein Kompiler anmotzt. Was er damit meint ist mir meist ebenfalls rätselhaft.

    Wie erwartet funktioniert dein Vorschlag:

    Code:
    					//char* ptr = strstr(&buffer[0], "RP6 M256");
    					char* ptr = strstr((char*)&buffer[0], "RP6 M256");
    ...wird nun fehler- und warnungsfrei übersetzt. Du bist der Beste :)

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #149
    Max Web
    Gast
    So, hier auch noch eine kurze Rückmeldung von mir:

    Das Modul funktioniert fehlerfrei, die Library liefert mir keine unerklärlichen Compilerfehler. Mittlerweile steht auch die Verbindung zum PC und auch meine Programm-Idee hat sich als gut realisierbar erwiesen, der Roboter lässt sich gut vom PC aus fernsteuern. Jetzt fehlt eigentlich nur noch die GUI und vielleicht ein etwas effizienteres Protokoll

    - Max

  10. #150
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    765
    Hi Radbruch,

    funzt dein Programm bei dir immer? Bei mir klappt es bis zur ersten Eingabe, ab der zweiten ist die Verbindung weg?!!?

    Grüße

Seite 15 von 19 ErsteErste ... 51314151617 ... LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Kostenlose RP6 M256 WIFI Module für Testanwender!
    Von SlyD im Forum Robby RP6
    Antworten: 10
    Letzter Beitrag: 02.07.2012, 15:24
  2. RP6v2 M256 WiFi !?
    Von Dirk im Forum Robby RP6
    Antworten: 20
    Letzter Beitrag: 11.05.2012, 19:27
  3. ARM für WiFi steuerung ?
    Von fat tony im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 5
    Letzter Beitrag: 03.01.2010, 13:57
  4. Wifi Roboter
    Von newName im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 16.01.2008, 13:51
  5. Formate zur Diskussion
    Von sonic im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 24
    Letzter Beitrag: 03.08.2004, 18:41

Berechtigungen

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