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
Eventuell liegts an der String Terminierung. Probier mal: strcpy(text1,"hal\0"); bzw. strncpy(text1,"hal",3);
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?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.