Forum: Mikrocontroller und Digitale Elektronik Xmega - Wozu ADC Result Register doppelt?


von Reinhard (Gast)


Lesenswert?

Hallo, beim Programmieren des AD Wandlers eines ATXMega32A4U ist mir das 
doppelte Vorhandensein der Result-Register aufgefallen, nämlich 
gesammelt auf den IO-Adressen dez. 528-535 und nochmal separat für jeden 
virtuellen Kanal. Was hat es damit auf sich- Datenblatt und App-Note 
schweigen sich aus... ?

Gruß Reinhard S.

von Fred (Gast)


Lesenswert?

Vielleicht eine Art Zwischenspeicher???

von Reinhard (Gast)


Lesenswert?

Keiner eine Ahnung?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Schon mal hier nachgesehen?

ATxmega16A4U/32A4U/64A4U/128A4U Complete
http://www.atmel.com/Images/doc8387.pdf

(Achtung: 32MB Dateigröße!)

von spess53 (Gast)


Lesenswert?

Hi

Also ich habe nur 'Virtual Ports' gefunden. Kannst du mal sagen, wo das 
steht.

MfG Spess

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Magnus Müller schrieb:
> Schon mal hier nachgesehen?
>
> ATxmega16A4U/32A4U/64A4U/128A4U Complete
> http://www.atmel.com/Images/doc8387.pdf

Mist... eben festgestellt, dass da auch keine brauchbare Info drin 
steckt.

Neuer Versuch:

Atmel AVR XMEGA AU Manual Complete
http://www.atmel.com/Images/doc8331.pdf

Diesmal sind es aber nur 28MB  =)

von Reinhard (Gast)


Lesenswert?

Da steht eben nur das die Register doppelt vorhanden sind. Aber warum 
???

von Horst (Gast)


Lesenswert?

Die XMega Familie soll die Fähigkeit bieten die Hardware zu 
abstrahieren. Der erste Breich wo die Register gesammelt sind ist für 
den klassischen Programmierer gedacht.

Die zweite Möglichkeit das Register anzusprechen (über Kanal-Offset und 
Adresse) ist Atmels "New World Order". Damit ist es möglich eine 
Funktion zu schreiben, die das Offset des Kanals bekommt und darüber den 
Kanal anspricht. Dieser Funktion ist es dann egal ob es Kanal 0,1,2 oder 
3 ist.

Auf dem PC würde man z.B. eine Basisklasse (in C++) definieren und die 
Kanäle davon ableiten oder einfach eine "Port-Tabelle" pro Kanal 
benutzen. Auf dem uC sind aber Resourcen und/oder Zeit kanpp. Deswegen 
hat Atmel die Hardware abstraktionsfreudiger gemacht.

von Reinhard (Gast)


Lesenswert?

Ja danke Horst, klingt logisch. Also sind die Register jeweils 
gleichwertig/gespiegelt bzw. man kann auf ein-und dieselbe Speicherzelle 
(Register) über zwei unterschiedliche IO-Adressen zugreifen !?

von Horst (Gast)


Lesenswert?

> über zwei unterschiedliche IO-Adressen zugreifen !?

Ganz genau.

von spess53 (Gast)


Lesenswert?

Hi

Also ich finde im Manual (ab S.386) 4 Register, CH0DATAH, CH0DATAL, 
CH1DATAH und CH1DATAL. Und für jedes Register sind zwei Belegungen für 
Right- und Left-Adjust angegeben. Wo sind jetzt die doppelten Register?

MfG Spess

von Reinhard (Gast)


Lesenswert?

Hi Spess, Du bist offensichtlich beim DAC gelandet... :)

Beim ADC sind die Result-Register IO-Adressen doppelt vergeben, siehe 
S.384.

Gruß Reinhard

von Hagen R. (hagen)


Lesenswert?

Einerseits möchte man mit einem DMA Kanal gleich mehrere ADC/DAC Kanäle 
in/aus dem Speicher schreiben und andererseits möchte man dem 
Programmierer die Möglichkeit geben indirekt über Zeiger auf einen 
DAC/ADC Kanal zuzugreifen. So wie dies Horst als "New WSorld Order" 
beschrieben hat.

Zb. hat man im Speicher ein Stereo-WAVE liegen, also abwechselnd immer 
ein Sample für Linken und Rechten Kanal. Man möchte aber die DMA 
Resourcen schonen und nicht mit zwei, eventuell nicht-synchronen, DMA 
Kanälen diesen Sound ausgeben. Also benutzt man eine einzigen DMA Kanal 
der mit 4-Bytes-Burst Modus synchron gleich beide DAC Kanäle füttert. 
Dazu müssen aber die beiden DAC Daten Register im Speicher linear 
aufeinanderfolgen.

Gleiches Spiel beim ADC. Man möchte mit einem DMA Kanal gleich 4 ADC 
Kanäle eines ADCs in den SRAM speichern.

Andererseits möchte man in Software über indirekte Zeiger, die zur 
Laufzeit dynmisch sein können, den gleichen Konfigurationscode für 
unterschiedliche DAC/ADC Kanäle merhfach benutzten. Dazu müssen alle 
Register wie ein Record im Adressbereich gemappt werden.

Also ziemlich logisch durchdacht die Sache.

Gruß Hagen

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.