PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "'PB1' undeclared" und andere Fehlermeldungen dies



StackDaniels
28.06.2008, 18:48
Guten Tag, ehrenwertes Forum,

wie schon im Titel dieses Threads angedeutet, macht entweder mein avr-gcc Probleme, oder ich kann ihn nicht richtig bedienen (was vielleicht sogar wahrscheinlicher ist ^^ )
Und zwar hatte ich mir, um mein RN-Control-Board zu testen, gestern das entsprechende C-Testprogramm aus dem Wiki runtergeladen und versucht, mit dem avr-gcc zu bauen, was wir erstmal einen ordentlichen Haufen Fehlermeldungen einbrachte. Also hab ich auf mikrocontroller.net nachgeschaut, ob ich irgendwelche Optionen vergessen hatte (eine ganze Menge, wie sich rausstellte). Damit bekam ich dann auch einige der Fehlermeldungen weg.
Aber leider nicht alle. Denn alle Fehlermeldungen der Art "'PB1' undeclared" (eigentlich waren alle Namenskürzel für irgendwelche Register "undeclared") _obwohl_ ich extra geprüft habe, ob auch avr/io.h inkludiert wird (wird es).
Daraufhin schöpfte ich Verdacht gegen meinen Compiler (vielleicht ist der ja kaputt). Also, auf http://hoepfl.de/articles/2008/02/AVR_am_Mac.html gegangen (ich programmier auf nem 4 Jahre alten PowerMac G5 und benutze den AVRISP MkII mit USB zum Flashen)
und den Anweisungen zum Installieren des gcc, der avr-libc, der binutils, der libusb und so weiter exakt gefolgt. Die Installation hat auch geklappt.
Nur dummerweise kennt mein Compiler immer noch nicht die Registernamen des Mikrocontrollers.
Ich hab immer noch eine ewig lange Liste an Register-Kürzeln, die als "undeclared" bezeichnet werden, obwohl ich nach wie vor avr/io.h inkludiere und bin hier mit meinem Latein am Ende.
Leider hat auch die Themensuche und Onkel Google nichts zutage gefördert, was mir da helfen kann.
Was könnte da schief laufen?

mfg
~StackDaniels

linux_80
28.06.2008, 20:44
Hallo,

ist der verwendet AVR irgendwo angegeben, damit das io.h "weiss" welche Registernamen es includen muss ?
Normalerweise im Makefile steht die Zeile:
MCU = atmega32
oder welchen AVR man eben verwenden will.

StackDaniels
28.06.2008, 21:03
oh, stimmt, ich vergaß!
Als Compileroptionen verwendete ich:
avr-gcc -mmcu=atmega32 -I. -std=c99 -O3 -DF_CPU=1000000 RNControl-Test.c rncontrol.h

SprinterSB
28.06.2008, 21:23
Hast Du vielleicht in nen Pfad installiert, der Sonderzeichen enthält?

Wenn io.h nicht gefunden wird, sollte schon das eine Fehlermeldung geben.
Was sagt der Aufruf, wenn zudem noch -v angeben wird?

Zudem ist es unwahrscheinlich, daß ein *.h compiliert wird, lass das mal weg, steht wohl als include im *.c.

::Edit::

Nochwas: -O3 ist übel, nimm -O2 oder -Os

StackDaniels
28.06.2008, 21:35
hab mal probiert ohne die .h-Datei zu kompilieren und kriege nur 2 Warnings. Wieder was gelernt :D

Vielen Dank für die Hilfe :)
Und danke für den Hinweis beim Optimierungsflag.