mikrocontroller.net

Forum: Compiler & IDEs Compilermeldung unklar


Autor: Ewald Scherer (rentner62)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
AVR-Studio Vers. 4.18. µC Atmega8.
Aus dem "AVR-GCC-Tutorial/Die Timer und Zähler des AVR" habe ich 
beiliegender Code kopiert und versucht zu compilieren, dabei kommt diese 
Fehlermeldung:
PS. <avr/iomx8.h> war hier noch ausgeschaltet!!

avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 
Zeitmess_02.o -MF dep/Zeitmess_02.o.d  -c  ../Zeitmess_02.c
../Zeitmess_02.c: In function 'main':
../Zeitmess_02.c:16: error: 'TCCR0A' undeclared (first use in this 
function)
../Zeitmess_02.c:16: error: (Each undeclared identifier is reported only 
once
../Zeitmess_02.c:16: error: for each function it appears in.)
../Zeitmess_02.c:16: error: 'WGM01' undeclared (first use in this 
function)
../Zeitmess_02.c:17: error: 'TCCR0B' undeclared (first use in this 
function)
../Zeitmess_02.c:19: error: 'OCR0A' undeclared (first use in this 
function)
../Zeitmess_02.c:22: error: 'OCIE0A' undeclared (first use in this 
function)
../Zeitmess_02.c: At top level:
../Zeitmess_02.c:38: warning: 'TIMER0_COMPA_vect' appears to be a 
misspelled signal handler
make: *** [Zeitmess_02.o] Error 1
Build failed with 7 errors and 1 warnings...

Der Sinn dieses Cods ist nur um meine Installation zu testen, später 
will ich damit schon mal Zeiten messen.

Die Versuche mit verschiedenen Headerdateien ( siehe auskommentierte 
Headers) brachte nur mit <avr/iomx8.h> eine Änderung der Meldung, die 
dann so aussieht:

avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 
Zeitmess_02.o -MF dep/Zeitmess_02.o.d  -c  ../Zeitmess_02.c
In file included from ../Zeitmess_02.c:6:
c:/winavr-20100110/lib/gcc/../../avr/include/avr/iomx8.h:47:4: error: 
#error "Attempt to include more than one <avr/ioXXX.h> file."
make: *** [Zeitmess_02.o] Error 1
Build failed with 1 errors and 0 warnings...

Was ist hier falsch? oder geht das mit Atmega8 auf Timer0 prinzipiell 
nicht?
Gruss und danke für eure Hilfe im voraus.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du dir mal die Mühe machst, ins Datenblatt des Mega8 zu sehen, 
würdest du bemerken, dass dieser µC mit dem Timer 0 keine PWM erzeugen 
kann und das es die verwendeten Register und Bits beim Mega8 gar nicht 
gibt.

Das Datenblatt ist dein Freund. Benutze es!
Ohne wirst du nicht weit kommen.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal grundsätzlich: man included für die IO-Definitionen immer nur 
<avr/io.h>

Der Header stellt anhängig vom gewählten Prozessor immer die richtigen 
Definitionen bereit.


Dein Problem ist, dass der Code für einen anderen Prozessor geschrieben 
wurde, als du jetzt benutzten möchtest:

Das Tutorial schrieb:
>" Die folgenden Ausführungen beziehen sich auf den AT90S2313"

Bei Atmel ist es leider ein Volkssport bei jedem uC die Register 
umzubenennen. Das heißt, du musst ins Datenblatt von deinen Prozessor 
gucken, und nachsehen, wie die Register anzupassen sind.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Defines (TCCR0, OCR, OCIE, ..) lauten anders - wie genau steht im 
Datenblatt :-)

Multiple includes von io* sind übrigens böse, die entsprechende Meldung 
kommt ja auch beim Compilier-Versuch:

> #error "Attempt to include more than one <avr/ioXXX.h> file."

HTH

Autor: Ewald Scherer (rentner62)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke mal vorerst, werde mich mal am Wochenende durchs Datenblatt 
durchackern, der letzte Englisch-Unterricht war vor 45 Jahren.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Ewald Scherer (rentner62)

>Danke mal vorerst, werde mich mal am Wochenende durchs Datenblatt
>durchackern, der letzte Englisch-Unterricht war vor 45 Jahren.

Dann machs dir ertwas einfacher und lies das Tutorial. Das ist auf 
deutsch.
Dort ist fast alles für den ATmega8 genau erklärt.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.