Xmega ADC und DAC

Gast #3440977
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
Gast #3441020
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren