strcpy kopiert nicht?

Gast #447629
Lesenswert?

Servus Leute!
Häng jetzt den ganzen Vormittag vor meinem STK500 mit ATMEGA8515 und 
avr-gcc v4.1.
Probleme gibts bei folgendem:

int main( void )
{
  // initialization
  init_USART();

  u08 led, i;

  DDRB=0xff;            /* use all pins on PortB for output */
  led=1;
  char text1[5];

  do
  {
      //hier a bisserl LED-blabla

    USART_Transmit(1);
    strcpy(text1,"hal");

    USART_Transmit(text1[0]);_delay_ms(10);
    USART_Transmit(text1[1]);_delay_ms(10);
    USART_Transmit(text1[2]);_delay_ms(10);

                // ohne strcpy --> funktioniert
    text1[0]='H';text1[1]='A';text1[2]='L';text1[3]=0;
    USART_Transmit(text1[0]);_delay_ms(10);
    USART_Transmit(text1[1]);_delay_ms(10);
    USART_Transmit(text1[2]);_delay_ms(10);

    USART_Transmit(30);_delay_ms(10);
    USART_Transmit(62);_delay_ms(10);
  }
  while(1);
}

Ziel ist es eigentlich nur einen "hal" nach text1 zu kopieren und das 
auf der USART auszugeben. Wenn ich das mit strcpy(text1,"hal"); mache 
kann ich nur 3x 0xff empfangen. Das zweite mal mit der "manuellen 
Zuweisung" klappts und ich kann "HAL" empfangen. 30 und 62 und 1 wird 
auch korrekt übertragen.

Warum funktioniert die strcpy()-Funktion nicht?
Mit
#include "/usr/avr/include/string.h"
hab ich die String.h eingebunden.

Hoffentlich fällt euch was ein,
 Danke schon mal, Sebi
Gast #447637
Lesenswert?

Danke, habs grad mal ausprobiert:
strcpy(text1,"hal\0")
ergibt auch nix anderes, ich dachte auch die \0 setzt eh strcpy() dran.

strncpy(text1,"hal",3)
ergibt auch nur 3x 0xff

ich hab jetzt auch
char text2[]="bla";
strcpy(text1, text2);
probiert, aber auch das liefert wieder 3x 0xff.

Mhh, das kann doch nicht so schwer sein, oder?
Gast #447795
Lesenswert?

So,
wen's interessiert, hab das Problem nun endlich gelöst:
Ich hatte die Makefile von einem supersimplen Beispiel genommen, 
allerdings benötigte man für dieses Beispiel wohl nicht den .data 
Bereich. So stand bei mir
$(OBJCOPY) -j .text -O ihex main.out usart.hex
statt
$(OBJCOPY) -j. data -j .text -O ihex main.out usart.hex

Ich seh schon, so ein Makefile kann sich also auch noch als zusätzliche 
Fehlerquelle ergeben...

Viele Grüße
  Sebi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren