AD7705

Gast #493113
Lesenswert?
• ▲
▼
seltsam, eine Eins wäre ja noch verständlich. Im ganzen Datenblatt finde 
ich keine Angabe über das Datenformat, two's complement oder sowas. 
Scheint also einfach von Null bis 65535 zu gehen, MSB first wie auf 
Seite 32 zu sehen ist.
http://www.analog.com/UploadedFiles/Data_Sheets/AD7705_7706.pdf
Sind alle Konfigurtationsbits eingestellt? Irgendwo steht zum Beispiel, 
wenn ZERO nicht stimmt, ist "proper operation" nicht gewährleistet. 
Stimmt das unipolar/bipolar-Bit?
Gast #493235
Lesenswert?
• ▲
▼
Hallo!

Normalerweise habe ich alle Konfigurationen richtig getroffen.

Mit dieser Funktion sende ich ein Byte zum A/D-Wandler:

void spi_writeByte(unsigned char byte)
{
  int i;
  unsigned char mask = 0x80;

  CS=0;
  delay();

  for(i=0; i<8; i++)
  {

    DOUT=byte & mask;
  delay();

  sendstr("write");

  SCLK=0;
  SCLK=1;

  mask>>=1;
  }

  CS=1;
  delay();

}

Und mit dieser Funktion lese ich vom Data-Register des A/D-Wandlers:

unsigned int spi_readData()
{
  int i;
  unsigned int rByte=0;
  unsigned char mask = 0x80;

  spi_writeByte(0x38);

  CS=0;
  delay();

  for(i=0;i<16;i++)
  {

        rByte += DIN ? mask : 0;

    sendstr("Read");

    if(DIN==1)
      sendstr("1");

    if(DIN==0)
      sendstr("0");

    delay();

      SCLK=0;
      SCLK=1;
  }

  CS=1;
  delay();
  return rByte;
}

Das sendstr() habe ich nur, damit ich mit Hyperterminal beobachten kann, 
ob der A/D-Wandler gerade schreibt oder liest bzw. was er einliest.

Vl habe ich ja bei den Programmen einen Fehler?

Bin für jeden Tipp dankbar.

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