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

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