Hallo Alle,
ein vermutlich einfaches Problem mit der Stringausgabe macht mir zu schaffen. Seit Tagen meldet mir der Compiler Warnungen, die ich durch meine Änderungen nicht korrigieren kann. Eine Auswirkung auf den Programmablauf haben sie - offensichtlich - nicht. Ich würde meinen C-Code gerne korrekt schreiben, finde aber keine Abhilfe.
Mein aktuelle Umgebung: WinXPpro Vers. 2002 SP2 und als Compiler:
Mein aktuelles Problem sind die folgenden FehlermeldungenCode:AVR Studio 4.13.557 Service Pack 1 GUI Version 4, 13, 0, 557 AVR Simulator 1, 0, 2, 0 ATMEGA168 209 Operating System Major 5 Minor 1 PlatformID 2 Build 2600 Service Pack 2 Plugins: AvrPluginAvrAsmObject 1, 0, 0, 46 AvrPluginavrgccplugin 1, 0, 0, 9 Stk500Dll 1, 0, 1, 0
Kernighan/Ritchie haben ebensowenig geholfen wie (m)eine experimentelle Reparaturorgie. Kann mir bitte jemand erzählen, wo der Fehler liegen könnte?Code:../m168D_inf_10x63.c: In function 'info02_irDME': ../m168D_inf_10x63.c:46: warning: implicit declaration of function 'sendUSART' ../m168D_inf_10x63.c: At top level: ../m168D_inf_10x63.c:184: warning: conflicting types for 'sendUSART' ../m168D_inf_10x63.c:46: warning: previous implicit declaration of 'sendUSART' was here
Der beanstandete Aufruf erfolgt hier - im ersten sendUSART-Aufruf; mecho[0..2] ist in einem common-modul als volatile uint8_t mecho [3] deklariert:
Die Routine sendUSART (für die ... warning: conflicting types for 'sendUSART' ... gemeldet wird) lautet:Code:// ================================================================================= void info02_irDME(void) // Ausgabe von irDME-Nettowerten und anderen Werten (Servo, GPD) { char wortadc[12]; sendUSART(" i1-4\t"); // Ausgabezeile eröffnen utoa(mecho[0], wortadc, 10); //aktuellen Rampensteuerwert ... sendUSART(wortadc); // ... ausgeben. sendUSART("\t"); // Tabulator utoa(mecho[1], wortadc, 10); //aktuellen Rampensteuerwert ... sendUSART(wortadc); // ... ausgeben. sendUSART("\t"); // Tabulator utoa(mecho[2], wortadc, 10); //aktuellen Rampensteuerwert ... sendUSART(wortadc); // ... ausgeben sendUSART("\t"); // Tabulator senden sendUSART("Isvs1\t"); // Bezeichner für Wert utoa(Isvs1, wortadc, 10); //aktuellen Servosteuerwert ... sendUSART(wortadc); // ... ausgeben sendUSART("\t"); // Tabulator senden sendUSART("most12\t"); // Bezeichner für Wert utoa(most12, wortadc, 10); //aktuellen Servosteuerwert ... sendUSART(wortadc); // ... ausgeben sendUSART("\t"); // Tabulator senden } /* ============================================================================== */
... und zu meiner Erbauung wird diese Routine (und ähnliche) nicht beanstandet:Code:/* ============================================================================== */ void sendUSART(char *s) // *s funktiniert wie eine Art Array - auch bei // einem String werden die Zeichen (char) einzeln ausgelesen - und auf die // Sendeschnittstelle übertragen { while(*s) { sendchar(*s); s++; } } /* ============================================================================== */
Danke schon mal jetzt für eure HilfeCode:// ================================================================================= void info01(void) // Startinfo #####>>>>> steht IMMER im main-Code-modul { sendUSART ("\r\r\tPm168D/20 MHz\tm168D_10x61-64/614 13jul08 1848\r\r\n"); } /* ============================================================================== */







Zitieren

Lesezeichen