Forum: Mikrocontroller und Digitale Elektronik AD7495


von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich muss mich leider an die Community wenden, weil ich keine Idee mehr
habe wo mein Problem liegt.

Ich möchte mittels externen ADC (AD7495) eine Spannung messen. Der Ad
Wandler ist Hardwaremaessig am SPI Bus des ATmega16.

Die ADC Routine laeuft folgend ab:

Ich setze CS (SS) auf Low danach schiebe ich ueber MOSI 2* 8Bit raus,
nachdem 16 Clocksignal (SCLK) setze ich CS (SS) wieder auf High.
Eigentlich sollte ich jetzt alle Daten ueber MISO empfangen haben. Gebe
ich mir den 16Bit Wert aus erhalte ich immer 0.

Ich hab im Anhang meine Routinen und hoffe jemand hat nen Tipp fuer
mich wo mein Problem liegen koennte.

µC: AVR ATMEGA16 @4Mhz

Gruß,
Dirk

von Bernhard S. (bernhard)


Lesenswert?

Hallo Dirk,

>Ich setze CS (SS) auf Low danach schiebe ich ueber MOSI 2* 8Bit raus,
>nachdem 16 Clocksignal (SCLK) setze ich CS (SS) wieder auf High.

Überprüfe bitte zuerst die Hardware, mit einer einfachen LED oder einem
Oszi folgendes prüfen:

- geht CS wirklich auf LOW ?
- werden wirklich an MOSI Daten gesendet?

wenn das funktioniert, kannst Du MOSI und MISO miteinander verbinden,
d.h. der Master empfängt seine eigenen Daten, somit kannst Du Deine
Software Master-Seitig schonmal testen.

Bernhard

von Dirk (Gast)


Lesenswert?

Hi,

/CS habe ich geprüft indem ich einige Warteschleifen >1Sek beim /CS
Wechsel eingefuegt habe.

MOSI und MISO werde ich heute abend mal miteinander verbinden und
prüfen.

Leider besitze ich hier kein DSO sonst würde ich einmal kurz die Daten
sampeln, falls jemand ncoh einen Tipp hat wuerde ich mich ueber eine
Antwort freuen.

Ich werde heute abend nochmal Bericht erstatten.

Gruß,
Dirk

von Bernhard S. (bernhard)


Lesenswert?

Was ist DSO? Deutsche Stiftung Organtransplantation

Bernhard

von Dirk (Gast)


Lesenswert?

Hi,

DSO = Digital Speicher Oszilloskope

Dirk

von Dirk (Gast)


Lesenswert?

Hi,

so habe mal MISO und MOSI verbunden und ich erhalte die Sendewerte. Der
AD Wandler gibt mir immer noch 0 zurueck.

Ich hab keine Idee mehr und kann mir das nicht erklaeren.

Gruß,
Dirk

von Bernhard S. (bernhard)


Lesenswert?

Hallo Dirk,

Welchen Wert haben die Pull-Up-Widerstände ?

Clock Polarity und Clock Phase geprüft ?

Nicht dass Dein AD7495 die Signale nicht versteht ;)

Könntest Du uns Deine Schaltung zur Verfügung stellen?

Bernhard

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

>Welchen Wert haben die Pull-Up-Widerstände ?

Der Pullup am /CS Pin betraegt 10k. Für MISO hab ich keinen bzw. auch
keinen internen aktiviert. Ein Test mit aktivierten internen Pullup
blieb leider auch ohne Erfolg.CPOL habe ich in der Init beachtet (CPOL
= 1). Eine Test mit CPHA 1 und 0 blieb leider ohne Erfolg.
Eine kleine selbst geschriebene Funktion zur Ausgabe des Clocks und des
Samplen der Daten auf Miso brachte auch nix.

Ein Screenshot befindet sich im Anhang. Vin geht auf ein Spgteiler zum
Schutz des ADC's.

Langsam bestaerkt sich das Gefuehl das der Chip aus irgendwelchen
Gruenden defekt ist.

Gruß,
Dirk

von Bernhard S. (bernhard)


Lesenswert?

Hab mir gerade mal das Datenblatt angeschaut.

Ist ja interessant, der AD7495 kann nur über MISO Daten an den µC
senden.

Demzufolge ist MOSI bei Dir am µC nicht beschaltet?

Wenn ich es jetzt richtig überschaut habe, dann sendet der AD7495
sofort Daten, wenn CS auf LOW gezpgen wird und SCK einen Takt sendet.

Aber welche Bedeutung hat VDrive ?

von Bernhard S. (bernhard)


Lesenswert?

Hoffentlich stimmt der LOW PEGEL bei SS (R103/R104) ?

von Dirk (Gast)


Lesenswert?

Hi,

>Wenn ich es jetzt richtig überschaut habe, dann sendet der AD7495
>sofort Daten, wenn CS auf LOW gezpgen wird und SCK einen Takt sendet.

Richtig, lowpegel liegt bei 0,3V an /SS. VDrive ist fuer die SPI I/O's
(5V/3,3V Systeme).

>Demzufolge ist MOSI bei Dir am µC nicht beschaltet?

MOSI haengt offen, weil ich nur die Clockimpulse benoetige und das
samplen auf MISO. Der AD Wandler besitzt auch keine Register fuer
Commando's / Einstellungen.

Ich hab mir jetzt nochmal ganz genau die PCB angeschaut und so wie es
aussieht hat der Bestueckungsautomat nen Kondensator verloren. Der
Kondensator ist zwischen MISO und /SS verloetet. Leider kann ich erst
morgen diesen entfernen und testen. Ich gebe morgen abend bescheid, ob
die Entfernung zum Erfolg fuehrte.

Ich bedanke mich recht herzlich fuer deine Beteilung @Bernhard

Gruß,
Dirk

von Bernhard S. (bernhard)


Lesenswert?

>Der Kondensator ist zwischen MISO und /SS verloetet.

Das könnte natürlich die Ursache sein

>Ich bedanke mich recht herzlich fuer deine Beteilung

gern geschehen

Bernhard

von Dirk (Gast)


Lesenswert?

Hallo,

ich wollte nur kurz bescheid geben.

Der AD Wandler funktioniert jetzt einwandfrei. Es war kein
Softwarefehler sondern es lag am Kondensator zwischen /SS und SCLK,
durch diesen Kondensator hat sich die Rise und Fall Time des
Clocksignals so stark veraendert.

Gruß,

Dirk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.