Hi, ich bin vor kurzem auf das AVR-Studio 5 umgestiegen und habe nun folgendes Problem "ERROR undefined reference to 'uart0init'". Im AVR-Studio 4 funktionierte es mit einem externen Makefile. Alle Dateien befinden sich im gleichen Verzeichnis und ich habe sie im Studio5 im Solution Explorer hinzugefügt. Hat jemand eine Idee woran es liegen könnte. Umgestiegen weil ATmega88PA vom Studio 4 nicht unterstützt wird nur asm. Gruß Jörg
Ist ein linker problem, erzeugt er obj files? vielleicht tut er es auch weg optimieren? benutzt du aktiv die funktion?
Ja, die Funktion wird benutzt. Aufbau:
1 | //uart0.h
|
2 | void uart0init(uint32_t baudrate, uint8_t bits, parityMode parity, uint8_t stopbits); |
1 | //uart0.c
|
2 | void uart0init(uint32_t baudrate, uint8_t bits, parityMode parity, uint8_t stopbits) |
3 | {
|
4 | //implementation
|
5 | }
|
1 | #include "uart0.h" |
2 | int main( void ) |
3 | {
|
4 | uart0init(9600, 8, NONE_PARITY, 1); |
5 | }
|
obj files werden erstellt. Im Makfile steht die uart0.c auch drin.
In deiner .h Datei deklarierst du schon Variablennamen in dem Funktionsheader (nur Dateitypen!)? Ist die Funktion dann nicht doppelt deklariert? Versuch das mal ganz schnell zu ändern.
Christian H. schrieb: > In deiner .h Datei deklarierst du schon Variablennamen in dem > Funktionsheader (nur Dateitypen!)? Ist die Funktion dann nicht doppelt > deklariert? Versuch das mal ganz schnell zu ändern. Sorry, aber das ist Unsinn. Jörg schrieb: > Im Makfile steht die uart0.c auch drin. Und hast du das Studio5 auch so eingestellt, dass das externe Makefile verwendet wird? Jörg schrieb: > Umgestiegen weil ATmega88PA vom Studio 4 nicht unterstützt wird nur asm. Wie bitte?
Also //uart0.h void uart0init(uint32_t , uint8_t , parityMode , uint8_t ); hilft jedoch leider nichts.
Ist das vom Studio 5 erzeugte Makefile also gehe ich mal davon aus des es verwendet wird. In Studio 4 funktierte es nur für einen ATmega88P ohne Fehler.
Jörg schrieb: > Ist das vom Studio 5 erzeugte Makefile also gehe ich mal davon aus des > es verwendet wird. Dann poste doch bitte mal den kompletten Build-Output. Jörg schrieb: > In Studio 4 funktierte es nur für einen ATmega88P ohne Fehler. Was soll das heißen? Es gibt doch in Bezug auf die Software gar keinen Unterschied zwischen 88P und 88PA.
Jörg schrieb: > "ERROR undefined reference to 'uart0init'". Das ist doch nicht der einzige Fehler. Der Compiler meckert doch schon an, daß er das Headerfile nicht findet. Oder etwa nicht? mfg.
Hi, ich denke ich hab es gefunden. uart.c
1 | #define UART0
|
2 | |
3 | #if defined(UART)
|
4 | void uart0init(uint32_t baudrate, uint8_t bits, parityMode parity, uint8_t stopbits) |
5 | {
|
6 | //implementation
|
7 | }
|
8 | #endif
|
kein wunder das die nicht gefunden wurde. Jetzt bekomme ich den Fehler F_CPU nicht definiert. Gibt es im Studio 5 eine möglichkeit dies zu setzten wie im 4er? oder #define F_CPU 8000000UL Danke für die Hilfe.
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.