Hallo, ich habe folgendes Kompatibilitätsproblem mit meinem XMEGA: Bei "alten" ATMEGA Codes wird der Port of so definiert: #define PORT PORTA bei einem XMEGA entspricht PORTA aber einem struct von typ port_t, wodurch nicht mehr direkt auf dem Ausgang zugegriffen werden kann, oder? eine Änderung auf die Variable PORTA_OUT wäre zwar möglich, aber geht dann folgende Funktion zur Änderung der DDR noch: #define DDR(x) (*(&x - 1)) /* address of data direction register of port x */ wenn DDR(PORTA) übergeben wird? Oder gibt es eine Variable im XMEGA welcher der alten PORT Variable im ATMEGA entspricht? Vielen dank für eine Antwort
Gast
#1562183
ja, gibt es. PORTA_OUT Steht in der Application Note AVR1000, Seite 14
Hallo Fabian, du kannst die Datei in Anhang nehmen bzw. sowas selber schreiben, dann geht alles so wie gewohnt! Gruß Martin
Erstmal danke für die Antworten! Leider habe ich noch immer ein Problem bei der Verwenung folgendes Befehls: #define DATA0_PIN 6 #define DATA1_PIN 5 #define DATA2_PIN 4 1: DDR(PORTA_OUT) |= _BV(DATA0_PIN); 2: DDR(PORTA_OUT) |= _BV(DATA1_PIN); 3: DDR(PORTA_OUT) |= _BV(DATA2_PIN); komischerweise löschen die Befehle zuerst das gesamte DDR Register des Ports.
Gast
#1596986
vielleicht hilft dir, dass hier weiter: http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial Gruß gastuser
Gast
#1596992
Bist du dir bewusst, was du da tust? (*(&PORTA_OUT - 1)) ist das I/O Register PORTA.DIRTGL. Oder haste das geändert?
Gast
#1597169
der xmega is recht nahe an der ansteuerung der der ARM serie was geradezu einem aufdrängt einen ARM cortex zu nutzen ^^ da passt der kern wenigstens zum rest :P
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.