Klappt setMotorDir nicht mit der M32?
Druckbare Version
Ne, das klappt nicht. Ich hab's mal eingebaut, allerdings ungetestet und deshalb ohne Gewähr:
Dazu muss man allerdings einen neuen Befehl einbauen in RP6Base_I2CSlave.c, RP6Control_I2CMasterLib.c und RP6Control_I2CMasterLib.h und eine neue Hex-Datei für den RP6 erzeugen.Code:#include "RP6ControlLib.h"
//#include "RP6ControlServoLib.h"
#include "RP6uart.h"
#include "RP6I2CmasterTWI.h"
#include "RP6Control_I2CMasterLib.h"
void moveAtSpeed3(uint8_t desired_speed_left, uint8_t desired_speed_right, uint8_t dir_left, uint8_t dir_right)
{
moveAtSpeed(desired_speed_left, desired_speed_right);
setMotorDir(dir_left, dir_right); // neue Funktion
}
int main(void)
{
initRP6Control();
moveAtSpeed3(150,150,1,0);
while(1)
{
}
return 0;
}
Danke für deine bemühungen aber leider:
RP6Control_I2CMasterLib.c:347: error: 'CMD_SET_MOTOR_DIR' undeclared (first use in this function)
RP6Control_I2CMasterLib.c:347: error: (Each undeclared identifier is reported only once
RP6Control_I2CMasterLib.c:347: error: for each function it appears in.)
Zeile 347:
I2CTWI_transmit4Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_MOTOR_DIR, dir_left, dir_right );
Das Kommando 'CMD_SET_MOTOR_DIR' wird in der neuen Datei RP6Control_I2CMasterLib.h definiert. Das .txt muss man entfernen und vermutlich ein make all ausführen.
#define CMD_POWER_OFF 0
#define CMD_POWER_ON 1
#define CMD_CONFIG 2
#define CMD_SETLEDS 3
#define CMD_STOP 4
#define CMD_MOVE_AT_SPEED 5
#define CMD_CHANGE_DIR 6
#define CMD_MOVE 7
#define CMD_ROTATE 8
#define CMD_SET_ACS_POWER 9
#define CMD_SEND_RC5 10
#define CMD_SET_WDT 11
#define CMD_SET_WDT_RQ 12
#define CMD_SET_MOTOR_DIR 13 // mic 16.10.2011
#define ACS_PWR_OFF 0
#define ACS_PWR_LOW 1
#define ACS_PWR_MED 2
#define ACS_PWR_HIGH 3
Kompilierung erfolgreich beendet.
Aber das Programm startet nicht
FUNKTIONIERT !!!! mic du bist ein genie ;->
Du meinst jetzt aber nicht mein kleines Dummyprogramm oben? Das diente nur als Kompiliertest und hat keine echte Funktion.Zitat:
Aber das Programm startet nicht
Ich vermute mal, dass du auch ein eigenes m32-Programm hast in das du die neue Funktion einbauen kannst. Wie schon geschrieben must du auch die RP6-Slave-Datei austauschen, neu kompilieren und auf den RP6 laden.
Prima. :)
Es gibt auch changeDirection in der normalen Lib - die Richtung von einem Motor wechseln geht da einfach indem man
zwischen FWD und LEFT oder FWD und RIGHT oder ähnlich hin und her wechselt
(FWD und LEFT usw. sind ja nur leichter zu verstehende Namen dafür in welche Richtung sich die Motoren nun drehen sollen damit man direkt weiss in welche Richtung sich der ganze Roboter bewegen wird... ).
MfG,
SlyD