Hallo zusammen!
Ich bräuchte mal eure Hilfe. Ich arbeite mit einem AD421, das ist eine
4-20mA Stromsenke von Analog Devices.
Den Strom kann ich schon reinprogrammieren, aber ich verstehe den LATCH
nicht so ganz.
Mein Problem ist, dass es hier kein richtigen Chip Select gibt, sondern,
soweit ich das verstehe, die Bits zwischen zwei steigenden Flanken am
LATCH empfangen werden und bei der zweiten reingeladen werden.
Soll ich jetzt vor jeder Übertragung einmal togglen und danach
ebenfalls?
WEIL: Wenn ich nun am Kommunikationsport noch ein anderes Device habe,
dann bekomme ich doch einen Konflikt mit dem ganzen, denke ich.
Dann ist es nämloch so:
LATCH TOGGLEN -> DATEN FÜR AD421 -> LATCH TOGGLEN -> LÄUFT
oder
LATCH LOW -> DATEN FÜR AD421 -> LATCH HIGH geht beim ersten mal
natürlich nicht, danach geht es nach der Methode jedoch, weil natürlich
immer zwischen zwei HIGH die Daten kommen.
Wenn nun aber irgendwas anderes noch dran ist, dann bekommt der AD421
die Daten ja auch mit und sobald ich die Latch-Leitung berühre könnte er
die falschen Daten übernehmen.
Kennt sich einer aus?
>Den Strom kann ich schon reinprogrammieren, aber ich verstehe den LATCH>nicht so ganz.
Die Latch-Leitung dient der Synchronisation: Der AD421 muß doch wissen,
wo das Datenwort anfängt. Das wird ihm markiert mit der steigenden
Flanke am Latch-Eingang.
Wenn du das Timing-Diagramm genau anschaust, siehst du, daß Latch high
zurück genommen werden muß, bevor die Datenübertragung fertig ist.
>Soll ich jetzt vor jeder Übertragung einmal togglen und danach>ebenfalls?
Wieso denn das?
>WEIL: Wenn ich nun am Kommunikationsport noch ein anderes Device habe,>dann bekomme ich doch einen Konflikt mit dem ganzen, denke ich.
Wieso denn? Du läßt die Latch-Leitung einfach auf low, solange du für
jemand anderen Daten überträgst.
>Wenn nun aber irgendwas anderes noch dran ist, dann bekommt der AD421>die Daten ja auch mit und sobald ich die Latch-Leitung berühre könnte er>die falschen Daten übernehmen.
Wieso willst du denn die Latch Leitung "berühren"??
Kai Klaas
Die Bezeichnung Latch halte ich hier für irreführend. Das ist ja kein
paralleler Port, der die Daten latcht.
Stattdessen kann man den LATCH als CS betrachten. Jedes Device bekommt
seinen eigenen CS. Pegel wie von Kai beschrieben, direkt vor Beginn
high, vor dem ende low.
DATA und CLOCK kann bei allen Devices parallel geschaltet werden.
Grüße, Peter.
>WEIL: Wenn ich nun am Kommunikationsport noch ein anderes Device habe,>dann bekomme ich doch einen Konflikt mit dem ganzen, denke ich.
Stimmt, du hast Recht. Jetzt habe ich dich verstanden. Du mußt am Ende
der Übertragung die Latch-Leitung auf high togglen, damit der Wert
übernommen wird und vom DAC ausgegeben wird.
Danach interpretiert der AD421 jeden Datenverkehr auf der Clock- und
Daten-Leitung natürlich als erneute Übertragung. Sobald dann später
irgendwann tatsächlich neue Daten zum AD421 gesendet werden und die
Latch Leitung auf high getoggelt wird, gibt der DAC bis um nächsten
Latch high Schrott aus.
Damit ergibt auch Figure 14 vom Datenblatt wenig Sinn, es sei denn, der
AD7714 wird nur einmal am Anfang konfiguriert. Bis dahin stimmt das DAC
Ausgangssignal ja sowieso nicht.
Kai Klaas
Kai Klaas schrieb:> Danach interpretiert der AD421 jeden Datenverkehr auf der Clock- und> Daten-Leitung natürlich als erneute Übertragung. Sobald dann später> irgendwann tatsächlich neue Daten zum AD421 gesendet werden und die> Latch Leitung auf high getoggelt wird, gibt der DAC bis um nächsten> Latch high Schrott aus.
Hey super, hat ja doch noch jemand reingeguckt.
Also genau das meine ich! Ich weiß garnicht, wie ich das machen soll -
meiner Meinung nach muss der komplett an einen eigenen Port, aber eben
das Schaltbild sagt, dass es auch anders gehen müsste.
Im Datenblatt steht, dass die Daten zwischen zwei LOW->HIGH
Latch-Übergänge übernommen werden. Trotzdem werden alle auf der Leitung
ankommenden Signale erstmal ins Register aufgenommen.
Wenn es denn jetzt so wäre, dass das Schiebe-Register 16Bit fasst und
alles darüber hinaus im Müll landet, dann wäre dass ja kein Problem,
jedoch stellt man den Fehlerstrom mit einem 17. Bit ein, ich muss also
drei 8-Bit-Writes machen. Und Fehlerstrom oder nicht wird leider nicht
über die ankommenden Bytes ausgewertet, dann könnte man das erste Byte
zu 0x00 setzen, sondern über die eingegangen Clock-Pulse.
Da ist noch was mit modulo32 im Datenblatt, aber das hilft mir bei
meinem Problem glaub ich auch nicht weiter, das guckt nur, ob
Fehlerstrom oder eben nicht.
Dennis
Peter Roth schrieb:> Stattdessen kann man den LATCH als CS betrachten. Jedes Device bekommt> seinen eigenen CS. Pegel wie von Kai beschrieben, direkt vor Beginn> high, vor dem ende low.
So funktioniert das leider nicht.
Ich habe mir jetzt nochmal das Datenblatt komplett durchgelesen, aber es
bleibt dabei! Es werden die Clock-Pulse zwischen zwei LATCH LOW->HIGH
gezählt, wie LATCH zwischenzeitlich aussieht, ist egal.
WIE ZUR HÖLLE KANN MAN DANN NOCH EIN ANDERES DEVICE AN EINEN
KOMMUNIKATIONSPORT HÄNGEN, OHNE DASS DER AD421 DIE DATEN MIT ÜBERNIMMT?!
as kann doch nicht sein, im Bild hängt doch auch noch ein AD-Wandler mit
an MOSI und CLK.
>WIE ZUR HÖLLE KANN MAN DANN NOCH EIN ANDERES DEVICE AN EINEN>KOMMUNIKATIONSPORT HÄNGEN, OHNE DASS DER AD421 DIE DATEN MIT ÜBERNIMMT?!
Am besten mal mit dem Hersteller reden. Ich hatte ein ähnliches Problem
mit dem AD420, das sich auch nicht mit dem Datenblatt alleine lösen
ließ. Da hat ein Telefonat mit dem Hersteller den Durchbruch gegeben.
Allerdings hatte ich damals glaube ich mit Amerika direkt telefoniert,
nicht mit dieser dämlichen Hotline, wo oft Schwachköpfe sitzen, die
keine Ahnung haben. Die schauen dann genauso wie du ins Datenblatt und
wenn es ihnen zu blöde wird, wimmeln sie dich einfach ab.
Eine Alternative wäre ja, für den AD421 eine separate Daten- und
Clock-Leitung zu verwenden.
Kai Klaas
Kai Klaas schrieb:> Am besten mal mit dem Hersteller reden. Ich hatte ein ähnliches Problem> mit dem AD420, das sich auch nicht mit dem Datenblatt alleine lösen> ließ.
Ich habe heute mal den Supoort angeschrieben, ob die mir eine
Kontaktadresse zusenden können, bis jetzt noch keine Antwort.
Weißt du denn noch, wie es mit dem AD420 war? Der ist ja quasi gleich,
nur dass der 421 noch HART-kompatibel ist.
Da gibt es einen "Asynchronous Mode", wo du den Latch-Input mit einem
Pull-up "hochbindest". Dort wird mit Start- und Stop-Bit gearbeitet.
Nach Erreichen des Stop-Bits, wird automatisch das empfangene Datenwort
in den DAC gelesen und der Ausgangsstrom aktualisiert.
Aber Achtung, der AD420 ist nicht für 4-20mA Stromquellen mit
Fremdspeisung gedacht, wie der AD421.
Kai Klaas
Kai Klaas schrieb:> Da gibt es einen "Asynchronous Mode"
OK, den gibt es bei mir nicht.
Kai Klaas schrieb:> Aber Achtung, der AD420 ist nicht für 4-20mA Stromquellen mit> Fremdspeisung gedacht, wie der AD421.
Was meinst du damit? Der Unterschied ist doch, dass dein AD420 0-20mA
kann, also durch eine extra Versorgung. Meiner kann das nicht. Oder wie
meinst du das?
Ja, das sind schon zwei unterschiedliche Dinge, klar. Der AD420 ist halt
nur 2-wire und arbeitet nur als Senke. Nunja, trozdem halt kein
UART-Protokoll. Muss ich wohl einen USCI komplett für den DAC opfern...
Vielleicht meldet sich ja noch wer von Analog Devices.