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 | }
|