Hallo _HP_,
da hast Du natürlich Recht, zuerst sollte man mittels avr-gcc -Wall ... schauen, was der Compiler so von sich gibt. Wenn man da nicht fündig wird, und trotzdem noch komisches Verhalten im Programm hat, kann ja mit splint weitermachen.Zitat von _HP_
Ich habe mal die Dateien der Asurolib unter die Lupe genommen, und unter den unheimlich vielen (wahrscheinlich) harmlosen Meldungen zumindest zwei gefunden, welche nicht bei avr-gcc -Wall ... reported werden:
- In diesem Fall brennt nichts an wegen AND mit 0x00, aber da sollte besser eine Zuweisung stehen ...
Code:... lcd.c:117:3: Variable dataPins used before definition An rvalue is used that may not be initialized to a value on some execution path. (Use -usedef to inhibit warning) ... ============================================== ... void SetDataLCD(unsigned char data) { unsigned char dataPins; // Pin Compatibility // Set First Nibble Data to DataPins on PCF8574 dataPins &= 0x00; <<<---- Zeile 117 dataPins |= ((data & 0x80) >> 7) << LD7; dataPins |= ((data & 0x40) >> 6) << LD6; dataPins |= ((data & 0x20) >> 5) << LD5; dataPins |= ((data & 0x10) >> 4) << LD4; ... ==============================================- Unreachable Code in Form des return 0; in main() nach dem while (1); sind wir ja gewohnt, aber in PCDemo hat sich da noch eine Stelle eingeschlichen:
Code:... PCDemo.c: (in function PCDemo) PCDemo.c:147:7: Unreachable code: break This code will never be reached on any possible execution. (Use -unreachable to inhibit warning) ... ============================================ ... switch (cmd) { case RWD_KEY : PCRwd(); break; case FWD_KEY : PCFwd(); break; case LEFT_KEY : PCLeft(); break; case RIGHT_KEY : PCRight(); break; case STOP_KEY : PCStop(); break; case ESC_KEY : return; break; <<<--- Zeile 147 } ... ============================================
Lesezeichen