Hallo Jungs,
nachdem ihr mir gestern mit dem Timer geholfen habt, hat der Timer zwar
nun funktion, aber die verwendung des Timers bei meinem AD7705 (ADC 16
Bit unipolar, 0-2.5V, 2.4567Mhz)bringt mich auch nicht weiter. Die
anderen Forenartikel auch nicht :-(
Also, ich versuche nun schon seit Tagen den AD7705 (auch unter MX7705
erhältlich!) über SPI ans sprechen zu bekommen.
Problem: Er konvertiert mir keine Daten, keine Daten abrufbar! DRDY = 1
:-(
(Log 1 = Keine Daten, Log 0 = Daten zum abholen bereit!)
Habe mit dem Oscar verglichen und folgendes festgestellt:
/CS in Ordnung
SCLK in Ordnung
Samplen an Rising Edge
MOSI (uc-->ADC!) in Ordnung
MISO antwortet mir immer nur nach der Anfrage ob Daten konvertiert sind
mit DRDY nicht ready (log= 1). Auch einfaches ignorieren des DRDY-Pins
bringt keine Besserung! niemals gibt er mir Null zurück!
Des Weiteren kann ich ja auch die anderen Register(Setup,Commreg etc)
auslesen und er stellt mir den Inhalt korrekt dar!
Eingebracht sind schon Timer(falls er zu langsam ist!) Des Weiteren
liegt an Reset =+5V, Vref i.O und Vcc auch i.O. Auch nach jedem Register
schreiben mit Pause und passendem /CS antwortet er mir immer, das keine
Daten bereit stehen.
Ausser irgendwann habe ich einmalig aus dem Datenregister CS56 erhalten
(das macht er meist einmal am Tag!) Wieso verstehe ich da auch nicht!
Also, ggf. hat einer von euch den Exoten schonmal ans laufen bekommen?
Der gekürzte C-Code lautet:
1
//....
2
SPI_MasterTransmit(0x21,SS_ADC12);//Com Reg Ch1 write to clk
Hallo,
danke für deine Mithilfe! Ich habe nun die beiden Fehlerquellen
entdeckt. Einmal hat "man mir" falsche Cs bei den Quarzen reingepflanzt
und auf der anderen Seite habe ich das Fsync falsch gesetzt...Naja, nun
läuft er!
Danke!
gruß
Hi,
ggf. kannste mir ja nochmal weiter helfen :-)
Ich spreche den AD7705 nun einwandfrei an und wenn nur AD7705 mit am SPI
dran hängen, dann gibt er mir auch immer einwandfrei die gewandelten
Daten zurück. Allerdings sobald ich weitere Hardware an den SPI hänge (
tristate fähig und auch in dem Zustand!) sendet mir der ADC immer ein
0x0DFF zurück(also die 16 Bit-Takte wenn ich Daten aus dem Dataregister
lesen möchte!). Weiß zufällig einer von euch, warum er mir partout dann
keine Daten mehr sendet ? Also keine gewandelten? Sobald ich dann die
Hardware "abstecke" sendet er mir munter die Daten weiter.
Danke für jeden Tipp!
greetz!
Hallo,
thx4answer.
Hmm, das ist ne gute Idee. Habe auch gerade schon die /CS mittels meines
Oscars überprüft. Es werden tatsächlich immer nur die "richtigen" CS
angesprochen.
Hmm, mal auf deinen Vorschlag gerne eingehend, dann würde es doch
heißen, dass ich eig. nie die Antwort bekommen sollte. Ein rein
zufälliges /CS für den ADC-X gibt es auch nicht. Es kommt immer zum
richtigen Zeitpunkt, genau dann wenn ich die beiden Datenregister
auslese(SLCK am takten/ CS Low und Daten über MISO einlesend; MOSI
Standby!) Den ohne weitere Hardware am SPI funktioniert die
Antwortgeberei ja einwandfrei. Habe mir den CS der weiteren Hardware
auch angeschaut. Dieser ist, wenn ich auslese stets High (so wie die
weitere SPI-Hardware es gerne möchte!) Die Auskunft des Herstellers hat
mir zugesichert, dass die zusätzliche SPI-Hardware immer Tristate ist,
wenn CS High ist. Mal angenommen, das wäre ne falschaussage ("..."),
dann würde ja immer nen High-Pegel am MISO sein, oder ? Also würde er
auch kein 0x0DFF antworten? Was meinst du den, würde nen Bustreiber mit
"wirklichem" Tristate Ausgang hilfreich sein ? Bzw. würde dann die
Antwort richtig senden?
Die Schaltung kann ich leider aus rechtlichen Diplomgründen nicht
einstellen :-( Es hängen bis zu 4 ADCs (derzeit 2 ADCS) und 2 weitere
SPI-Hardware-Bausteine dranne! Alle kriegen jeweils die SPI Leitungen
und jeder eine einzelnde /CS-Leitung!
Danke für die Mithile :-)
greetz
Hallo Jungs,
ich höre hier gerade sehr gespannt mit und ggf. ist der Thread hier ja
noch offen :-)
Ich verwende auch nen MX7706 (entsprechendes Pendant!) und er ist
ebenfalls von 0-2.5V eingestellt.
Bei 2.5V gibt er mir den digitalen Wert von 31807 aus
und bei 0V = 000 Digits...
Also fehlt da doch die Hälfte an Auflösung (Einstellungen wie bei euch!)
Er ist def als UNipolar eingestellt...
Oder muss ich da was mit diesem selfcalib machen, damit der richtig
läuft?
gruß Frank