Hallo!
Ich nutze einen Xmega256A3 und möchte gerne 4 ADC Channels möglichst
zeitgleich samplen. Also nicht erst Kanal 1, wenn fertig dann Kanal 2
usw.
Ich habe dazu ADCA.Ch0-3 entsprechend eingestellt. Allerdings bin ich
jetzt nur an dem Stand, dass ich dennoch nachdem ein Kanal fertig ist,
das Interrupbit lösche und dann neu starte. Ich nutze keine Interrupts,
aber wie ich das verstanden habe muss ich das INTFLAGS selber löschen,
oder?
Kann man gleichzeitig samplen? Wie wird das eingestellt?
Tuffi schrieb:> Ich nutze einen Xmega256A3 und möchte gerne 4 ADC Channels möglichst> zeitgleich samplen. Also nicht erst Kanal 1, wenn fertig dann Kanal 2> usw.
Xmega256A3:
Two Eight-channel, 12-bit, 2 Msps Analog to Digital Converters
Wie schnell ist "möglichst gleichzeitig"?
http://ww1.microchip.com/downloads/en/DeviceDoc/doc8077.pdf
Up to two million samples per second
Two inputs can be sampled simultaneously using ADC and 1x gain stage
Four inputs can be sampled within 1.5μs
Down to 2.5μs conversion time with 8-bit resolution
Down to 3.5μs conversion time with 12-bit resolution
Kapitel 25.15 erklärt das ganze doch.
Gleichzeitig ist in der Praxis unmöglich.
Der Profi erzählt kein Wischiwaschi, sondern spezifiziert ganz genau,
welche Anforderungen er hat. Also in welcher maximalen Zeit und mit
welcher Auflösung müssen die 4 Wandlungen erfolgen?
Peter D. schrieb:> Der Profi erzählt kein Wischiwaschi, sondern spezifiziert ganz genau,> welche Anforderungen er hat. Also in welcher maximalen Zeit und mit> welcher Auflösung müssen die 4 Wandlungen erfolgen?
von Tuffi (Gast)16.03.2021 04:11
Noch Fragen?
Thomas F. schrieb:> Wie schnell ist "möglichst gleichzeitig"?>> http://ww1.microchip.com/downloads/en/DeviceDoc/doc8077.pdf>> Up to two million samples per second> Two inputs can be sampled simultaneously using ADC and 1x gain stage> Four inputs can be sampled within 1.5μs> Down to 2.5μs conversion time with 8-bit resolution> Down to 3.5μs conversion time with 12-bit resolution>> Kapitel 25.15 erklärt das ganze doch.
Das habe ich gesehen, aber nicht ganz verstanden. Gibt es da ein
Konfi-Beispiel? Mir geht es darum, ich mache bei einem Kanal eine
Stromüberwachung, die muss sehr empfindlich sein, daher muss die die
ganze Zeit laufen. Die anderen 3 Kanäle können sich abwechseln das ist
nicht so schlimm.
Tuffi schrieb:> Das habe ich gesehen, aber nicht ganz verstanden. Gibt es da ein> Konfi-Beispiel? Mir geht es darum, ich mache bei einem Kanal eine> Stromüberwachung, die muss sehr empfindlich sein, daher muss die die> ganze Zeit laufen. Die anderen 3 Kanäle können sich abwechseln das ist> nicht so schlimm.
Das ist schon mal was GANZ anderes! Also nimmst du einen ADC für dein
Stromsignal und den 2. ADC im Multiplexbetrieb für die 3 anderen
Signale.
Falk B. schrieb:> Tuffi schrieb:>> Das habe ich gesehen, aber nicht ganz verstanden. Gibt es da ein>> Konfi-Beispiel? Mir geht es darum, ich mache bei einem Kanal eine>> Stromüberwachung, die muss sehr empfindlich sein, daher muss die die>> ganze Zeit laufen. Die anderen 3 Kanäle können sich abwechseln das ist>> nicht so schlimm.>> Das ist schon mal was GANZ anderes! Also nimmst du einen ADC für dein> Stromsignal und den 2. ADC im Multiplexbetrieb für die 3 anderen> Signale.
Ich verstehe nicht, wo da steht das ich 2 ADCs habe?! Ich sehe nur EINEN
ADC. Alle Signale sind an PortA.
Peter D. schrieb:> Gleichzeitig ist in der Praxis unmöglich.
So unbedingt kann man das nicht sagen - man kann z.B. 4
Sample&Hold-Schaltungen mit dem gleichen Triggersignal schalten, das ist
dann so gleichzeitig wie der Jitter der Hardware. Vermutlich wird der TO
ja nicht Nanosekunden oder Picosekunden fordern. Aber was weiss man
schon.
Natürlich, wenn man es ganz genau nimmt scheitert Gleichzeitigkeit schon
an Einstein und der Lichtgeschwindigkeit, aber das ist relativistische
Klugscheisserei.
Georg
Tuffi schrieb:>> Das ist schon mal was GANZ anderes! Also nimmst du einen ADC für dein>> Stromsignal und den 2. ADC im Multiplexbetrieb für die 3 anderen>> Signale.>> Ich verstehe nicht, wo da steht das ich 2 ADCs habe?!
Stimmt, das war Tuffi, welcher das Datenblatt zitierte.
> Ich sehe nur EINEN> ADC. Alle Signale sind an PortA.
Na dann ist doch alles KLAR! Du musst, wie der Rest der Welt, mit einem
ADC die 4 Signale im Multiplex einlesen. Man kann da sicher deinem
Stromsignal mehr Vorrang einräumen, indem man die Sequenz z.B. so macht
ADC0 (Strom, wichtig)
ADC1
ADC0
ADC2
ADC0
ADC3
D.h. Kanal 0 läuft mit f/2, die anderen mit f/8 Abtastrate.
Mehr ist bei diesen Randbedingungen nicht drin.
Tuffi schrieb:> Ich verstehe nicht, wo da steht das ich 2 ADCs habe?! Ich sehe nur EINEN> ADC. Alle Signale sind an PortA.
Vielleicht solltest Du nicht davon ausgehen, dass die ADCs der ATxmegas
identisch mit denen der ATmegas sind. Es gibt keine starre Zuordnung
zwischen Port und ADC. Du musst dem ADC die für jeden der 4 ADC-Kanäle
verwendeten Portpins über den Kanal-Multiplexer zuordnen.
Vielleicht wäre ein Blick in die Application Note hilfreich:
http://ww1.microchip.com/downloads/en/AppNotes/00002535A.pdf
Und der nächste Blick dann in den zugehörigen Header der avr-libc:
avr/include/avr/iox256a3.h:
> #define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */> #define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */
Grüßle
Volker
Was mich interessiert war eher folgendes: Die Hardware ist fertig, alle
ADC sind an PortA. Da kann ich nichts ändern.
1. Kann ich dennoch ADCB nutzen (ggf. über PORTMUX?)
2. Wenn 1. nicht, die Sache mit dem Gain 1x ist interessant, wie ist das
zu konfigurieren? Frage ich dort ganz normal das INTFLAG ab?
Der ADC der XMega A-Serie hat doch vier Kanäle.
Wenn Du in ADC0.CTRLA die entsprechenden Start-Bits setzt, nudelt der
die Kanäle jeweils um einen ADC-Takt versetzt durch die einzelnen
Konvertierungsstufen.
Den Interrupt braucht man dann nur noch vom letzten Kanal.