Forum: Mikrocontroller und Digitale Elektronik WinAVR sieht Phantomports


von Stephan R. (Gast)


Lesenswert?

Tach!

Ich versuche ein myAVR- Board mit Atmega8 und myAVR- Display per C zu 
steuern.

Ein fremdes Template habe ich meinen Atmega entsprechend angepasst, d.h. 
die darin angegebenen Ports verändert. So habe ich z.B. das im 
Ursprungscode enthaltene PortE rausgeschmissen und in PortD verwandelt.
Nun möchte ich kompilieren und erhalte die Fehlermeldung

LCD_DRV.C:8: error: 'PORTE' was not declared in this scope

obwohl nirgendwo im gesamten Code der Begriff PORTE vorkommt! Wo kann 
diese Angabe noch stecken?

von Bernd K. (Gast)


Lesenswert?

Speichern, nochmal probieren?!
Speichern, Anwendung neu starten, nochmal probieren?!

von Stephan R. (Gast)


Lesenswert?

Er bleibt bei seiner Meinung!

Kann sowas auch im Makefile auftauchen?

von g457 (Gast)


Lesenswert?

> Kann sowas auch im Makefile auftauchen?

Latürnich. Einfach mal nachsehen. Wenn gar nichts mehr hilft: Alle(! 
..nicht nur den Quellcode) Dateien nach 'PORTE' durchsuchen.

von Thomas D. (t0mmy)


Lesenswert?

Ich hatte das vor kurzem auch mal. Ein make clean hat nichts gebracht. 
Geholfen hat bei mir das Ändern irgendeiner Stelle (Kommentar oder so) 
und erneute abspeichern.
Neustart von AVRStudio hab ich nicht ausprobiert.

Vielleicht hilfts ja...

von Stephan R. (Gast)


Lesenswert?

Hmmmmmmmmmm. Noch keine Besserung in Sicht. Böser Compiler.

von Karl H. (kbuchegg)


Lesenswert?

Hast du das ursprüngliche WinAVR-Projekt übernommen?

Ich würde

* neues WinAVR Projekt im AVR Studio anfangen. Damit ist erst mal
  sicher gestellt, dass
  überall dein Mega8 eingetragen ist und alle sonstigen Dinge auf
  Default sind.

* Dann den Code aus dem anderen Projekt per Cut & Paste übernehmen.
  Zuerst einfach nur das File, in dem die main() drinnen ist.

  Da werden dann andere Files fehlen.
  Die legst du neu an, fügst sie im AVR-Studio zum Projekt hinzu.
  Dann machst du sie im AVR-Studio auf und kopierst den Code aus den
  jeweiligen Originalfiles per Cut&Paste in die neuen um.

  AUf die Art ist sicher gestellt, dass du im Prpjekt genau die Files
  enthalten hast, auf genau den Verzeichnissen und mit genau dem Inhalt
  den du unter Kontrolle hast und den du kennst.


Du kannst natürlich weiter suchen, welches deiner Files in deinem 
Projekt nicht dasjenige von deinem Projektverzeichnis ist. Aber manchmal 
gehts es einfach schneller, wenn man akzeptiert, dass im Projekt 
irgendwas nicht stimmt und man neu anfängt. Mit der vorgeschlagenen 
Vorgehensweise hast du in 10 Minuten das neue Projekt fertig aufgesetzt 
und einen fehlerfrei compilierbaren Code.

PS: Das Vorgehen ist im Grunde unabhängig von der tatsächlichen IDE, wie 
AVR-Studio. Manchmal ist es schneller und in Summe weniger Arbeit, wenn 
man den vermeintlich aufwändigeren Weg wählt.

von Stephan R. (Gast)


Lesenswert?

Guter Tipp, hat geklappt, der Fehler ist behoben! Danke!
Aber irgendwie verhält sich das Programm komisch:

Bereits zweimal hat sich eine eingebundene C-Datei einfach aus dem Staub 
gemacht (war plötzlich auch aus dem Projektordner verschwunden, und 
ausserdem bekomme ich beim Compilieren nun folgende Fehlermeldung, mit 
der ich rein gaa nix anfangen kann:


Linking: main.elf
avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=3686400UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -MMD -MP -MF 
.dep/main.elf.d main.o LCD_DRV.C lcd_drv.h --output main.elf 
-Wl,-Map=main.map,--cref     -lm
cc1plus.exe: warning: command line option "-Wstrict-prototypes" is valid 
for Ada/C/ObjC but not for C++
cc1plus.exe: warning: command line option "-std=gnu99" is valid for 
C/ObjC but not for C++
d:/avr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe:main.o: file 
format not recognized; treating as linker script
d:/avr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe:main.o:1: 
syntax error
make.exe: *** [main.elf] Error 1

von (prx) A. K. (prx)


Lesenswert?

.c => C Source Code
.C => C++ Source Code

von Stephan R. (Gast)


Lesenswert?

Perfect! Sauber!

Zwar tut das Display noch nicht das was es soll aber das Brennen 
funktioniert!

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.