Forum: Compiler & IDEs Atmel Studio 7 not compiling


von Gerrit (Gast)


Lesenswert?

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.

von Max M. (jens2001)


Lesenswert?

Gerrit schrieb:
> #define F_CPU 3686400

Versuch mal
#define F_CPU 3686400UL

von Alexander S. (alex998)


Angehängte Dateien:

Lesenswert?

Ö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.

von Gerrit (Gast)


Lesenswert?

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

von Fabian P. (Firma: wiki.flowerhouse.at) (tropaion)


Lesenswert?

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

von Alexander S. (alex998)


Lesenswert?

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
von Oliver S. (oliverso)


Lesenswert?

Du hast einen falschen Prozessortyp ausgewählt.

Oliver

von Gerrit (Gast)


Lesenswert?

Wenn ich den Atmega 168 auswähle, kann ich kompilieren. Beim Atmega8 
nicht. Woran liegt das?

von Oliver S. (oliverso)


Lesenswert?

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
Noch kein Account? Hier anmelden.