Hallo, ich habe ein Projekt, bei dem zwischen zwei Stellen Daten via Funk übertragen werden sollen. Nun bin ich soweit, dass ich mit dem programmieren anfangen kann. Programmiert werden soll ein AtMega88 mit Atmel Studio 7. Damit ich keine zwei Software-Projekte pflegen muss, möchte ich gerne Atmel Studio so konfigurieren, dass er beim compilieren zwei Hex Dateien erzeugt. Eine für die Sender-Platine und eine für die Empfänger-Platine. Dabei soll mittels #ifdef der jeweilige Quellcode dazu verwendet werden. Kann mir jemand dabei helfen, wie ich das im Atmel Studio konfigurieren muss? Ich habe schon gegoogelt, aber nichts passendes gefunden. Vielen Dank.
Schau dir die Pre und Post Compiler commands an. Ich hab so etwas ähnliches realisiert wo ich verschiedene Versionen mit einem bootloader her file verknüpft hab. Damit kannst du quasi alles realisieren wie du es gerade möchtest. Ich hab mir da einfach ein zwei python Skripts geschrieben die das machen. Die werden dann nur angestoßen. Um zwei Versionen zu erzeugen könntest du ein #ifdef XXX #else #endif einbauen. Zwei mal compilieren und dazwischen eben die Datei aus dem debug / Release Ordner wegsichern (sonst kommt der clean und holt sich die). -D
Dennis X. schrieb: > Um zwei > Versionen zu erzeugen könntest du ein #ifdef XXX #else #endif einbauen. > Zwei mal compilieren und dazwischen eben die Datei aus dem debug / > Release Ordner wegsichern (sonst kommt der clean und holt sich die). Danke für die Antwort. Ich dachte eher, ob es vielleicht die Möglichkeit gibt, dass er bei einem Build gleich beide Varianten kompiliert und mir dann zwei verschiedene Hex-Dateien erzeugt.
Hallo, du kannst bei deinem Atmel Studio auch ein externes Makefile benutzen. Dort kannst du dann jede Schweinerei treiben, die dir Einfällt^^
nur mal so als weitere Idee: wenn sich Sender- und Empfängerplatine sehr unterscheiden, wären 2 Projekte evt die bessere Lösung. Sind sich die Platinen jedoch sehr ähnlich oder fast identisch, so könnte man sie markieren indem man einen Input Pin auf GND legt (am Empfänger) bzw auf Vcc legt (am Sender). Anhand dieses Pins kann die Software dann die Sende- oder Empfangsfunktion ausführen. Der Vorteil, da brauchst nur mehr ein einziges HEX file für alles.
Es ist auch möglich in der Hauptdatei nur zwei if-Zweige zu implementieren und den Rest "auszulagern". Dann wird immer nur der Kram bearbeitet, den Du gerade befummeln willst.
... und zwei Konfigurationen kann man auch anlegen, den kann man auch unterschiedliche "defines" und Output File Namen mitgeben.
Harry M. schrieb: > Sind sich die Platinen jedoch sehr ähnlich oder fast identisch, so > könnte man sie markieren indem man einen Input Pin auf GND legt (am > Empfänger) bzw auf Vcc legt (am Sender). Anhand dieses Pins kann die > Software dann die Sende- oder Empfangsfunktion ausführen. Der Vorteil, > da brauchst nur mehr ein einziges HEX file für alles. Genau so habe ich das auch gemacht. Die meisten Routinen sind gemeinsam verwendbar und nur wenig Code wird mehr benötigt gegenüber getrennten Programmen. Auch ist es für die Fertigung einfacher.
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.