mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD Wandler ADS8320


Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat von Euch schon jemand mit dem AD Wandler ADS8320 von TI via SPI an
einem Atmel AVR gearbeitet? Ich habe das Problem, dass ich diesen nicht
am SPI des Atmel zum Laufen bekomme.

Jedenfalls bekomme ich nur 0xff´s zurück und weiss nicht wieso. Ich
habe mir ein Testboard gebaut gemäß der Schaltung im Datenblatt um
einige Tests bezüglich der Geschwindigkeit zu fahren. Das Board haben
sich auch schon drei Leute angeschaut und finden Schaltungstechnisch
keinen Fehler. Daran wird es also wahrscheinlich nicht liegen.

Gibt es sonst einige Kniffe zu diesem Wandler die ich vielleicht nicht
berücksichtige?

Ich werde morgen mal ein Bild vom Oszi mit den Signalen vom MISO, SCLK,
SS anhängen damit das Problem vielleicht etwas verständlicher ist.

Aber vielleicht hat ja schon jemand eine Idee. Es gibt wohl auch schon
einen ähnlichen Thread, aber wie das meist in Foren so ist werden nach
einer Erleuchtung des Fragenden die Erkenntnisse nicht mehr
weitergeposted so dass das Problem für die "Nachwelt" damit nicht
gelöst ist.

Ciao Axel

Autor: Axel (Gast)
Datum:
Angehängte Dateien:
  • preview image for A.JPG
    A.JPG
    169 KB, 191 Downloads

Bewertung
0 lesenswert
nicht lesenswert
So da habe ich nun mal den Oszi Bildschirm mit angehängt.

oben Ch1 -> Das was am Dout des AD Wandlers rauskommt.
            (Immer dasselbe, egal ob der Signalpin direkt an Masse oder
Vref liegt)

mitte Ch2 -> die generierte SPI Clock (schiebe 3 mal ein Byte ins SPDR
damit die Clock vom Controller erzeugt wird.

unten Ch3 -> Das Chip Select Signal.

Ich nutze bei einer Clock von 3.6864x10^6 einen Teiler von 4, habe aber
auch schon mit anderen Clocks rumexperimentiert. Hat aber leider auch
nichts gebracht.

Vielleicht weiss ja jemand von Euch weiter.

Axel

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand eine Idee?

Schade

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bist du dir sicher dass dein MC als Master läuft und nicht
zwischenzeitlich in den Slave Modus geschaltet hat? (siehe SS Pin im
Datenblatt!)
Was für eine Skalierung haben CH1,CH2 und CH3 (5V,1V,10V)???/DIV
Warum zieht CH1 von 3,3V ? auf 5V

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schicke 'mal einen Codeschnipsel ohne Kommentar; vielleicht ist
eine Anregung dabei.

#ifdef ADS8320
uint get_adc()    // 7822 und 8320
{
uint temp;
char n, samples=0;
  PORTC &= ~ADC_CS;    // cs auf 0
  n = SAMPLES_8320;
  do {
    PORTC &= ~ADC_CLK;    // clk auf 0
    kurz();
    samples++;
  //  kurz();
    PORTC |= ADC_CLK;    // clk auf 1
//    kurz();
  } while(PINC & ADC_DAT && n--);  // bis 0-bit erscheint
  n = 16;      // immer 16 bit lesen
  while(n--) {      // 16 bit einlesen
    PORTC &= ~ADC_CLK;    // clk auf 0
    temp <<= 1;      // ergebnis schieben
    PORTC |= ADC_CLK;    // clk auf 1
    if(PINC & ADC_DAT) temp++;  // bit 1 uebernehmen
  }
  PORTC &= ~ADC_CLK;    // clk auf 0
  PORTC |= ADC_CS;    // cs auf 1
  if(samples <= SAMPLES_7822) return(temp &0xfff0);
  else  return(temp);
}

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wolfram
Ich habe heute im Datenblatt auch gelesen dass es wohl sehr wichtig ist
den /SS korrekt zu schalten bzw. auf High zu legen. Den lasse ich aber
offen da ich den /CS vom Slave über PINB0 ansteuere. Mit offen meine
ich ihn nicht auf High Pegel zu ziehen.

Was mich eher interessiert ist, dass der ADC ja zum Wandeln auch eine
Clk(Ch2) braucht, diese aber (siehe Oszi Pic) erst nach dem Chip
Select(Ch3)und dem High-Pegel des ADC Dout(Ch1) beginnt.

@Michael
Danke für Deine Anregung. Der Code ist gut wenn man nicht das
integrierte SPI nutzen möchte. Das ist aber meine Voraussetzung es
darüber zu machen. Trotzdem nocheinmal Danke!

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, nochmal zu den Oszi Einstellungen:

Die Clock scheint im Pegel nur falsch zu sein. An dem Kanal hing ein
x10 Tastkopf. Ausserdem wollte ich nur mal schnell ein Bild haben und
hab da an das Layout des Bildes keine Zeit verschwendet.

Die Frage warum der Dout nach dem Tristate Zustand jedoch auf 3,3V geht
und nach den 3 gesendeten Bytes nicht auch wieder auf High geht, stelle
ich mir auch gerade. Die Schaltung hängt bei mir am STK500 und der gibt
bekanntlich 5V als VTG ab. Jo jo.
Vielleicht habe ich das Teil ja schon beim einlöten gehimmelt. Mist nur
dass ich vom Baustein  keinen mehr habe.

Noch jemand eine Idee?

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch nach der Kontrolle des /SS PINs ist das Ergebnis das gleiche.

@Wolfram

Wo bitte siehst Du dass der Baustein als Slave fungiert?


Axel

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal mein Sourcecode.
 Vielleicht findet da ja jemand einen Fehler.

#include <avr/io.h>
#include <avr/iom32.h>

int main(){
PORTB  =  0x11;
DDRB  =  (1<<PINB0)|(1<<PINB7)|(1<<PINB5)|(1<<PINB4);
SPSR  =  0x00;
SPCR  =  0x50;
unsigned char i;


while(1){
  PORTB&=FE; //CS auf LOW
  for(i=0;i<3;i++){
     SPDR=  0xFF;
     while(!(SPSR&(1<<SPIF)));
     }
  PORTB|=0x01; //CS auf HIGH
}
return 0;
}

Autor: Drei Newton (3_newton)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wasn das für ein Oszi?
3N

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein Yokogawa. Typnummer habe ich nicht im Kopf fängt aber glaub
ich mit ner 15 an! Hat zudem einen Bernsteinfarbenes Display und ein
Disklaufwerk rechts am Bildschirm.

Axel

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur als Info. Das mit dem ADS8320 habe ich nun sein gelassen. Das
Bauteil scheint wohl defekt zu sein. Daher habe ich nun einen ADS8344
von TI genommen. War eh sinniger, da ich mehrere Eingänge eh gebraucht
hätte. Passt so also ganz gut.

Und vor allem....... der läuft. War nur eine Krux den auf eine
Testplatine zu löten.

Danke nochmal für die zahlreichen Tipps ;-)

Axel

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.