Forum: Mikrocontroller und Digitale Elektronik ARM LPC21xx mehrere AD-Conversions gleichzeitig


von Ruprecht (Gast)


Lesenswert?

Hallo zusammen,

gibt es die Möglichkeit, die AD-Wandlung auf mehreren PINs gleichzeitig 
durchzuführen.
1
void get_adc_values(void)
2
{   
3
  static unsigned int tempadvalue=0;
4
  int i=0;
5
6
  for (i=0; i<MEASURMENTS_PER_VALUE; i++)
7
  {
8
    AD0CR |= 0x01000000 | (1 << 0);                   // Start A/D Conversion         
9
       do {
10
         tempadvalue = AD0DR0;                         // Read A/D Data Register
11
      } while ((tempadvalue & 0x80000000) == 0);        // Wait for end of A/D Conversion
12
      AD0CR &= ~0x01000001;                         // Stop A/D Conversion            
13
      tempadvalue = (tempadvalue >> 6) & 0x03FF;        // Extract AIN0 Value 
14
    measured_values_float[VOLTAGE_1] += tempadvalue;
15
  }
16
17
  for (i=0; i<MEASURMENTS_PER_VALUE; i++)
18
  {
19
    AD0CR |= 0x01000000 | (1 << 1);                    // Start A/D Conversion         
20
       do {
21
         tempadvalue = AD0DR1;                         // Read A/D Data Register
22
      } while ((tempadvalue & 0x80000000) == 0);        // Wait for end of A/D Conversion
23
      AD0CR &= ~0x01000002;                         // Stop A/D Conversion
24
      tempadvalue = (tempadvalue >> 6) & 0x03FF;        // Extract AIN0 Value 
25
    measured_values_float[VOLTAGE_2] += tempadvalue;
26
  }
27
}

Versuche ich alles in einem Rutsch zu Wandeln, bekomme ich immer 
höchstens ein Wert geliefert.

von (prx) A. K. (prx)


Lesenswert?

Es gibt nur einen einzigen A/D-Wandler, mit Multiplexer vorne dran, 
wirklich gleichzeitig geht also prinzipbedingt nicht.

von Ruprecht (Gast)


Lesenswert?

Ok, wenn Multiplexing, dann sollte ein Gleichzeitig wohl wirklich etwas 
schwer umzusetzen sein. Danke für die Info.

von Robert T. (robertteufel)


Lesenswert?

@Ruprecht

der LPC2148 oder LPC2138 hat 2 ADCs, somit koennen 2 Kanaele 
gleichzeitig gewandelt werden. Der LPC211x, LPC212x oder LPC219x hat nur 
einen, also keine gelcihzeitige Wandlung. Ansonsten ist die Verzoegerung 
zwischen 2 Kanaelen mindestens die schnellste Wandelzeit.

Robert

von let (Gast)


Lesenswert?

> der LPC2148 oder LPC2138 hat 2 ADCs,

Ist mir neu. Wo steht das denn?

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

let wrote:
>> der LPC2148 oder LPC2138 hat 2 ADCs,
>
> Ist mir neu. Wo steht das denn?

Im Datenblatt.

von Ruprecht (Gast)


Lesenswert?

Mmh,

ich glaube, der Robert hat Recht...

Seite 211 vom LPC2131/2/4/6/8 User manual - Rev. 02 — 25 July 2006

-10 bit successive approximation analog to digital converter (one in 
LPC2131, LPC2132, LPC2131/01, and LPC2132/01 and two in other LPC213x 
devices).
-Input multiplexing among 6 or 8 pins (ADC0 and ADC1).

Werde ich morgen noch einmal durchlesen und probieren.

Gruß

von let (Gast)


Lesenswert?

Ja, stimmt. Im Datenblatt (16.10.2007) wird es erwähnt.
Da fehlt aber die Doku zu den Registern.
Im User manual (2.4.2008) wird kein zweiter ADC genannt und
es ist auch nur ein Registersatz dokumentiert.

Demnach ein gewöhnlicher ADC:
• 10 bit successive approximation analog to digital converter
• Input multiplexing among 4 pins or 8 pins
• Power-down mode
• Measurement range 0 V to VDDA
• 10 bit conversion time ≥ 2.44 μs (400,000 conversions per second)
• Burst conversion mode for single or multiple inputs
• Optional conversion on transition on input pin or Timer Match signal

Und die Neuerung für die /01 Devices:
• Dedicated result register to reduce interrupt overhead for every 
analog pin (see Table 20–288)

Wieso dokumentieren die den zweiten Wandler nicht? Kaputt?
Oder kann ich mal wieder nicht lesen?

von Christoph B. (christophbudelmann) Benutzerseite


Lesenswert?

let wrote:
> Ja, stimmt. Im Datenblatt (16.10.2007) wird es erwähnt.
> Da fehlt aber die Doku zu den Registern.
> Im User manual (2.4.2008) wird kein zweiter ADC genannt und
> es ist auch nur ein Registersatz dokumentiert.

[...]

> Wieso dokumentieren die den zweiten Wandler nicht? Kaputt?
> Oder kann ich mal wieder nicht lesen?

Also ich habe hier zwar nur gerade das UM10139 vom 15.08.05 auf dem 
Rechner, aber da sind alle ADC-Register doppelt aufgeführt, einmal mit 
einer 0 im Namen, einmal mit einer 1. Ein anderes User Manual kann ich 
auf der NXP-Seite auch nicht finden. Sicher, dass du gerade das richtige 
Datenblatt offen hast?

von let (Gast)


Lesenswert?

UM10114
LPC21xx and LPC22xx User manual
Rev. 03 — 2 April 2008 User manual

Das gibt es auf der Produktseite zum 2138 etwas über dem
UM10120_1 von 2005. Letzteres habe ich mir gerade herunter
geladen. Da stehen die beiden Wandler drin.

Jetzt muß mir nur noch jemand sagen das der 2368 auch zwei
Wandler hat und ich falle gänzlich vom Glauben ab ;).

von Mario P. (mariopieschel)


Lesenswert?

Im User-Manual UM10114 wird der AD1 verschwiegen im UM10120 taucht er 
aber wieder auf.

AD0: 0xE0034000
AD1: 0xE0060000

ab Seite 194
http://www.nxp.com/acrobat_download/usermanuals/UM10120_1.pdf

von Robert T. (robertteufel)


Lesenswert?

Also alle LPC23xx und LPC24xx haben nur EINEN ADC.

Koennt ihr mir ruhig glauben, hab bei der Spezifikation mitgeschrieben ( 
bei den LPC213x und LPC214x uebrigens auch ;-)
Soll es so richtig mit mehreren ADCs abgehen, dann sind auch die LPC29xx 
mal einen Blick wert. Kein USB und kein Ethernet aber CAN und 3 ADCs, 
ein 5V ADC und zwei 3V ADCs

Da gibts natuerlich Info auf der NXP Web-Seite und fuer die, die nicht 
erst suchen wollen hier auch ein Schnelleinstieg mit Infos und links:
http://www.lpc2000.com/arm9/

Robert Teufel
Partner in Silicon Valley gesucht?
Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: http://www.lpc2000.com

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.