Re: Programm arbeitet nicht Kategorie: Programmierung C (von Jenny - 28.10.2010 12:18) | ||
Als Antwort auf Programm arbeitet nicht von Jenny - 13.10.2010 11:19 | ||
| ||
> Hallo an alle, > > ich habe eine Problem mit der Programmierung. Ich habe meine Programme > geschrieben, kompiliert und auch übertragen, allerdings macht der ROBI > nicht das was er sollte. > > Das Programm besteht im Wesentlichen darin, einen Sensor während der Fahrt > auszulesen. > > Beide Programme funktionieren, beim verschachteln der beiden Programme > ineinander geht garnichts. > > Wieso ist das so? > > Programm Sensor auslesen komoplett: > > void a_auslesen(void) > { > > PRO_BOT128_INIT(); > I2C_Init(I2C_100kHz); > > word adresse; > adresse=0x02; > > int x_long,y_long,z_long; > unsigned int x_short,y_short,z_short; > float x,y,z; > > I2C_Start(); > I2C_Write(0x70); > I2C_Write(adresse<<8); > I2C_Stop(); > > I2C_Start(); > I2C_Write(0x71); > > x_short=I2C_Read_ACK(); > x_long=I2C_Read_ACK(); > > x_long=(((x_long)*4)+(x_short/64)); > > if (x_long > 511) > { > x_long= (x_long - 511); > x_long= (511 - x_long); > x_long= (x_long*(-1)); > > x= (x_long * 0.00390625); > } > else > { > x= (x_long * 0.00390625); > } > > y_short=I2C_Read_ACK(); > y_long=I2C_Read_ACK(); > > y_long=(((y_long)*4)+(y_short/64)); > > if (y_long > 511) > { > y_long= (y_long - 511); > y_long= (511 - y_long); > y_long= (y_long*(-1)); > > y= (y_long * 0.00390625); > } > else > { > y= (y_long * 0.00390625); > } > > z_long=I2C_Read_ACK(); > z_short=I2C_Read_NACK(); > > z_long=(((z_long)*4)+(z_short/64)); > > if (z_long > 511) > { > z_long= (z_long - 511); > z_long= (511 - z_long); > z_long= (z_long*(-1)); > > z= (z_long * 0.00390625); > } > else > { > z= (z_long * 0.00390625); > } > > I2C_Stop(); > > > Msg_WriteFloat(x); > Msg_WriteChar(13); > > Msg_WriteFloat(y); > Msg_WriteChar(13); > > Msg_WriteFloat(z); > Msg_WriteChar(13); > > > } > > Programm zum Fahren: > > void robi_fahren(void) > { > > DRIVE_ON(); > > GO_TURN(60,0,180); > GO_TURN(0,180,160); > GO_TURN(60,0,180); > GO_TURN(0,180,160); > GO_TURN(60,0,180); > GO_TURN(0,180,160); > GO_TURN(60,0,180); > GO_TURN(0,180,160); > GO_TURN(60,0,180); > GO_TURN(0,180,160); > > DRIVE_OFF(); > } > > Wenn ich nun zusammenfasse: > > void main (void) > { > > PRO_BOT128_INIT(); > I2C_Init(I2C_100kHz); > DRIVE_INIT(); > > robi_fahren(); > a_auslesen(); > > } > Jetzt macht er nichts. Wo liegt mein Fehler?? > > �ber eure Hilfe wäre ich sehr dankbar. > > Gru� > Jenny >>> Hallo noch mal an alle, >>> >>> kann es sein, dass ich mein Problem mithilfe von Multithreads bearbeiten >>> kann? >>> Gru� >>> Jenny | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum