MSP430 ADC mehrere Kanäle

OP #3159607
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
}
Gast #3159764
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                   ^^^ ???
OP #3159889
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.