Forum: Mikrocontroller und Digitale Elektronik Xmega128A3 AU - Bug AWEX Einheit PortE?


von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo,

ich versuche schon seit einiger Zeit eine bestimmte Konfiguration des 
Timers an PortE bei einem Xmega128A3 AU zu realisieren. Der Timer soll 
im Modus "WGMODE_Normal" betrieben werden und beim Event den jeweiligen 
Pin umschalten. Hier der Quellcode:
1
TCE0.CTRLB    |= TC_WGMODE_NORMAL_gc;        // TimerMode
2
TCE0.CTRLB    |= TC0_CCDEN_bm|TC0_CCCEN_bm;  // enable channels    
3
TCE0.PER    = 1000;                          // Top 
4
TCE0.CCC    = 100;              
5
TCE0.CCD    = 100;                 
6
TCE0.CTRLA    = TC_CLKSEL_DIV1024_gc;        // select Prescaler
7
8
AWEXE.CTRL    |=  AWEX_DTICCCEN_bm;          // enable AWEXx channel
9
AWEXE.OUTOVEN  = 0b00111111;                 // Initial override value.

Leider gibt es keine Veränderung an den Pins. Verwende ich mit dem 
Timer die internen Overflow Interrupts und lasse einen Pin per Software 
toggeln funktioniert dies. --> Der Timer läuft also, aber es wird kein 
Event auf die Pins ausgelöst.

Seltsam ist, dass der Code am PortC funktioniert (dieser ist laut 
Datenblatt baugleich zum PortE) aber nicht an Port E.
Ich habe auch schon mehrere Controller (neuste Serie) versucht aber alle 
zeigen das gleiche Ergebnis. Betreibe ich den Timer im Modus "WGMODE_SS" 
funktioniert alles problemlos.

Kann es jemand bei seinen Controllern testen oder hat jemand schon die 
gleiche Erfahrung gemacht?  Oder ist das ein Bug?

Grüße Martin

: Verschoben durch Moderator
von Willi W. (williwacker)


Lesenswert?

Hallo Martin, ohne jetzt die Zeit zu haben, Deinen Code zu testen, 
folgender Vorschlag, wie Du den Fehler selbst rausfinden kannst, oder 
auch bei kommenden Problemen.

Es gibt "CodeVisionAVR", das ist ein AVR-C-Compiler den wir in der 
professional Version einsetzen. Der hat einen recht guten Code-Wizard, 
um z.B. Timer und was auch immer einzustellen. Heraus kommt ein 
lauffähiger Code.

Eine Demo-Version gibt es auch mit der Einschränkung, dass das Compilat 
nicht größer als 2k sein darf, das dürfte für Dich keine echte 
Einschränkung sein.

und hier kuckst Du: http://hpinfotech.ro/html/cvavr.htm

Ciao

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Sonst kann mal jemand testen ob die die AWEX Einheit an PortE, also 
AWEXE überhaupt funktioniert. Denn leider musste ich feststellen, dass 
dies bei mir nicht der Fall ist. Auch im Simulator wird die Einheit 
nicht angesprochen.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hier noch der Quellcode zum Testen:
1
TCE0.CTRLB    |= TC_WGMODE_NORMAL_gc;        // TimerMode
2
TCE0.CTRLB    |= TC0_CCDEN_bm|TC0_CCCEN_bm| TC0_CCAEN_bm| TC0_CCBEN_bm;      
3
TCE0.PER    = 8000;              // Zähler Topwert 
4
TCE0.CCA    = 1000;              // deadtime
5
TCE0.CCB    = 2000;              // deadtime
6
TCE0.CCC    = 1000;              // deadtime
7
TCE0.CCD    = 2000;              // deadtime  
8
TCE0.CTRLA    = TC_CLKSEL_DIV1024_gc;      // select Prescaler 
9
10
AWEXE.CTRL    |= AWEX_DTICCAEN_bm| AWEX_DTICCBEN_bm| 
11
                 AWEX_DTICCCEN_bm | AWEX_DTICCDEN_bm ;  // enable AWEXx 
12
AWEXE.CTRL    |= AWEX_CWCM_bm;
13
AWEXE.OUTOVEN = 0b00111111;            // Initial override value.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

also es ist nicht klar ob es ein Bug im Controller (AWEXE einheit) oder 
im Datenblatt und in der Toolchain ist ...

siehe: Beitrag "AWEXE auf xmega 256a3"

Ansgar K. schrieb:
> Moin,
> ich bin gerade dabei etwas mit einem xmega rumzubasteln und bin bei der
> Advanced Waveform Extension angelangt. Im Header für den 256a3 in
> WinAVR-20100110 ist eine AWEXC und eine AWEXE definiert, im Debugger im
> AVR-Studio 4.18SP3 existieren sie ebenfalls.
> Daher kann man mit beiden programmieren, ohne dass eine Fehlermeldung
> auftritt.
>
> Laut Datenblatt hat die A3-Version aber nur eine AWEXC und
> dementsprechend resultiert auch jeder Versuch die AWEXE zu nutzen in -
> nichts.
>
> Hab ich da irgendwo nen Denkfehler drin oder ist meine Toolchain
> tatsächlich fehlerhaft?
>
> EDIT: Die AWEXE taucht sogar hinten in der "Peripheral Module Address
> Map" des A3 auf, obwohl in den entsprechenden Kapitel dazu steht: "The
> AWEX is available for TCC0. The notation of this is AWEXC."

Bin gespannt auf die Antwort von ATMEL.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo,

... hab soeben die aufklärende Antwort von Atmel bekommen.

############
Ich habe gerade die Bestätigung von unserer Entwicklung bekommen:
Tatsächlich ist momentan erst nur ein AWEX Modul am PORTC vorhanden. 
Dies gilt für alle XmegaA3U und A4U. Im aktuellen Datenblatt ist dies 
nicht richtig dargestellt, der Hinweis im alten Datenblatt ist gültig.

Bitte entschuldigen sie den Fehler.
Viele Grüße,
xxx Atmel
############

Damit wäre jetzt alles geklärt.
Viel Erfolg bei weiteren Entwicklungen.

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.