-
> Was soll das tmp[16]?
für den String.
Ist lange lange her aber ich glaube der Code wurde geschrieben bevor es eine Funktion printInteger in der RP6CCLib gab.
Die macht natürlich das gleiche.
> Wo kann ich das Setzen des ADCs (ADC_Set(ADC_VREF_VCC,0) ) und das thread_delay sonst hintun?
Da wo es in Deinem Programm hinpasst?!
;-)
Auf der CCPRO Unit kannst Du - wie das Beispielprogramm auch zeigt - Multithreading benutzen d.h. während des Delays können andere Threads laufen.
MfG,
SlyD
-
Aber bei mir geht das leider nicht richtig, seit ich oben gezeigte Codezeilen drin hab, stockt das Programm ziemlich und der RP6 reagiert nur noch langsam.
Habe es gerade ganz ohne Delay gemacht, klappt wunderbar ;)
Grüße
-
So, jetzt gibts ein neues Problem.
Ich habe nun zum Register, das die M128 ausließt, die Base-LED-Zustände hinzugefügt sowie die Adresse und den Tastencode von RC5-Daten:
Code:
void getAllSensors(void)
{
RP6_readRegisters(RP6_BASE_ADR, I2C_REG_POWER_LEFT, messageBuf, 27);
mleft_power = messageBuf[0];
mright_power = messageBuf[1];
mleft_speed = messageBuf[2];
mright_speed = messageBuf[3];
mleft_des_speed = messageBuf[4];
mright_des_speed = messageBuf[5];
mleft_dist = messageBuf[6] + (messageBuf[7]<<8);
mright_dist = messageBuf[8] + (messageBuf[9]<<8);
adcLSL = messageBuf[10] + (messageBuf[11]<<8);
adcLSR = messageBuf[12] + (messageBuf[13]<<8);
adcMotorCurrentLeft = messageBuf[14] + (messageBuf[15]<<8);
adcMotorCurrentRight = messageBuf[16] + (messageBuf[17]<<8);
adcBat = messageBuf[18] + (messageBuf[19]<<8);
adc0 = messageBuf[20] + (messageBuf[21]<<8);
adc1 = messageBuf[22] + (messageBuf[23]<<8);
RC5_adr = messageBuf[24];
RC5_data = messageBuf[25];
status_leds_base = messageBuf[26];
}
Und genau dort muss ein Fehler liegen, irgendwie beim Registerlesen von den RC5-Daten. Genauer, bei Auslesen von RC5_adr. Denn wenn ich diese Zeile rausnehme, läuft mein Programm wunderbar. Habe ich diese Zeile drinnen, kommt mein Programm gerne ins stocken. Um genau zu sein, geht alles gut,bis ich einen Fahrbefehl rausgebe. Solange der RP6 sich bewegt, dauert es locker drei-vier Sekunden, bis das ACS Objekte erkennt bzw. erkennt, dass sie nicht mehr da sind.
Wär schön zu wissen, was da schief läuft...
Danke Euch