msp430f169 adc dac

Gast #606167
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
}

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