mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Auslesen eines ADC (ADS7844)


Autor: chrash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Ich versuche momentan einen 12Bit-ADC (ADS7844) von TI an einem MSP430 
zum laufen zu bekommen.
Nachdem der ACD ein 8Bit Kontrollwort bekommen hat, nimmt er sich eine 
kleine auszeit für die Wndlung und ist dann bereit die 12Bit über SPI 
rauszuklickern.

Meine Funktion zum Auslesen sieht so aus:
uint16_t ADC_Wert(uint8_t Messpunkt)
{
uint16_t Wert = 0x0000;
uint8_t LS8bit = 0x00;
uint8_t MS8bit = 0x00;
uint8_t l=0x00;

ADC_SPI_Init();

//ChipSelect@HIGH
ADC_SPI_CS_HIGH;
Wait(10);

ADC_Kanal(Messpunkt);

//Hier kurz warten , bis der ADC zum senden bereit ist
  for(l=0;l<1;l++)
  Wait(100);

//Die MS8bit der Konversion
MS8bit = ADC_SPI_Lesen();
UART_String("  MS8Bit: ");
UART_Calc_Hyperterm(MS8bit,0); 

//Die LS8bit der Konversion
LS8bit = ADC_SPI_Lesen();
UART_String("  LS8Bit: ");  
UART_Calc_Hyperterm(LS8bit,0); 

//Nun werden die 2*8bit zu einem 16bit-Wort zusammengesetzt:
Wert = (Wert | MS8bit);
Wert = (Wert << 8);
Wert = (Wert | LS8bit);

//ChipSelect@LOW
ADC_SPI_CS_LOW;

return Wert;
}


Meine Funktion zum lesen über SPI:
uint8_t ADC_SPI_Lesen()
{
uint8_t Dummy=0x00;
uint8_t ADC_Byte=0x00;

ADC_SPI_Init();

//Dummy senden um 8bit vom ADC zu empfangen:
UCB0TXBUF = Dummy;

//Jetzt werden beim rausschieben des Dummys die Daten reingeholt, der RX-Buffer ist gefüllt.
ADC_Byte = UCB0RXBUF;

return ADC_Byte;
}


Leider wird immer nur das LSB gelesen, auch wenn ich die Wartezeit für 
die Konversion erhöhe(hab auch lange Wartezeiten ausprobiert).
Im MSB steht konstant eine 0x07 drin, auch darauf kann ich mir keinen 
Reim machen ...


Kann mir jemand einen Tip geben, was ich falsch gemacht habe?




Vielen Dank schon mal fürs Lesen

Gruß
crash

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann mir jemand einen Tip geben, was ich falsch gemacht habe?
Falscher SPI-Modus?
Wie sehen die Signale mit dem Oszi aus? Insbesondere ist hier am uC der 
zeitliche Bezug vom SCLK zum MOSI interessant.

Autor: chrash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Leider hab ich kein Oszi mit dem ich die Signale so genau beobachten 
kann.
Die Werte weiß ich durch die Darstellung in Hyperterm.

Kennt vielleicht jemand eine Quelle für Beispielcode, damit ich diesen 
mal mit meinem vergleichen kann?


Gruß
crash

Autor: chrash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Fans!

Ich hab den Fehler jetzt selbst gefunden.
Oder zumindest effektiv umschifft ;)

Eigentlich sollte es ja reichen 2x8Bit zu empfangen, um dann aus den 
16Bit die nötigen 12Bit zu extrahieren.
Das Problem war die Unsinnigkeit dieser 16Bit die ich empfangen habe.
Also habe ich das Byte davor und das Byte danach auch mal angeschaut.
Insgesamt habe ich also 4 Byte über SPI eingelesen. Hiervon sind nicht 
Byte 1 und 2 die relevanten (wie ich zuerst dachte), sondern Byte 2 und 
3!
Byte 1 enthät zwar auch Daten, die sich über die Eingangsspannung am ADC 
verändern, aber die 12Bit von denen im Datenblatt die Rede ist, sind in 
Byte 2 und 3 enthalten, welche man nach dem Senden des Kontrollwortes 
empfangen kann.

Vielleicht hilfts ja irgendjemand irgendwann mal ;)

Liebe Grüße
Crash

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.