Texas AD ADS8556 will nicht messen! Serieller Betrieb

OP #2135923
Lesenswert?
• ▲
▼
Hallo Gemeinde,
ich versuche nun seite geschlagenden 2 Stunden etwas mit dem ADS8556 zu 
messen. Ich bekomme auch Werte doch leider sind die nicht Plausibel und 
ändern sich beim ändern der Spannung nicht. Bitte schaut mal in den Code 
und gebt mir nen Tip.
Danke schon mal im vorraus.

typedef union conv_ {
  unsigned long int w;
  unsigned char b[4];
} CONVERTW;


void InitADHardware(void)
{
  //Ein-/Ausgänge einstellen
  DDRD |= ((1 << SCLK));                             // Port für SCLK 
als Ausgang einstellen
  DDRB |= ((1 << FS) | (1 << SDO) | (1 << CONVST)); // Port für FS, SDO, 
CONvST als Ausgang einstellen
  //löschen
  DDRD &= ~((1 << BUSY) | (1 << SDI_A) | (1 << SDI_B) | (1 << SDI_C)); 
// Port für BUSY,SDI_A,SDI_B,SDI_C als Eingang einstellen
  SET_FS();
  SET_SCLK();
  CLEAR_CONVST();
}

void FirstConversion(void)
{
  CONVERTW val;             // declare UNION for easy conversion
  val.w=0;
  unsigned long int uiConv_A_Buffer=0;
  unsigned long int uiConv_B_Buffer=0;
  unsigned long int uiConv_C_Buffer=0;
  unsigned char i;
  unsigned long int Configuration=0xE20503FF;

  SET_CONVST();
  while(PIND & (1<<BUSY)) ;
  //SET_SCLK();
  //CLEAR_SCLK();
  CLEAR_FS();
  for (i=0;i<32;i++) {
    CLEAR_SCLK();
    //if (Configuration & (1 << 31)){
    if((Configuration >> 31)!=0){
    PORTB |= ((1 << SDO));
    }
    else {
    PORTB &= ~((1 << SDO));
    }
    Configuration = (Configuration << 1);
    SET_SCLK();
    // Read AD Port A *******************************
    if (PIND & (1 << SDI_A)) {
    uiConv_A_Buffer++;
    uiConv_A_Buffer = (uiConv_A_Buffer << 1);
    }
    else {
    uiConv_A_Buffer = (uiConv_A_Buffer << 1);
    }
    // Read AD Port B *******************************
    if (PIND & (1 << SDI_B)) {
    uiConv_B_Buffer++;
    uiConv_B_Buffer = (uiConv_B_Buffer << 1);
    }
    else {
    uiConv_B_Buffer = (uiConv_B_Buffer << 1);
    }
    // Read AD Port C *******************************
    if (PIND & (1 << SDI_C)) {
    uiConv_C_Buffer++;
    uiConv_C_Buffer = (uiConv_C_Buffer << 1);
    }
    else {
    uiConv_C_Buffer = (uiConv_C_Buffer << 1);
    }
    // **********************************************

  }
  //Ende Sequenz
  SET_FS();
  SET_SCLK();
  CLEAR_CONVST();
  val.w = uiConv_A_Buffer;
  usart_write("\n");
  usart_write_char(val.b[3]);
  usart_write_char(val.b[2]);
  usart_write_char(val.b[1]);
  usart_write_char(val.b[0]);

  val.w = uiConv_B_Buffer;
  //usart_write("B:");
  usart_write_char(val.b[3]);
  usart_write_char(val.b[2]);
  usart_write_char(val.b[1]);
  usart_write_char(val.b[0]);

  val.w = uiConv_C_Buffer;
  //usart_write("C:");
  usart_write_char(val.b[3]);
  usart_write_char(val.b[2]);
  usart_write_char(val.b[1]);
  usart_write_char(val.b[0]);

}

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.