Forum: Mikrocontroller und Digitale Elektronik MSP430 ADC mehrere Kanäle


von L. T. (tilo)


Lesenswert?

Hallo,

ich bin dabei mit den MSP430G2231 und seinen ADC10 mehrere Kanäle 
gleichzeitig zu messen. Mein Problem dabei ist das jetzt das die 
Messwerte in dem Array in dem ich die Ablege immer an unterschiedlichen 
stellen ist. Und das soll so ganz bestimmt nicht sein. Kann mir jemand 
sagen was bei mir falsch ist.
Kann es sein das ich dem ADC nicht genug zeit lase?

Danke schonmal für eure Hilfe.
1
#include "msp430x20x2.h"
2
3
void adc_init(void){
4
  static unsigned int res[11];
5
6
  ADC10CTL0 &= ~ENC;
7
  ADC10CTL0 = SREF_1 + REFON +  ADC10ON + ADC10SHT_3 + ADC10IE + REF2_5V + MSC;  
8
// use internal ref, turn on 2.5V ref, set samp time = 64 cycles REF2_5V
9
10
  ADC10CTL1 = INCH_11 + CONSEQ_3 + ADC10DIV_1;  
11
//Kanal auswählen; Art der Messung bestimmen;Teiler für ADC
12
  
13
        ADC10DTC0 =  ADC10CT;
14
  ADC10DTC1 = 0x0B;
15
  ADC10SA = (int)res;
16
  ADC10CTL0 &= ~ADC10IFG;
17
  ADC10CTL0 |= ENC + ADC10SC;;    
18
}
19
20
#pragma vector=ADC10_VECTOR
21
__interrupt void adc10_isr(void) {
22
23
  static unsigned int Toffset=11;
24
25
    unsigned long temp_V = ((ADC10MEM/ 1024)*2,5);  //Ref 2,5 V Spannungsmessung
26
    unsigned long temp_C=(((2.5*((float)ADC10MEM + Toffset))/1023)-0.986)/0.00355;  //Temperatur berechnen
27
    ADC10CTL0 &= ~ADC10IFG;
28
29
30
}

von Arduino Boy (Gast)


Lesenswert?

Wenn deine Programmierkünste genauso lax wie deine Rechtschreibung sind, 
dann wird das mit "dir helfen wollen" eh nichts ...
Lass die Finger von CCS und IAR und sattle auf Energia um.

https://github.com/energia/Energia/wiki/Getting-Started

Ein MSP430 Arduino-Clon - genau das Richtige für Hobbyprogrammierer.

von nur mal so (Gast)


Lesenswert?

L. Tienson schrieb:
> static unsigned int Toffset=11;
#define Toffset 11

L. Tienson schrieb:
> unsigned long temp_V = ((ADC10MEM/ 1024)*2,5);  //Ref 2,5 V Spannungsmessung
>unsigned long temp_C=(((2.5*((float)ADC10MEM + Toffset))/1023)-0.986)
>/0.00355;  //Temperatur berechnen
Ich sehe kein array, sondern nur lokale Variablen in der ISR. Wozu die 
auch immer dienen.

L. Tienson schrieb:
> unsigned long temp_V = ((ADC10MEM/ 1024)*2,5);
Was sagt der Compiler zu                   ^^^ ???

von L. T. (tilo)


Lesenswert?

Das Array ist ganz oben 3 Zeile und ich nutze CCS weil ich muss nicht 
weil ich will :(.



nur mal so schrieb:
> unsigned long temp_V = ((ADC10MEM/ 1024)*2,5);
Was sagt der Compiler zu                   ^^^ ???

Ich versteh nicht ganz was du da meinst? Falls du wissen willst wozu ich 
die Zeile hab die brauch ich zur Berechnung der Versorgungsspannung die 
ich später an anderer Stelle brauch.

von Daniel (Gast)


Lesenswert?

Weil es 2.5 heißen muss....

von Dummschwaetzer (Gast)


Lesenswert?

ADC10SA = &res;

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.