ADC-Auslesen - unterschiedliche Laufzeit?

Gast #1814955
Lesenswert?

Morgen zusammen!

Ich habe eine Frage zu meinem Programm.
Ich lese hier testweise eigentlich nur einen LTC2420 (20Bit-ADC) aus, 
sonst macht das Programm grad nichts.

Jedoch ist die Laufzeit jedesmal unterschiedlich. Wie kann das sein, 
bzw. woher kommt das? Ich kann mir das nicht erklären. Ich habe mal ein 
Bild vom Oszi angehängt, sowie den entsprechenden Code.

Und nochwas - ist es OK, wenn ein ADC gut 150-160ms für eine Wandlung 
braucht?

Bin für jede Antwort dankbar!

Hauptprogramm:
1
while (1)
2
{
3
   test = get_pressure_adc_value ();
4
   test *= -1;                             // Nur zum debuggen
5
}

ADC-Wert lesen:
1
int32_t get_pressure_adc_value (void)
2
{  
3
   uint8_t repeat;
4
   int32_t adc_result = 0;
5

6
   ADC_ENABLE;                             // Chip-Select auf 'low'
7
  
8
   while (ADC_CONV_IN_PROG)                // Warten, dass Wandlung fertig
9
   {}
10

11
   LED_OUT |= LED_1;                       // <- HIER TEST-LED AN
12

13
   for (repeat = 0; repeat < 3; repeat++)  // 3 Bytes empfangen
14
   {
15
      IFG2 &= ~UCB0RXIFG;                  // RX-IFG loeschen
16
      UCB0TXBUF = 0x00;                    // Daten senden, um zu empfangen
17
      while (!(IFG2 & UCB0RXIFG)) {}       // Auf empf. Zeichen warten
18
      adc_result |= (uint8_t) UCB0RXBUF;   // Daten in Variable speichern
19
    
20
      if (repeat < 2)                      // 2 Bit-Shifts ausfuehren
21
      {
22
         adc_result = (adc_result << 8);   // Bit-Shift um 1 Byte
23
      }
24
   }
25

26
   LED_OUT &= ~LED_1;                      // <- HIER TEST-LED AUS
27

28
   ADC_DISABLE;                            // CS auf 'high'
29

30
   return adc_result;                      // Ergebnis zurueckgeben
31
}
Angehängte Dateien:
Gast #1814983
Lesenswert?

VERGESST ES!!!!!!!

Ich bin so dumm! Ich hatte die LED noch von einem vorigen Test mit einem 
Timer in Verwendung- man bin ich dumm². Der Timer hat mir also immer 
dazwischen gemurkst.

Nun sind es immer 160ms. Trotzdem - solang für eine Wandlung?

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