Hallo zusammen Ich habe das Buch "Make: AVR Programming" und habe nun versucht das Kapitel 5 zu programmieren. Leider bleibe ich immer beim Kompilieren an den u.g. Fehlern hängen, die ich mir nicht erklären kann. Mein Code ist: #define F_CPU 3686400 #include <avr/io.h> #include <util/delay.h> #include "pinDefines.h" #include "USART.h" int main(void) { char serialChar; initUSART(); printString("Hello World\r\n"); /* Replace with your application code */ while (1) { serialChar = receiveByte(); transmitByte(serialChar); } } Ich bekomme die folgenden Fehler im Atmel Studio 7 ausgegeben: Severity Code Description Project File Line Error #error "setbaud.h requires F_CPU to be defined" USARTTest c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\uti l\setbaud.h 113 Error #error "F_CPU must be a constant value" USARTTest c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\uti l\setbaud.h 121 Warning #warning "UBRR value overflow" [-Wcpp] USARTTest c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\uti l\setbaud.h 235 Error 'UBRR0H' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 24 Message each undeclared identifier is reported only once for each function it appears in USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 24 Error 'F_CPU' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 24 Error 'UBRR0L' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 25 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 29 Error 'U2X0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 29 Error 'UCSR0B' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'TXEN0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'RXEN0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'UCSR0C' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSZ01' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSZ00' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 39 Error 'UDRE0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 39 Error 'UDR0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 40 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 44 Error 'RXC0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 44 Error 'UDR0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 45 Der Code ist u.a. hier zu finden: https://github.com/hexagon5un/AVR-Programming/blob/master/Chapter05_Serial-IO/serialLoopback Kompilieren mit avr-gcc scheint zu funktionieren.
Öffne mal die Properties vom Projekt (Alt+F7), dann: Toolchain -> AVR GNU C Compiler -> Symbols Bei "Defined Symbols" fügst du dann F_CPU hinzu, am besten für alle Konfigurationen (Liste: "Configuration", "All Configurations"). Das #define kannst du dir dann sparen.
Danke, wenn ich das mache, bekomme ich "nur" noch diese Meldungen: Severity Code Description Project File Line Warning #warning "Baud rate achieved is higher than allowed" [-Wcpp] USARTTest c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\uti l\setbaud.h 222 Warning #warning "UBRR value overflow" [-Wcpp] USARTTest c:\program files (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\uti l\setbaud.h 235 Error 'UBRR0H' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 24 Message each undeclared identifier is reported only once for each function it appears in USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 24 Error 'UBRR0L' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 25 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 27 Error 'U2X0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 27 Error 'UCSR0B' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'TXEN0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'RXEN0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 32 Error 'UCSR0C' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSZ01' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSZ00' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 33 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 39 Error 'UDRE0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 39 Error 'UDR0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 40 Error 'UCSR0A' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 44 Error 'RXC0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 44 Error 'UDR0' undeclared (first use in this function) USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 45 Warning control reaches end of non-void function [-Wreturn-type] USARTTest J:\Eigene Daten\Gerrit\Documents\Atmel Studio\7.0\USARTTest\USARTTest\USART.c 46
Du musst denn UART schon vorkonfigurieren, sonst weis er ja z.B. nicht einmal mit welcher Geschwindigkeit er senden muss. Schau dir mal das an: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART Da ist alles schön erklärt. Mfg, Tropaion
Fabian P. schrieb: > Du musst denn UART schon vorkonfigurieren, sonst weis er ja z.B. nicht > einmal mit welcher Geschwindigkeit er senden muss. In USART.h wird als Standard-Baudrate 9600 gewählt falls nicht anders definiert. @Gerrit: Die USART.h hast du aber im Projektverzeichnis liegen, oder?
:
Bearbeitet durch User
Wenn ich den Atmega 168 auswähle, kann ich kompilieren. Beim Atmega8 nicht. Woran liegt das?
Tja, Fragen über Fragen... Ohne Datenblatt wird das nichts. Mit Datenblatt wist du feststellen, daß beim Mega8 all die oben aufgeführten Register anders heißen. Oliver
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.