Forum: Mikrocontroller und Digitale Elektronik xmega port remap


von Manu (Gast)


Lesenswert?

Hallo,

habe ein Problem mit einem xmega32A4U.
Ich will einen mit T/C erzeugten clk nach draussen leiten. Allerdings 
bekomm ich den über TCC0 raus. Diesen bräuchte ich nun aber nicht auf 
den PINs PC0-3 sondern auf PC7. Laut Datenblatt lässt sich genau diese 
T/C Funktion mit dem Befehl PORTC.REMAP verschieben.

13.13.14 REMAP – Pin Remap register
The pin remap functionality is available for PORTC - PORTF only.

 Bit 3 – TC0D: Timer/Counter 0 Output Compare D
Setting this bit will move the location of OC0D from Px3 to Px7.
1
PORTC.REMAP |= PORT_TC0D_bm;
 funktioniert leider nicht wirklich bei mir. Bekomme meinen Takt immer 
noch auf PC3 raus.

Hoffe ihr könnt mir weiter helfen und danke im Vorraus.

Viele Grüße

Manu

von Gerhard G. (g_g)


Lesenswert?

Hallo,

versuch mal den

PORTC_OUTSET = PIN7_bm;
PORTC_DIRSET = PIN7_bm;


als Ausgang zu schalten


Gruß G.G.

von Manu (Gast)


Lesenswert?

Hallo,

Vielen Dank für die schnelle Antwort.
Funktioniert leider aber nicht. So bekomme ich durchgehend ein Pegel auf 
PC7. Bräuchte allerdings meinen clk. Zudem sollte eig der clk auch von 
PC3 verschwinden und nur noch auf PC7 ausgegeben werden. Laut dem 
Datenblatt sollte dies eig auch mit
1
PORTC.REMAP |= PORT_TC0D_bm
funktionieren. Da er so eben nur den Timer/Counter Channel 0 von PC3 auf 
PC7 legt. Funktioniert leider nur von der Theorie.

Viele Grüße

Manu

von Timmo H. (masterfx)


Lesenswert?

Manu schrieb:
> Funktioniert leider nur von der Theorie.

Funktioniert bei mir auch in der Praxis. Getestet mit Xmega32A4U.
1
PORTD.DIRSET = (1<<PIN4);
2
PORTD.REMAP = PORT_TC0A_bm;
3
4
TCD0.CTRLA = TC_CLKSEL_DIV256_gc;
5
TCD0.PER   = 10000;             
6
TCD0.CTRLB = TC0_CCAEN_bm | TC_WGMODE_SS_gc; 
7
TCD0.CCABUF = 5000;

: Bearbeitet durch User
von Albundy (Gast)


Lesenswert?

Hallo zusammen,

ich möchte das Thema nochmal aufgreifen, da ich vor demselben Problem 
stehe:

Die Umschaltung des Timers beim Xmega32A4U von PC3 auf PC7 funktioniert 
nicht. Das Signal bleibt auf PC3 (wo es nicht bleiben soll). Laut 
Debugger wird das PORTC_REMAP-Register gar nicht beschrieben.

Hat jemand vielleicht einen Tipp für mich?

Hier mein Code:

1
  //Remap TC0D from PC3 to PC7
2
  PORTC_DIRSET = 1<<PIN7_bp;
3
  PORTC_REMAP = 1<<3;
4
5
  //Start Timer
6
  TCC0_CCA = 30 ;
7
  //Frequency Mode (CTC)
8
  TCC0_CTRLB = TC_WGMODE_FRQ_gc | (1<<TC0_CCDEN_bp); 
9
  TCC0_CTRLA = TC_CLKSEL_DIV1_gc;

Danke

Al

von Gerhard G. (g_g)


Lesenswert?

Hallo Albundy,

dein Code funktioniert bei mir astrein(AVR-STUDIO 6.2).
Kann zwischen den zwei Port's hin und her wechseln.
Allerdings bei einem Atxmega128A3U!

Gruß G.G.

von Albundy (Gast)


Lesenswert?

Hallo Gerhard,

danke für den Test :)

Ich verwende auch Atmel Studio 6.2 in der neuesten Version.

Wenn jemand den Code nochmal auf einem xmega32a4u ausprobieren könnte. 
Das wäre echt super..


Gruß

Al

von Gerhard G. (g_g)


Lesenswert?

Hallo Albundy,

habe meinen Atxmega32a4U rausgekramt(siehe Link).
http://www.reworld.eu/re/de/produkte/index.htm

Dein Code funktioniert hier ebenso!

Du hast nicht versehentlich einen ATxmeg32a4-AU hergenommen?



Gruß G.G.

von karstenbrandt1@gmx.de (Gast)


Lesenswert?

Hallo Gerhard,

sorry, dass ich mich jetzt erst melde. Bin gestern aus dem Urlaub 
zurück.

Also, auf dem  Ding steht: xmega32A4U-AU. Sollte nach meinem Verständnis 
ein 32A4U sein.
Kein Ahnung, warum das bei mir nicht geht. Muss halt ne Brücke zum alten 
PC3 ziehen und etwas umrödeln.

Trotzdem Danke für Eure Hilfe. :)

Gruß

Al

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.