Forum: Compiler & IDEs Prozessor von Eclipse nicht erkannt


von Ralph F. (feu)


Lesenswert?

Ich nutze Eclipse als Plattform zum AVR programmieren.
Nun möchte ich ein Projekt welches ursprünglich für den Atmega16 
geschrieben wurde für den Atmega1284 nutzen. Ich nahm an, wenn ich den 
Target typ in den Preferences vom Projekt ändere, sollten die 
zugehörigen Macros auch wechseln. Machen sie aber nicht.
Bsp.: UBRRH im atmega16 heisst beim atmega1284 UBRRH0 oder ...1, UBRR0 
wird aber nicht erkannt (fehlermeldung). Eigentlich alle Macros 
funktionieren nicht mehr.
Kann mir jemand sagen was ich falsch mache.
Der tip: Preferences, index, refresh_all aus einem früheren Beitrag 
führt hier zu nichts.

Vielen Dank schon mal
Ralph

von Haro (Gast)


Lesenswert?

Handelt es sich dabei nur um einen Parsing-Fehler von Eclipse?
D.h., kannst du kompilieren?

Eclipse kennt unter Umständen andere Defines als der Compileraufruf.
Deswegen kann es schonmal vorkommen dass dir Eclipse einige Zeilen rot 
unterstreicht und einen Fehler meldet, der Compiler aber durchläuft.

Falls der Compiler nicht durchläuft: poste hier bitte die Kommandozeile, 
aus der Eclipse Konsole.

von Jay W. (jayway)


Lesenswert?

Schau doch in deiner Eclipse-Installation mal in die AVR-Supported-MCU 
Liste. Bei meiner Plugin-Version (2.4.0) mit avr-gcc 4.5.3, avrdude 
5.11.1 wird der Atmega1284 noch nicht unterstützt.

von Ralph F. (feu)


Lesenswert?

Genau gesagt ist es auch der atmega1284P. wenn der doch als Option für 
die Target HW aufgeführt ist, denke ich wird er auch unterstützt, oder? 
Zumal #include <avr/io.h> den richtigen Prozessor auch findet -->#elif 
defined (_AVR_ATmega1284P_)
#  include <avr/iom1284p.h>
und darin steht:
....

#define TXEN0 3
#define RXEN0 4

...

was auch nicht geht

sehe ich das falsch?

von holger (Gast)


Lesenswert?

>Ich nahm an, wenn ich den
>Target typ in den Preferences vom Projekt ändere, sollten die
>zugehörigen Macros auch wechseln. Machen sie aber nicht.
>Bsp.: UBRRH im atmega16 heisst beim atmega1284 UBRRH0 oder ...1, UBRR0

Das interessiert Eclipse einen Scheissdreck.
Das musst DU *selber* machen.

von 900ss (900ss)


Lesenswert?

Ralph Feuchter schrieb:
> Ich nahm an, wenn ich den
> Target typ in den Preferences vom Projekt ändere, sollten die
> zugehörigen Macros auch wechseln. Machen sie aber nicht.

Hmmmm.... du erwartest, dass Eclipse dir da im Sourcecode die Macros 
ändert? Nein, das tut es nicht. Handarbeit ist angesagt.

von Kaj (Gast)


Lesenswert?

Ralph Feuchter schrieb:
> Ich nahm an, wenn ich den
> Target typ in den Preferences vom Projekt ändere, sollten die
> zugehörigen Macros auch wechseln. Machen sie aber nicht.
> Bsp.: UBRRH im atmega16 heisst beim atmega1284 UBRRH0 oder ...1, UBRR0
> wird aber nicht erkannt (fehlermeldung).
Ach. Die Register heissen halt im mega1284 anders als im mega16. Woher 
soll eclipse denn wissen, ob mit UBRRH jetzt UBRRH0 oder UBRRH1 gemeint 
ist?
Anderer Controller bedeutet ggf. andere Registernamen und 
Registeradressen.
Das musst DU schon selber machen.

Ralph Feuchter schrieb:
> Kann mir jemand sagen was ich falsch mache.
Du nimmst an, das deine IDE fuer dich den Source-Code schreibt.

von Ralph F. (feu)


Lesenswert?

holger schrieb:
> Das musst DU selber machen.

wozu gibt es dann include Datein zum passenden Controller wo genau die 
richtigen Macros drin stehen?

die Frage war nur, warum die neuen Macros nicht angewandt werden obwohl 
die richtige include zum passenden Controller eingebunden ist.

Kaj schrieb:
> Die Register heissen halt im mega1284 anders als im mega16. Woher
> soll eclipse denn wissen, ob mit UBRRH jetzt UBRRH0 oder UBRRH1 gemeint
> ist?

aus UBRRH mach UBRRH0 hatte ich nicht vergessen, das war/ist ja gerade 
das Problem, dass das neue Reg. nicht erkannt wird

Vielen Dank an alle

von holger (Gast)


Lesenswert?

>die Frage war nur, warum die neuen Macros nicht angewandt werden obwohl
>die richtige include zum passenden Controller eingebunden ist.

Es gibt nur ein include was du dazu machen musst:

#include <avr/io.h>

Alles andere ist falsch.

>aus UBRRH mach UBRRH0 hatte ich nicht vergessen, das war/ist ja gerade
>das Problem, dass das neue Reg. nicht erkannt wird

Dann hast du den Controller falsch umgestellt und es wird
immer noch der alte Controller benutzt.

von Haro (Gast)


Lesenswert?

Wie schon mal geschrieben:

1) Kompiliert dein Programm?

2) Wenn nicht, poste bitte den genauen Compiler-Aufruf. Diesen kannst du 
direkt aus der Eclipse-Konsole heraus copy&pasten.

von Ralph F. (feu)


Lesenswert?

Ja es compiliert und ich weiss es klingt schon seltsam aber nach ein 
paar mal Project clean, close und wieder auf machen waren die Register 
nicht mehr unbekannt.
Ich bin aber sicher das der richtige Prozessor vorher auch schon erkannt 
wurde.
#include <avr/io.h> --> und wenn man dann ins Verzeichnis geht findet 
man den prozessor #  include <avr/iom1284p.h> highlighted mit allem 
drin, was dazugehört

auch die Optionen für den compileraufruf waren richtig.

Jetzt gehts jedenfalls, wäre nur schön zu wissen was es war.

Vielen Dank an alle

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.