- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 33

Thema: RP6 mit m32 steuern

  1. #11
    shedepe
    Gast
    Anzeige

    Praxistest und DIY Projekte
    Hast du schon mal testweise probiert, was passiert wenn du ein Programm reinlädst in dem er nur rotieren soll?

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    25.12.2010
    Beiträge
    14
    also wenn ich das beispiel rp6 control 9 move reinlade funktioniert das alles super. in der endlosschleife sind die move und rotate befehle drin, alles super.
    wenn ich ne methode draus mach void Fahren (void) mit den gleichen befehlen und die methode dann in der endlosschelife aufrufe, dann geht auch alles super.
    aber wenn ich bei den bumpers schreibe, if bumper_left... und dann move oder rotate schreibe, dann macht er das zwar, aber danach geht nichts mehr. der watchdog bleibt stehen und nichts rührt sich...

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.12.2010
    Beiträge
    147
    Ich hab jetzt auch ein Problem
    Ich steuere meinen RP6 über die Tasten, ich kann ihn 100 mal vorwärts und zurück fahren lassen. Aber sobald ich in drehen lasse macht er nichts mehr danach. Erst hab ichs mit rotate probiert, das klappte nicht also versuchte ich es mit move. Das will allerdings auch nicht .

    Hier das Programm :
    Code:
     #include "RP6ControlLib.h"     
    #include "RP6I2CmasterTWI.h"    
    #include "RP6Control_I2CMasterLib.h" 
    
    
    
    
    
    int main(void) 
    { 
       initRP6Control();  
        
      
       I2CTWI_initMaster(100);  
    
    
    
       setLEDs(0b1111); 
    
       mSleep(1000); 
       setLEDs(0b0000); 
        
       I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true); 
       I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true); 
      
    
    
      void I2C_requestedDataReady(uint8_t dataRequestID) 
    { 
       checkRP6Status(dataRequestID); 
    } 
    while(true)
    {
    uint8_t key = getPressedKeyNumber(); 
    	{
    	if(key == 5)
    	{
    		changeDirection(FWD);
    		moveAtSpeed(100,100);
    	}
    	if(key == 4)
    	{
    	changeDirection(BWD);
    	moveAtSpeed(100,100);
    	}
    	if(key == 1)
    	{
    	changeDirection(RIGHT);
    	move(100,RIGHT,DIST_CM(10),true);
    	changeDirection(FWD);
    	moveAtSpeed(0,0);
    
    	}
    	if(key == 3)
    	{
    	changeDirection(LEFT);
    	move(100,LEFT,DIST_CM(10),true);
    	changeDirection(FWD);
    	moveAtSpeed(0,0);
    	}
    	if(key == 2)
    	{
    	moveAtSpeed(0,0);
    	}
    	
    
    	}
    
    	
    	task_I2CTWI();
    	
    
      }
       return 0; 
    }
    Mein RP6 YouTube Kanal
    Abonnieren & Kommentieren

    http://www.youtube.com/user/MyRP6

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    30.12.2009
    Ort
    Koblenz
    Alter
    44
    Beiträge
    78
    Habe lange nichts mehr damit gemacht, aber kann es sein, dass er mit LEFT und RIGHT bei MOVE nichts anfangen kann? Versuche mal für´s Drehen die rotate-Funktion
    Ich habe bereits bis Unendlich gezählt. Zweimal, und zurück

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.12.2010
    Beiträge
    147
    doch kann er, er dreht ja. Nur wenn er den Befehl move ausgeführt hat tut er nichts mehr. Und rotate habe ich auch schon probiert, funktionierte aber auch nicht.
    Mein RP6 YouTube Kanal
    Abonnieren & Kommentieren

    http://www.youtube.com/user/MyRP6

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @Mario94:
    Nur wenn er den Befehl move ausgeführt hat tut er nichts mehr.
    "Move" wird bei dir ja benutzt, wenn du Taste 1 oder 3 drückst. Danach wird der RP6 mit "moveAtSpeed(0,0);" gestoppt (d.h. er "tut nichts mehr").

    Also tut dein RP6 doch das, was du ihm beigebracht hast.

    Gruß Dirk

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.12.2010
    Beiträge
    147
    Richtig, wenn ich diese Taste drücke macht er genau das was ich will.
    Aber dadurch wird der gesamte programmablauf blockiert und er reagiert auf keine Taste mehr.
    Wie oben geschrieben, ich könnte ihn 100 mal vor und zurückfahren lassen. Aber sobald ich ihn einmal drehen lasse reagiert er auf keine Taste mehr.
    Mein RP6 YouTube Kanal
    Abonnieren & Kommentieren

    http://www.youtube.com/user/MyRP6

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    11.12.2010
    Beiträge
    147
    Ok...aus irgendeinem Grund steht in der Slave vom RP6 bei move und bei rotate am ende false. Wenn ich jetzt mein Programm mit rotate true schreibe tut er dies zwar, aber danach reagiert er auf keine Taste mehr.

    Wenn ich allerdings wie in der Slave steht, false dahinter schreibe, funktioniert es. Er rotiert und reagiert auf die Tasten, genau wie er es soll.

    Hier nochmal der Code:
    Code:
    #include "RP6ControlLib.h"     
    #include "RP6I2CmasterTWI.h"    
    #include "RP6Control_I2CMasterLib.h" 
    
    
    
    
    
    int main(void) 
    { 
       initRP6Control();  
        
      
       I2CTWI_initMaster(100);  
    
    
    
       setLEDs(0b1111); 
    
       mSleep(1000); 
       setLEDs(0b0000); 
        
       I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true); 
       I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true); 
      
    
    
      void I2C_requestedDataReady(uint8_t dataRequestID) 
    { 
       checkRP6Status(dataRequestID); 
    } 
    while(true)
    {
    uint8_t key = getPressedKeyNumber(); 
    	{
    	if(key == 5)
    	{
    		changeDirection(FWD);
    		moveAtSpeed(100,100);
    	}
    	if(key == 4)
    	{
    	changeDirection(BWD);
    	moveAtSpeed(100,100);
    	}
    	if(key == 1)
    	{
    	rotate(130,RIGHT,50,false);
    
    	}
    	if(key == 3)
    	{
    	rotate(130,LEFT,50,false);
    	}
    	if(key == 2)
    	{
    	moveAtSpeed(0,0);
    	}
    	
    
    	}
    
    	
    	task_I2CTWI();
    	
    
      }
       return 0; 
    }
    @ Momo2712: Versuchs mal mit rotate 0 anstatt 1 bzw. mit false anstatt true, kann gut sein das du das selbe Problem hast.
    Mein RP6 YouTube Kanal
    Abonnieren & Kommentieren

    http://www.youtube.com/user/MyRP6

  9. #19
    Neuer Benutzer
    Registriert seit
    19.12.2010
    Ort
    21439
    Beiträge
    2

    Problem beim Kompilieren

    Hi Leute,

    ich habe ein Problem bei mit dem I2C-Bus Programm.
    Zum testen habe ich versucht, das Beispielprogramm \RP6BASE_EXAMPLES\RP6Base_I2CSlave.c zu kompilieren und auf den RP6 zu laden.

    Jedoch bekomme ich immer die Fehler:
    Code:
    > "make.exe" all
    
    -------- begin --------
    avr-gcc (WinAVR 20100110) 4.3.3
    Copyright (C) 2008 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.
    
    
    Size before:
    AVR Memory Usage
    ----------------
    Device: atmega32
    
    Program:    6904 bytes (21.1% Full)
    (.text + .data + .bootloader)
    
    Data:        246 bytes (12.0% Full)
    (.data + .bss + .noinit)
    
    
    
    
    Compiling: main-base.c
    avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main-base.lst -I../RP6Lib -I../RP6Lib/RP6base -I../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/main-base.o.d main-base.c -o main-base.o
    
    Linking: main-base.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main-base.o -I../RP6Lib -I../RP6Lib/RP6base -I../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/main-base.elf.d main-base.o ../RP6Lib/RP6base/RP6RobotBaseLib.o ../RP6Lib/RP6common/RP6uart.o --output main-base.elf -Wl,-Map=main-base.map,--cref    -lm
    main-base.o: In function `getCommand':
    C:\RP6\Base/main-base.c:307: undefined reference to `I2CTWI_writeRegisters'
    C:\RP6\Base/main-base.c:307: undefined reference to `I2CTWI_writeBusy'
    C:\RP6\Base/main-base.c:309: undefined reference to `I2CTWI_writeRegisters'
    C:\RP6\Base/main-base.c:310: undefined reference to `I2CTWI_writeRegisters'
    C:\RP6\Base/main-base.c:311: undefined reference to `I2CTWI_writeRegisters'
    C:\RP6\Base/main-base.c:312: undefined reference to `I2CTWI_writeRegisters'
    C:\RP6\Base/main-base.c:313: undefined reference to `I2CTWI_writeRegisters'
    main-base.o:C:\RP6\Base/main-base.c:314: more undefined references to `I2CTWI_writeRegisters' follow
    main-base.o: In function `task_commandProcessor':
    C:\RP6\Base/main-base.c:361: undefined reference to `setLEDs'
    main-base.o: In function `task_updateRegisters':
    C:\RP6\Base/main-base.c:237: undefined reference to `I2CTWI_readBusy'
    C:\RP6\Base/main-base.c:239: undefined reference to `I2CTWI_readRegisters'
    C:\RP6\Base/main-base.c:240: undefined reference to `I2CTWI_readRegisters'
    C:\RP6\Base/main-base.c:241: undefined reference to `I2CTWI_readRegisters'
    C:\RP6\Base/main-base.c:242: undefined reference to `I2CTWI_readRegisters'
    C:\RP6\Base/main-base.c:243: undefined reference to `I2CTWI_readRegisters'
    main-base.o:C:\RP6\Base/main-base.c:244: more undefined references to `I2CTWI_readRegisters' follow
    main-base.o: In function `task_updateRegisters':
    C:\RP6\Base/main-base.c:269: undefined reference to `I2CTWI_dataWasRead'
    C:\RP6\Base/main-base.c:269: undefined reference to `I2CTWI_dataReadFromReg'
    main-base.o: In function `signalInterrupt':
    C:\RP6\Base/main-base.c:92: undefined reference to `I2CTWI_dataWasRead'
    main-base.o: In function `task_MasterTimeout':
    C:\RP6\Base/main-base.c:419: undefined reference to `setLEDs'
    C:\RP6\Base/main-base.c:423: undefined reference to `setLEDs'
    main-base.o: In function `main':
    C:\RP6\Base/main-base.c:444: undefined reference to `setLEDs'
    C:\RP6\Base/main-base.c:446: undefined reference to `setLEDs'
    C:\RP6\Base/main-base.c:448: undefined reference to `I2CTWI_initSlave'
    main-base.o: In function `motionControlStateChanged':
    C:\RP6\Base/main-base.c:151: undefined reference to `isMovementComplete'
    make.exe: *** [main-base.elf] Error 1
    
    > Process Exit Code: 2
    > Time Taken: 00:00
    Ich habe die neuste Version der Librarys (Version 20080915) und exakt das Beispielprogramm genommen, ohne etwas zu verändern.


    Die Antwort wird wahrscheinlich kurz, da der Fehler bei mir liegt, ich weiß aber nicht wo?!


    Vielen Dank

    Ich

  10. #20
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @Ich:
    Zum testen habe ich versucht, das Beispielprogramm \RP6BASE_EXAMPLES\RP6Base_I2CSlave.c zu kompilieren ...
    Laut Ausdruck kompilierst du ein Programm namens "main-base.c" und nicht das RP6Base_I2CSlave.c.
    Und das Programm main-base.c kennt wohl nicht die I2C-Library.

    Gruß Dirk

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test