Forum: Mikrocontroller und Digitale Elektronik DAC mit ADC am XMEGA 128A1 messen


von Stefan (Gast)


Lesenswert?

Hallo ,

Ich spiele gerade ein wenig mit dem XMega 128A1. Prinzipell sollte es 
möglich sein den DAC Ausgang mit dem ADC zu messen. Die AppNotes 1300 
und 1301 habe ich gelesen. Das Forum habe ich auch durchsucht. Google 
hilt nicht weiter. Ich kann die Temperatur messen, VCC und Bandgap 
klappt auch wunderbar nur der DAC scheint etwas widerwillig.

Die Initialisierung:

  ADCA.CTRLA       = ADC_FLUSH_bm;
  ADCA.REFCTRL     = ADC_REFSEL_INT1V_gc|ADC_TEMPREF_bm|ADC_BANDGAP_bm;
  ADCA.PRESCALER   = ADC_PRESCALER_DIV512_gc;
  ADCA.CTRLB       = ADC_RESOLUTION_12BIT_gc;

  ADCA.CH0.CTRL    = ADC_CH_INPUTMODE_INTERNAL_gc;
  ADCA.CH0.MUXCTRL = ADC_CH_MUXINT_DAC_gc;

  ADCA.CTRLA  = ADC_ENABLE_bm;
  _delay_us(100);

Messen:

  ADCA.CH0.INTFLAGS = ADC_CH_CHIF_bm;
  ADCA.CH0.CTRL |= ADC_CH_START_bm;
  while (ADCA.CH0.INTFLAGS == 0);

  Wert = ADCA.CH0.RES -200;

Egal was ich auf welchem DAC auch immer ausgebe der Wert liegt etwa bei 
1700. Der DAC Ausgang Single oder Dual ist korrekt und mit Scope 
kontrolliert. Hat irgendwer eine Idee ?

in dankbarer Erwartung Stefan

von Avr N. (balze)


Lesenswert?

Hallo Stefan,

hast Du denn "DAC Internal Output Enable" gesetzt?
in etwa so:
DAC.CTRLA |= DAC_IDOEN_bm;

MfG,

Balze aka AVR Noob

von Stefan (Gast)


Lesenswert?

Hallo Balze,

Nö , habe ich natürlich nicht. Soviel zum Thema Datenblätter habe ich 
gelesen. Ich kann's erst die nächsten Tage testen, aber ich denke das 
ist es.

vielen Dank Stefan

von Stefan (Gast)


Lesenswert?

Hallo Balze,
it works !
nochmals vielen Dank Stefan

von Analphabet (Gast)


Lesenswert?

Falls du gerade versuchst den DAC zu kalibrieren, kannst du den fertigen 
Code veröffentlichen? :-P

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.