Hallo zusammen ich habe ein Projekt das auf zwei verschiedenen Hardware-Versionen laufen soll...eine Version mit Xmega256A3 und eine mit Atmega1284. Vieles muss ich natürlich dafür mit "#if" "else" ... etc. anpassen aber nun zur Hauptfrage: Wie kann ich im Atmel Studio 6 den Prozessortyp per define umstellen und compilier-fähig bekommen? Kennt ihr gute Tutorials die mir die Einarbeitung in die Xmega-Hardware(bereits vorhanden) erleichtern? Vielen Dank im Voraus NickNack
Nick Nack schrieb: > Vieles muss ich natürlich dafür mit "#if" "else" ... etc. anpassen Wirklich so viel? Ich würde alle Hardwarezugriffe kapseln und dann nur vom Hauptprogramm aufrufen. Schau Dir mal die erzeugten Symbole an, da muß eins das Target definieren. Das kannst Du für das #if benutzen.
Das kannst du mit _AVR_Device_ bestimmen. Der Teil "Device" ist abhängig vom "-mmcu=" welches durch AVR-Studio gesetzt wird
1 | Setting -mmcu=device defines this built-in macro which reflects the device's |
2 | name. For example, -mmcu=atmega8 defines the built-in macro __AVR_ATmega8__, |
3 | -mmcu=attiny261a defines __AVR_ATtiny261A__, etc. |
Du kannst im Code also sowas machen wie
1 | #if __AVR_ATmega8__
|
2 | DDRB = 0x0F; |
3 | #elif defined (__AVR_ATXmega32A4__)
|
4 | PORTB.DDR = 0x0F; |
5 | #endif
|
Es gibt sonst auch noch _AVR_ARCH_, _AVR_XMEGA_ etc zum Unterscheiden
:
Bearbeitet durch User
Per define nicht. Mmcu gehört zum Compiler aufruf. Das setzt also Armel Studio für dich anhand des eingestellten uC's
Timmo H. schrieb: > Setting -mmcu=device defines this built-in macro which reflects the > device's > name. For example, -mmcu=atmega8 defines the built-in macro > _AVR_ATmega8_, > -mmcu=attiny261a defines _AVR_ATtiny261A_, etc. Wo steht welches macro für den "ATXmega256A3U" und für den "Atmega1284P" definiert werden? Folgendes funktioniert leider nicht: #if _AVR_ATXmega256A3U_ setSysClockTo32MHz(); #endif
das "X" muss klein (sorry mein Fehler) und ein doppeltes Underline am Ende und Anfang (Forum Syntax hat es weggehauen) Also
1 | #if __AVR_ATxmega256A3U__
|
Steht auch in der avr/io.h
:
Bearbeitet durch User
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.