Forum: Mikrocontroller und Digitale Elektronik msp430f169 adc dac


von marcel (Gast)


Lesenswert?

Hi

ich habe folgendes Problem, wenn ich den ADC12 und den DAC12 zusammen 
verwenden möchte wird keine ADC wandlung ausgeführt. die idee ist 
folgende adc lesen -> dsv -> dac ausgabe

ich habe mich im wesentlichen an die ti beispiele gehalten. was geht ist 
die beiden teile getrennt von einander zu betreiben, also adc lesen und 
nix weiter tun. dac init und werte ausgeben. zusammen tuts nicht :(!
kennt jemand das problem und kann mir vielleicht weiter helfen.

thx marcel.

Source:
1
void init_DAC(void)
2
{
3
  volatile int a;
4
  ADC12CTL0 = REF2_5V + REFON;              // Internal 2.5V ref on
5
  for(a=0;a<=0x658;a++)
6
  {}
7
  DAC12_0CTL = DAC12IR + DAC12AMP_0 + DAC12ENC;   // Internal ref gain 1
8
}
9
void set_DAC(int data)
10
{
11
  DAC12_0DAT = data;
12
}
13
14
15
16
void main(void)
17
{
18
  volatile unsigned int i;
19
  WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer
20
  P6SEL |= 0x01;                            // Enable A/D channel A0
21
  ADC12CTL0 = ADC12ON+SHT0_2; // Turn on and set up ADC12
22
  ADC12CTL1 = SHP;                          // Use sampling timer
23
  ADC12MCTL0 = SREF_1;                      // Vr+=Vref+
24
25
  for ( i=0; i<0x3600; i++)                  // Delay for reference start-up
26
  {
27
  }
28
  init_DAC();
29
  DAC12_0CTL &= ~DAC12ENC;
30
  ADC12CTL0 |= ENC;                         // Enable conversions
31
  ADC12MEM0 = 0;
32
  while (1)
33
  {
34
    ADC12CTL0 |= ADC12SC;                   // Start conversion
35
    while ((ADC12IFG & BIT0)==0);
36
    _NOP();  
37
    DAC12_0CTL |= DAC12ENC;
38
    set_DAC(0x6b0);// SET BREAKPOINT HERE
39
  }
40
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Warum schaltest Du in init_DAC das Bit DAC12ENC in DAC12_0CTL ein, um es 
in main unmittelbar danach wieder auszuschalten?

Du kannst (und solltest) DAC12ENC gesetzt lassen und musst zur Ausgabe 
auf den DAC lediglich DAC12_0DAT/DAC12_1DAT beschreiben.

Also: Setze das Bit in init_DAC und lass es gesetzt.

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.