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:

Code:
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
Mein aktuelles Problem sind die folgenden Fehlermeldungen

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
Kernighan/Ritchie haben ebensowenig geholfen wie (m)eine experimentelle Reparaturorgie. Kann mir bitte jemand erzählen, wo der Fehler liegen könnte?

Der beanstandete Aufruf erfolgt hier - im ersten sendUSART-Aufruf; mecho[0..2] ist in einem common-modul als volatile uint8_t mecho [3] deklariert:
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
}          
/* ============================================================================== */
Die Routine sendUSART (für die ... warning: conflicting types for 'sendUSART' ... gemeldet wird) lautet:
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++; 
   } 
} 
/* ============================================================================== */
... und zu meiner Erbauung wird diese Routine (und ähnliche) nicht beanstandet:
Code:
// =================================================================================
  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");
                 
}
/* ============================================================================== */
Danke schon mal jetzt für eure Hilfe