Hallo, ich versuche gerade die UART Schnittstelle eines ATMega32 anzusprechen. ein Zeichen kann ich bereits versenden, allerdings noch keinen String. kann mir jemand sagen was ich falsch mache? Bin absolute Anfängerin... es kommt golgende Fehlermeldung: ../main.c:73:4: warning: implicit declaration of function ‘uart_putc’ Building target: Test.elf Invoking: AVR C++ Linker avr-g++ -Wl,-Map,Test.map,--cref -mrelax -Wl,--gc-sections -mmcu=atmega32 -o "Test.elf" ./main.o ../main.c: At top level: ../main.c:79:6: warning: return type of ‘main’ is not ‘int’ ../main.c: In function ‘main’: ../main.c:82:2: warning: implicit declaration of function ‘uart_init’ ./main.o: In function `uart_puts': main.c:(.text.uart_puts+0x16): undefined reference to `uart_putc' ./main.o: In function `main': main.c:(.text.main+0x6): undefined reference to `uart_init' collect2: ld returned 1 exit status make: *** [Test.elf] Error 1 **** Build Finished **** #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> void ADC_Init(void) { void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer*/ while ( !( UCSRA & (1<<UDRE)) ); /* Put data into buffer, sends the data*/ UDR = data; } void uart_puts( char *s ) { /* while *s != '\0' so unequally "string-end characters (terminator) */ while (*s) { uart_putc(*s); s++; } } void main(void) { USART_Init(0x67); uart_init(); while(1) { USART_Transmit('B'); _delay_ms(10000); uart_puts("Hallo"); } }
wo ist uart_putc definiert? Hast du aus verschieden quellen zusammenkopiert?
ja, ich muss gestehen dass ich aus verschieden quellen zusammen kopiert habe. den uart mit init_uart() initialiesieren brachte aber auch nichts deshalb bin ich etwas verwirrt
Simone schrieb: > ja, ich muss gestehen dass ich aus verschieden quellen zusammen kopiert > habe. Und dabei alles wichtige vergessen. Nimm Dir doch mal ein fertiges Beispiel und versuch das zu verstehen, mit Deinen Fragmenten kommst Du nicht weiter, das ist nichtmal ein richtiges Programm.
wo gibt es ein fertiges beispiel? ich versuche es ja mit praktischen Beispielen zu verstehen...
Simone schrieb: > ich versuche es ja mit praktischen Beispielen zu verstehen... das ist schlecht. Beim selber schreiben lernt man am meisten.
Simone schrieb: > ich versuche gerade die UART Schnittstelle eines ATMega32 anzusprechen. > ein Zeichen kann ich bereits versenden, allerdings noch keinen String. Wie versendest du denn ein Zeichen?
Hier ist alles wunderbar erklärt. Auch die Funktionen von puts, putc und Co. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART
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.