www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC-Auslesen - unterschiedliche Laufzeit?


Autor: Fritz Box (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
while (1)
{
   test = get_pressure_adc_value ();
   test *= -1;                             // Nur zum debuggen
}

ADC-Wert lesen:
int32_t get_pressure_adc_value (void)
{  
   uint8_t repeat;
   int32_t adc_result = 0;

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

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

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

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

   ADC_DISABLE;                            // CS auf 'high'

   return adc_result;                      // Ergebnis zurueckgeben
}

Autor: Fritz Box (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LTC2420
http://cds.linear.com/docs/Datasheet/2420f.pdf

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

Die conversion time in Tabelle Timing Characteristics sieht schon nach 
dieser Größe aus, wenn du mit 20-Bit und ohne externen Oszillator 
arbeitest.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.