Hallo Leute,
ist mir ja fast schon peinlich wieder so ein Thread mit undefined
reference to xxx aufzumachen, aber ich seh vor lauter Bäumen den Wald
nicht mehr :(
Also ich verwende WinAvr (Programmers Notepad), um meinen Atmega16 zu
programmieren. Hab mir jetzt ein völlig neues Projekt angelegt mit
folgenden Dateien:
main.c
main.h
uart.c
uart.h
defines.h
Wie zu erkennen ist, gibt es zu jeder *.c Datei eines *.h Datei (außer
bei defines.h)
Das sieht nun so aus (wie gesagt noch total Leer)
main.c
1 | #include <main.h> // Headerdatei von main.c
|
2 |
|
3 | int main(void){
|
4 |
|
5 | /////////////////////////
|
6 | /////////////////////////
|
7 | /////////////////////////
|
8 | /// Initialisierungen der Ports
|
9 |
|
10 | DDRA = 0x00; // Port A als Eingang
|
11 | PORTA = 0xFF; // interne Pull-ups für Port A aktivieren
|
12 |
|
13 | DDRB = 0x00; // Port A als Eingang
|
14 | PORTB = 0xFF; // interne Pull-ups für Port A aktivieren
|
15 |
|
16 | DDRC = 0x00; // Port A als Eingang
|
17 | PORTC = 0xFF; // interne Pull-ups für Port A aktivieren
|
18 |
|
19 | DDRD = 0xFF; // Gesamter Port C als Ausgang
|
20 | PORTD = 0xFF; // Port C auf 1 setzten, damit LED's an sind
|
21 |
|
22 | Inituart(); // Die UART Schnittstelle initialisieren
|
23 |
|
24 | while (1)
|
25 | {
|
26 |
|
27 | }
|
28 | }
|
main.h
1 | #ifndef DEF_main_H
|
2 | #define DEF_main_H
|
3 |
|
4 | #include <defines.h>
|
5 |
|
6 | / Main Funktion
|
7 | int main(void);
|
8 |
|
9 | // Initialisiert die UART Schnittstelle
|
10 | void Inituart(void);
|
11 |
|
12 | #endif
|
uart.c
1 | #include <uart.h> // Headerdatei von uart.c
|
2 |
|
3 | //---------------------------------------------------------------------------
|
4 | // InitUART
|
5 | //
|
6 | // functiondescription: Initialisiert die UART Schnittstelle
|
7 | //
|
8 | // hand over:
|
9 | // - input parameters: nothing
|
10 | // returns:
|
11 | // - return parameter: nothing
|
12 | //---------------------------------------------------------------------------
|
13 |
|
14 |
|
15 | void Inituart(void)
|
16 | {
|
17 | UCSRB=0x6C; // 8N1, RX und TX Enable, RX und TX Interrupt
|
18 | UCSRC=0x86; // 8N1; Asynchron; kein Paritätsbit
|
19 | UBRRH = 0; // Für 9600Baud@16Khz
|
20 | UBRRL = 103; // Für 9600Baud@16Khz
|
21 | }
|
uart.h
1 | #ifndef DEF_uart_H
|
2 | #define DEF_uart_H
|
3 |
|
4 | #include <defines.h>
|
5 |
|
6 | // Initialisiert die UART Schnittstelle
|
7 | void Inituart(void);
|
8 |
|
9 | #endif
|
und defines.h
1 | #ifndef DEF_defines_H
|
2 | #define DEF_defines_H
|
3 |
|
4 | #include <avr/io.h> // Zugriff auf die I/O's des Controllers
|
5 |
|
6 | #endif
|
Die Datein sind auch alle in dem Projekt in Programmers Notepad
eingebunden, aber jetzt bekomme ich doch tatsächlich die Fehlermeldung
"/main.c:62: undefined reference to `Inituart'"
Ich weiß was die Meldung bedeuten soll, deshalb versteh ich hier echt
nicht wo das Problem liegt ?
Danke schon mal