Fragen: WinAVR, enum u.a.

Gast #6696
Lesenswert?

Hallo,

habe jetzt erfolgreich auf WinAVR umgerüstet. Sieht sehr gut aus.

Allerdings habe ich noch ein paar Problemchen dabei, meine alten 
3.0.2-Programme zu portieren:


1. Für einen switch() hatte ich folgende Aufzählung angelegt:

enum HAUPTSTATUS   { HS_IDLE = 0,
                     HS_RESET_0, HS_RESET_1, ...
                   } ;

Hat unser 3.0.2 einwandfrei geklappt, aber 3.3 bringt mir folgenden 
Fehler:

WARNING - symbol 'HAUPTSTATUS' refers to non-existing type => 
@s8;eHS_IDLE:0,HS_RESET_0:1,  ...

Was stimmt denn damit nicht? Wo kann man denn bei enum den Typ angeben?


2. Das makefile weigert sich hartnäckig, mir die Meldung "Errors: none" 
auszugeben (für AVR-Studio). Diese Meldung sollte doch durch $(FINISH) 
ausgegeben werden. Aber obwohl dieses aufgerufen werden sollte, kommt 
die Meldung nicht?!
Ich habe jetzt halt mal den Text von $(END) geändert, aber ich wüßte 
doch gerne, was das Problem ist.
Gast #6697
Lesenswert?

1.
Kommt diese Fehlermeldung vom Compiler oder von Objtool (das Tool das 
Cof File zum Debuggen in AVRStudio erzeugt) ?
Wird ein hex file erzeugt ?

2. Das Beispiel \winavr\sample\Makefile hat leider einen Fehler: Vor 
$(FINISH) muss man ein TAB eingeben, nicht Space.

.PHONY : finish
finished:
<TAB>$(FINISH)
^
TAB anstelle Space
Gast #6698
Lesenswert?

Zu 1.:

Wenn mich nicht alles täuscht, ist es das objtool.
Es steht die Meldung
"objtool loadelf main.elf mapfile main.map writecof main.cof"
direkt über der Warnung.

Allerdings ist es kein Fehler, sondern nur eine Warnung. Da mir das 
falsche makefile aber kein "Errors: none" gebracht hat, dachte ich, daß 
es ein richtiger Fehler ist. Ein .hex-File wird aber erzeugt.

Zu 2.:
Danke, ich werd's ändern!

Grüße,

Sebastian
Gast #6701
Lesenswert?

Du kannst die Warnung ignorieren, wirst aber die enums
nicht im AVRstudio debuggen können.

Andererseits sind natürlich #defines auch zuweilen keine
schlechte Idee, da enums immer zu int evaluieren, während
man zuweilen mit ein paar #defines auch noch mit uint8_t
auskommen kann.  Allerdings werden andererseits eine ganze
Reihe Operationen per definitionem immer mit int abgearbeitet,
so daß sich der Effekt wohl wieder relativiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren