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
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.
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.
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?
>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.
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.
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.
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
>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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.