Forum: Mikrocontroller und Digitale Elektronik ATMEGA zu XMEGA Code


von Fabian K. (kalf)


Lesenswert?

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

von ich (Gast)


Lesenswert?

ja, gibt es. PORTA_OUT

Steht in der Application Note AVR1000, Seite 14

von Martin e. C. (eduardo)


Angehängte Dateien:

Lesenswert?

Hallo Fabian,

du kannst die Datei in Anhang nehmen bzw. sowas selber schreiben, dann 
geht alles so wie gewohnt!

Gruß
Martin

von Fabian K. (kalf)


Lesenswert?

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.

von gastuser (Gast)


Lesenswert?

vielleicht hilft dir, dass hier weiter:

http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial

Gruß gastuser

von Gaast (Gast)


Lesenswert?

Bist du dir bewusst, was du da tust?

(*(&PORTA_OUT - 1)) ist das I/O Register PORTA.DIRTGL.

Oder haste das geändert?

von komische idee (Gast)


Lesenswert?

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

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.