Forum: Mikrocontroller und Digitale Elektronik Xmega ADC und DAC


von Jens (Gast)


Lesenswert?

Hallo zusammen.

In der µP-Programmierung bin ich ein absoluter Frischling. Ich habe 
bisher nur mit Delphi und C# gearbeitet.
Nun hat mich mein Chef beauftragt diesen Xmega32A4U zu programmieren und 
ich bin echt ratlos, da es hierzu sehr wenige Tutorials gibt.
Folgende Aufgabe habe ich zu bewältigen:
  - Analogsignal einlesen (Dazu hab ich schon was gefunden)
  - Filtern und aufarbeiten (das bekäme ich auch noch hin)
  - Analogsignal wieder ausgeben
Das Eingangssignal (0-2V) bekomme ich schon mit 12 Bit rein.
Wie muss ich jedoch den Ausgang initialisieren, in welchem Größenbereich 
muss mein Zahlenwert liegen um welche Spannung raus zu bekommen und 
guterletzt wie setze ich den Ausgang dann?

Vielen Dank im Voraus
Jens

von Marcel (Gast)


Lesenswert?


von Jens (Gast)


Lesenswert?

Port A Pin 0 nutze ich zum Einlesen der Spannung.
1
// ADC initialisieren
2
PORTA_PIN0CTRL |= PORT_ISC_INPUT_DISABLE_gc;
3
4
ADCA_CTRLA = ADC_ENABLE_bm;
5
6
ADCA_REFCTRL |= ADC_REFSEL_VCC_gc;
7
ADCA_CTRLB = ADC_RESOLUTION_12BIT_gc;
8
ADCA_PRESCALER = ADC_PRESCALER_DIV128_gc;
9
10
// Configuring channel 0
11
ADCA_CH0_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc;
12
ADCA_CH0_MUXCTRL |= ADC_CH_MUXPOS_PIN0_gc;
13
14
ADCA_CH0_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc;
15
ADCA_CH0_MUXCTRL = ADC_CH_MUXPOS_PIN0_gc;
16
17
ADCA_CTRLA = ADC_ENABLE_bm;
18
19
uint16_t t;
20
21
while(1){
22
    // Analog einlesen
23
    ADCA_INTFLAGS = ADC_CH0IF_bm;
24
    ADCA_CH0_CTRL |= ADC_CH_START_bm;
25
    while(!(ADCA_INTFLAGS & ADC_CH0IF_bm));
26
    t = ADCA_CH0RES;
27
}
Wenn evtl. noch jemand weiß wie man das differential einliest und an 
welchen Pins, wäre ich auch sehr dankbar.

Jens

von Basti (Gast)


Lesenswert?

Lad dir das Atmel Studio mit ASF... da sind High Level Funktionen wie 
bei fast jedem Cortex M3/M4 dabei... und viel wichtiger: viel 
Beispielquellcode...

Grüße

Basti

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.