Atmega <-> XMega PortInit und Abfrage

  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 3 of 5
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 20.05.2012 - 23:52  ·  #17
Hallo Rolf.
Quote by rh

Hallo Thorsten,

Fehlerbeseitigung und USB. Verbesserter DAC, kein S/H mehr sondern echte DAC Kanäle und vieles mehr. Ein Umstieg auf USB Versionen der XMegas ist eigentlich ein MUSS.
Entweder ist es bei Ihnen tatsächlich der (veraltete) XMega oder die veraltete Compiler Version. Denn bei mir und bei Mike funktioniert es ja. Ich tippe eher auf die Compiler Version!
btw.
Die XMegas brauchen absolut keinen externen Quarz. Die internen RC-Osc sind extrem genau, so dass sie sogar für den USB Clock ausreichen!
In der Praxis werden da für 32MHz erreicht: 31.94-31.97 MHz. Zwar keine Quarz Genauigkeit aber für 99.9% aller Anwendungen ausreichend.

rolf

Naja, schauen wir mal, dann muss ich wohl warten bis das Update wieder downloadbar ist ;)

Aber ich schaue mir mal den U-Typen genauer an, wenn es nicht zu viel Aufwand ist, diesen in die vorhandene Schaltung zu integrieren, soll es mir recht sein. Mouser hat ja noch ein paar auf Lager.

Das mit dem Quarz
Code
  OSCtype = extClock =1843435, 
                     PLLmul=17, 
                     prescA=1, 
                     prescB=1, 
                     prescC=1; 

Haben wir nur wegen der Baudraten Genauigkeit der Schnittstellen gemacht.
Ich habe auf meinem Basis-Board 2xRS485 und 1xRS232. Deswegen haben wir den 1,843435er Quarz genommen :)

Wenn Du mir eine Einstellung nennen kannst, in der wir diese Baudratengenauigkeit erreichen können mit den Internen-Einstellungen, verzichte ich liebend gerne auf den externen :)

Gruss
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 13:28  ·  #18
Hallo Thorsten,

durch einen sehr "tricky" Baudrate Generator kann ein XMega jede Baudrate mit einer Genauigkeit <1% einstellen. Ein Baudrate Quarz ist deshalb absolut unnötig.
Typischer Baudrate Fehler liegt bei 0.010% :ja:

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 14:06  ·  #19
Hallo rolf.
Quote by rh

Hallo Thorsten,

durch einen sehr "tricky" Baudrate Generator kann ein XMega jede Baudrate mit einer Genauigkeit <1% einstellen. Ein Baudrate Quarz ist deshalb absolut unnötig.
Typischer Baudrate Fehler liegt bei 0.010% :ja:

OK, wieder 5 Bauteile weniger :)

Macht der XMEGA das automatisch oder muss man eine Funktion dazu aktivieren?

Auf einer Schulung von AMTEL "XMEGA in der Praxis" (Oktober 2010) wurden wir extra auf dieses Baudraten-Problem hingewiesen. Das heisst entweder wurde uns Müll erzählt oder in den neuen Versionen ist das gerichtet worden.

Gruss
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 14:13  ·  #20
Hallo Thorsten,

ich kann mir nicht vorstellen dass die Atmels nicht ganz besonderen Wert auf die extrem genaue Baudraten Generierung gelegt haben. Entweder waren das Luschen oder da liegt ein Missverständnis vor. Automatisch macht ein XMega natürlich garnichts. Der AVRco rechnet anhand des Peripherie Clocks und der gewünschten Baudrate die Werte für die Baudrate Register und setzt diese auch ein. Die erzielte Genauigkeit kann im ASM File nachgeschaut werden:
Code
                        ; >> SERPORTE0 Init <<
                        ; >> Baudrate 57600 = 57606 <<
                        ; percent Baudrate error : >> 0.010% <<

rolf
tramike
 
Avatar
 
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 16:07  ·  #21
Hallo allerseits!

Ich habs bei mir auf einem XMega256A3 laufen lassen.

Resultat:

Code
----------
BYTE0:00000000
BYTE1:00000000
BYTE2:00000010
BYTE3:00000000
BYTE4:00000010


Es liegt also tatsächlich nicht an der Compiler-REV, sondern am fehlenden "U"...
Ich habe aber in der Dokumentation (trotz bedenklich langer Errata-Liste der "Nicht-U") keine Unterschiede bei dem Befehlssätzen zwischen "U" und "Nicht-U" gefunden?

Gruss,
Mike
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 16:17  ·  #22
Hallo Mike,

danke für die Info. Ist ja ein starkes Stück. D.h. alle "mature" XMegas in die Tonne. Die Bugs dort sind ja extrem viele. Und die fehlenden Opcodes machen das ganze etwas abenteuerlich...
Betrifft wohl alle XMegas von denen es "U" und non-"U" Versionen gibt. Neue XMegas ohne "U" die aber einen USB enthalten sind davon nicht betroffen.

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 16:50  ·  #23
Hallo Mike.
Hallo Rolf.
Quote by rh

Hallo Mike,
danke für die Info. Ist ja ein starkes Stück. D.h. alle "mature" XMegas in die Tonne. Die Bugs dort sind ja extrem viele. Und die fehlenden Opcodes machen das ganze etwas abenteuerlich...
Betrifft wohl alle XMegas von denen es "U" und non-"U" Versionen gibt. Neue XMegas ohne "U" die aber einen USB enthalten sind davon nicht betroffen.


Hmmm..... also mit der aktuellen Version von AVRco V5.02.05

Kommt bei meinem Testcode bei einem Xmega256A3
Code
BYTE0:00001000
BYTE1:00000100
BYTE2:00000010
BYTE3:00010000
BYTE4:00000010


Byte0= ist ok
Byte1= ist ok
Byte2= ist ok
Byte4= ist ok

Aber wie bitte schön kommt er bei Byte3 auf "BYTE3:00010000", wenn ich "incl(TestByte,2);" mache ?!?!

Ich habe mal den Code um folgende Zeilen erweitert:
Code
    TestByte:= $FF;
    excl(TestByte,2);  // kein Erfolg
    WriteLn(SeroutC0, 'BYTE5:'+ByteToBin(TestByte));
    mDelay(1000);


Resultat:
Code
----------
BYTE0:00001000
BYTE1:00000100
BYTE2:00000010
BYTE3:00010000
BYTE4:00000010
BYTE5:11111111
----------

Also irgendwas ist an der Compilerversion schon deutlich besser, aber das mit incl und excl passt nicht.
Anbei mal der ASM-Code

Gruss
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Atmega <-> XMega PortInit und Abfrage

 · 
Posted: 21.05.2012 - 17:38  ·  #24
Hallo Thorsten,

sorry, bei mir tut es so wie es soll:

Var
bb : byte;
...
incl(bb, 2);
...
ergibt:
%00000100

rolf
  • 1
  • 2
  • 3
  • 4
  • 5
  • Page 3 of 5
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 16 · Cache Hits: 15   141   156 · Page-Gen-Time: 0.033431s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI