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

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.