Hallo zusammen
Ich habe ein Problem mit dem Initialisieren von Arrays und Strings
(sprich char-Arrays), das ich mir mit besten Willen nicht erklären kann.
Ich möchte Arrays in der Form
1 | int i[] = {1,2,3,4,5};
|
2 | char* s = "Hello World!";
|
initialiesieren. Dies funkioniert aber nicht. Die Arrays sind nacher mit
Nullen oder irgendwelchen willkürlichen Zeichen gefüllt. Wenn ich die
Arrays nur definiere und sie später im Code elementweise befülle,
funktioniert alles wie erwartet.
Hintergrund ist die Implementierung der USART-Schnittstelle am
Atmega1284p.
Ich habe das Gefühl, ich stehe auf dem Schlauch oder seh den Wald vor
lauter Bäumen nicht. Muss ich irgend ein bestimmtes File includen oder
dem Compiler bestimmte Optionen übergeben, damit die Initialisierung wie
oben funktioniert? Leider finde ich auch in Beispielen und Anleitungnen
im Netz keinen hilfreichen Hinweis.
Ich bedanke mich schon mal für eure Hilfe!
Gruss Rafael
Code-Ausschnitte (auf das wesentliche gekürzt):
main.c
1 | #include <avr/io.h>
|
2 | #include "usart.h"
|
3 |
|
4 | int main (void){
|
5 | usart0_init();
|
6 | char s[] = "Hello World!";
|
7 | usart0_puts(s);
|
8 | }
|
usart.c (usart0_putc() funktioniert einwandfrei)
1 | void usart0_puts(char* s)
|
2 | {
|
3 | uint8_t i = 0;
|
4 | while( s[i] != '\0' )
|
5 | {
|
6 | usart0_putc(s[i]);
|
7 | i++;
|
8 | }
|
9 | return;
|
10 | }
|
Makefile
1 | # Projektname
|
2 | PROJECT = ng_quad_MEGA1284p_V0_1
|
3 | # Quelldateien
|
4 | SOURCES = main.c usart.c
|
5 | # Compiler
|
6 | CC = avr-gcc
|
7 | # Objcopy
|
8 | OBJCOPY = avr-objcopy
|
9 | # AVR-Modell
|
10 | MMCU = atmega1284p
|
11 | # Frequenz
|
12 | HZ = 20000000
|
13 |
|
14 | # Compiler-Flags
|
15 | CFLAGS=-mmcu=$(MMCU) -DF_CPU=$(HZ) -Os -Wall -std=c99
|
16 | # -mmcu MCU-Typ
|
17 | # -DF_CPU MCU-Takt
|
18 | # -Os Optimisation "s"
|
19 | # -Wall show all warnings
|
20 | # -std=c99 C99-Standard
|
21 |
|
22 |
|
23 | # Erzeuge hex-File
|
24 | $(PROJECT).hex: $(PROJECT).out
|
25 | $(OBJCOPY) -j .text -O ihex $(PROJECT).out $(PROJECT).hex
|
26 |
|
27 | # Erzeuge out-files
|
28 | $(PROJECT).out: $(SOURCES)
|
29 | $(CC) $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES)
|