AD7921 programmieren

(Firma: HAWK Göttingen) #3999388
Lesenswert?

Hallo,
 ich bin gerade dabei mit einem AD7921 eine analoge Spannung digital 
umwandeln zu lassen. Das Programm läuft fast gut aber mit einem kleinen 
Fehler.Der AD7921 hat zwei Kanäle wie es im Dattenblatt zu lesen ist:

http://www.analog.com/static/imported-files/data_sheets/AD7911_7921.pdf

mein Programm wandelt nur den Wert am ch0 um.ich weiß jetzt nicht wo das 
Problem liegen könnte.Ich habe mit Arduino Due programmiert.
mein Code sieht so aus:

#include <SPI.h>

int cs = 4;

void setup(){
  pinMode(cs, OUTPUT);                     // Pin cs (chip select) als 
Ausgang definiert
  digitalWrite(cs, HIGH);                  // cs auf 1 setzen
  SPI.begin();                             // Startet die SPI-Bibliothek
  SPI.setDataMode(SPI_MODE0);              // Setzt den SPI-Modus
  SPI.setClockDivider(cs,21);              // Stellt die Geschwindigkeit 
ein
  SPI.setBitOrder(MSBFIRST);               // Setzt die Bit-Reihenfolge 
Most-Significant-Bit, scheint Standart zu sein!!!
  Serial.begin(9600);
}

void loop()
{
  int adcWert0 = readAdc(0);
  int adcWert1 = readAdc(1);
  delay(1000);
 }

 int readAdc(int channel)
 {
   byte adcPrimaryByteMask=00101111;
   byte adcPrimaryRegister=channel<<5;
   digitalWrite(cs, LOW);
   byte adcPrimarybyte = SPI.transfer(adcPrimaryRegister);   // 
niederwertiges Byte zuerst, D15...D8
   byte adcSecondarybyte = SPI.transfer(0x00);               // 
höherwertiges Byte zum Schluss, D7...D0
   digitalWrite(cs, HIGH);
   adcPrimarybyte &= adcPrimaryByteMask;
   adcPrimarybyte = adcPrimarybyte << 8;
   int adcValue = adcPrimarybyte|adcSecondarybyte;
   return adcValue;
 }




hier(im Anhang) ist das vom Oszilloskop angezeigte Ergebnis.

Danke im Voraus.
Angehängte Dateien:

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