PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 Überstromereignis



bugmenot
26.12.2010, 15:13
Der RP6 hält nach einigen Sekunden alle Motoren an, lässt die vier roten LEDs blinken und gibt folgendes aus:


##### EMERGENCY SHUTDOWN #####
##### ALL OPERATIONS STOPPED TO PREVENT ANY DAMAGE! #####

### ENCODER (OR MOTOR) MALFUNCTION! ###
Affected channel:LEFT!

(s. task_motorControl() function in RP6Lib!)
You need to check Encoder/Motor assembly (or your software).

The Robot needs to be resetted now.

Das hier ist mein Programmcode:


#include "RP6RobotBaseLib.h"

#include "RP6I2CmasterTWI.h"

#define SRF02 0xE2

uint8_t srfbuffer[2];
uint16_t distance = 200;

void obstacle(void)
{
moveAtSpeed(0,0);
}


// Main:

int main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(1000);
setLEDs(0b100100);
I2CTWI_initMaster(100);
moveAtSpeed(100,100);

// Main loop
while(true)
{
task_motionControl();
task_ADC();

I2CTWI_transmit2Bytes(SRF02, 0, 81);
mSleep(65);
I2CTWI_transmitByte(SRF02, 2);

I2CTWI_readBytes(SRF02, srfbuffer, 2);
distance = (srfbuffer[0] << 8) + srfbuffer[1];

if( (distance < 50))
obstacle();

//writeString_P("\n distance:");
//writeInteger(distance,DEC);

mSleep(500);

}

return 0;
}

Wenn ich moveAtSpeed(100,100) durch moveAtSpeed(0,100) ersetze passiert dasselbe, nur dass der Affected Channel dann RIGHT ist.

Das Selftest-Programm läuft einwandfrei, d.h. ein Hardwarefehler ist auszuschliessen.

Dasive
26.12.2010, 16:14
Ich hab Ihn seit dem 24. kann aber glaube ich helfen:
Du musst "powerON();" aufrufen (ich glaube um die Motorkomponenten mit Strom zu versorgen)

Tu das am besten nach "initRobotBase();", da ist es kein Problem.

Steht glaub ich irgendwo in ner PFD Datei (Ist kein Überstromereigniss, soweit ich weiss)