ADC einschalten..welche Reihenfolge?

Gast #4709224
Hallo,
ich bekomme den ADC vom STM32F373 nicht zum laufen..
Muss ein der globale Interrupt eingeschaltet sein oder sowas oder stimmt 
die Reihenfolge nicht?
Er führt nicht mal die While Schleife aus, das Ergebnis ist immer 0 
statt 99
1
void adc_read_(int n){
2
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
3
SDADC1_CR1.B31 = 1; // Init ADC1
4
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
5
delay_ms(10);
6
ADC_CR2.B0 = 0;     //SIgma Delta ADC ausschalten
7
delay_ms(10);  // 100 Microsekunden Stabilisierung
8
SDADC1_CR2.B19=0;
9
SDADC1_CR2.B18=0;
10
SDADC1_CR2.B17=0;
11
SDADC1_CR2.B16=0;  //Wähle Kanal 1 von SDADC 1
12
SDADC1_CONF0R.B27 = 0; // set  26/26 auf 0 / 1 für single ended mode
13
SDADC1_CONF0R.B26 = 1; // set  26/26 auf 0 / 1 für single ended mode
14
// auf 11 setzten für Single endes Zero mode negativ ist dann auf GND
15
SDADC1_CR1.B17 = 1;
16
SDADC1_CR1.B31 = 0; // Init ADC1
17
SDADC1_CR1.B17 = 1;
18
delay_ms(10);
19
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
20
delay_ms(10);  // 100 Microsekunden Stabilisierung
21
SDADC1_ISR.B3=1;
22
SDADC1_CR2.B23=1; //Starte ADC Wandlung
23
while (SDADC1_ISR.B3 = 1) {
24
ADC_regular = 99;//SDADC1_RDATAR;
25
 }
26
}
Gast
Wieso fühlt man sich in diesem Forum eigentlich immer wie bei jeopardy?

Ok, a
slo müßte es wohl richtig heiteßn
while (SDADC1_ISR.B3 == 1) anstelle von while (SDADC1_ISR.B3 = 1)

Habe ich korrigiert..es kommt dennoch 0....

@Frank
Du meinst
while (SDADC1_ISR.B3 != 1)

Dann bleibt das Dispaly leer, hängt also in der While Schlefie 
fest..vermutlich(C Anfänger)
Gast
1
void adc_read_(int n){
2
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
3
SDADC1_CR1.B31 = 1; // Init ADC1
4
SDADC1_CR1.B10=1;
5
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
6
SDADC1_CR2.B23=1; //Starte ADC Wandlung
7
delay_ms(10);
8
SDADC1_CR2.B22=1; //CONTINOUS rEADING
9
delay_ms(10);  // 100 Microsekunden Stabilisierung
10
SDADC1_CR2.B19=0;
11
SDADC1_CR2.B18=0;
12
SDADC1_CR2.B17=0;
13
SDADC1_CR2.B16=0;  //Wähle Kanal 1 von SDADC 1
14
SDADC1_CONF0R.B27 = 0; // set  26/26 auf 0 / 1 für single ended mode
15
SDADC1_CONF0R.B26 = 1; // set  26/26 auf 0 / 1 für single ended mode
16
// auf 11 setzten für Single endes Zero mode negativ ist dann auf GND
17
SDADC1_CR1.B17 = 1;
18
SDADC1_CR1.B31 = 0; // Init ADC1
19
SDADC1_CR1.B17 = 1;
20
delay_ms(10);
21
ADC_CR2.B0 = 1;     //SIgma Delta ADC einschalten
22
delay_ms(10);  // 100 Microsekunden Stabilisierung
23
SDADC1_CR2.B23=1; //Starte ADC Wandlung
24
while (REOCF_bit == 0);
25
ADC_regular = SDADC1_RDATAR;
26

27
}
so gehts auch nach wie vor nicht...
Gast
Paul schrieb:
> Du meinst
> while (SDADC1_ISR.B3 != 1)
> Dann bleibt das Dispaly leer, hängt also in der While Schlefie
> fest..vermutlich(C Anfänger)

Das ist negieren.
Nein, ich meine so
1
while (1=SDADC1_ISR.B3)
2
{}

Dann würdest du vom Compiler hingewiesen werden dass da was nicht 
stimmen kann.
Gast
so gehts auch nicht :-(
1
void adc_init_16Bit(int n){
2
  ADON_bit =0; // ADC on/off
3
 SDAD1EN_bit =1;
4
INIT_SDADC1_CR1_bit = 1; // Init ADC1
5
delay_ms(10);
6
   SDADC1_CR2  = 0b00001100000000000000000000000001;
7

8
 //RCONT_bit =1; // use continius measurement
9
 //ADC1_CR1  := %00000000000000000000000000000000;
10
 REOCIE_bit=0;
11
 INIT_SDADC1_CR1_bit = 0; // Init ADC1
12
ADON_bit =1; // ADC on/off
13
}

1
int adc_read_16Bit(int n){
2
/*SDADC1_CR2.B19=0;
3
SDADC1_CR2.B18=0;
4
SDADC1_CR2.B17=0;
5
SDADC1_CR2.B16=0;  //Wähle Kanal 1 von SDADC 1 */
6
delay_ms(1);  // 100 Microsekunden Stabilisierung
7
RSWSTART_bit=1; //Starte ADC Wandlung
8
while (REOCF_bit == 0);
9
delay_ms(5);
10
adc16bit = SDADC1_RDATAR;
11
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.