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.
Schon mal hier nachgesehen? ATxmega16A4U/32A4U/64A4U/128A4U Complete http://www.atmel.com/Images/doc8387.pdf (Achtung: 32MB Dateigröße!)
Hi Also ich habe nur 'Virtual Ports' gefunden. Kannst du mal sagen, wo das steht. MfG Spess
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 =)
Da steht eben nur das die Register doppelt vorhanden sind. Aber warum ???
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.
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 !?
> über zwei unterschiedliche IO-Adressen zugreifen !?
Ganz genau.
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
Hi Spess, Du bist offensichtlich beim DAC gelandet... :) Beim ADC sind die Result-Register IO-Adressen doppelt vergeben, siehe S.384. Gruß Reinhard
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.