ADuC812 benötigt einen doppelt geschriebenen DAC-Wert. Ist das normal/üblich?

Vor einiger Zeit hatte ich ein Projekt, das den ADuC812-Mikrokonverter von Analog Devices beinhaltete .

Neben verschiedener integrierter Hardware verfügte das Gerät über zwei sehr hilfreiche DAC-Wandler, die 0-5 V an ihren jeweiligen Pins liefern und sogar eine respektable Stromstärke aufrechterhalten konnten.

Es gab jedoch ein Problem. Während das Handbuch besagte, dass Sie lediglich einen bestimmten Wert in ein bestimmtes Register schreiben müssten und eine diesem Wert entsprechende Spannung am Ausgang erscheinen würde, war die Realität nicht ganz so einfach.

Ein Schreibvorgang könnte den Spannungswert um etwa 3,5 V verschieben. Wenn Sie von 0 auf 5 V umschalten wollten, mussten Sie eine Leistung erbringen

 MOV DAC0H,#00fh
 MOV DAC0L,#0ffh

zweimal. (Die Reihenfolge umzukehren würde nicht helfen.)

Das erste Schreiben würde die Spannung auf etwa 3 und etwas Volt erhöhen, und erst das zweite würde sie auf den richtigen Wert bringen. Wenn ich mit 2 V beginnen würde, würde es das Ziel von 5 V in einem einzigen Schreibvorgang erreichen. Es ist kein großes Problem, 4 Zyklen statt 2 für schnelle Sprünge, überhaupt kein Aufprall für sanfte "Rutschen", aber es ist eine seltsame Eigenart.

Ich möchte jeden fragen, der mit diesem Chip gearbeitet hat - war das nur das Problem meines Chips oder ist das allen ADuC812 gemeinsam? Erscheint es in anderen Chips der ADuC-Familie? 814 usw.?

Als Bonus, könnte jemand mit elektronischen Kenntnissen erklären, wie das passiert? Welche internen Mechanismen können zu einem solchen Verhalten führen?

Sind Sie sicher, dass Sie beide Bytes gleichzeitig schreiben? Kannst du das Montageteil zeigen?
@Dzarda: Soweit ich mich erinnere, wurden zwei Hälften des Registers separat geschrieben, aber das Bewegen von DAC0H von 0 auf f sollte die Spannung auf etwa 4,68 V bringen, und die Spannung näherte sich nicht 4.
Wie haben Sie DACCON konfiguriert?
@Zack: PD0=1 PD1=1 SYNC=0 CLR0=1 CLR1=1 RNG0=0 RNG1=0 (und 5V an VRef angeschlossen) MODE=0. Andere haben sich im Laufe des Tests geändert, aber ich habe mich nie um SYNC=1 gekümmert
VREF ist 5V, richtig? Was ist AVDD?
VRef, AVdd und DVDd waren alle 5 V von demselben Netzteil; Das Board war ihr Standard-Evaluierungsboard, das in keiner Weise modifiziert wurde (außer dem Anbringen vieler benutzerdefinierter Schaltkreise an seinen IO-Headern; es beinhaltete das Verbinden von AVdd mit VRef.)
@SF: Wenn man sich das Datenblatt ansieht, muss VRef gleich oder niedriger als AVdd sein, sonst können seltsame Dinge passieren, aber das ist hier nicht der Fall, also kratzt an dieser Idee. Ich würde versuchen, SYNC = 1 zu setzen, wie Scott vorschlägt

Antworten (1)

Das Datenblatt schlägt vor, dass DACCON SFR Bit 2 (SYNC) auf 1 gesetzt werden muss, damit die Aktualisierung erfolgt, sobald DACXL geschrieben wird. In Ihren Kommentaren scheinen Sie es auf 0 gesetzt zu haben. 1 sollte der Standardwert sein. Die Tabelle auf Seite 21 zeigt, dass Sie das Sync-Bit verwenden können, um mehrere DACs gleichzeitig zu ändern, indem Sie alle Register laden, wenn SYNC = 0 ist, und dann SYNC auf 1 setzen.

... also, wenn SYNC 0 ist und ich die Register lade, was soll passieren? (Was tatsächlich passiert, ist, dass die Spannung irgendwo in Richtung der angegebenen geht.)
Soweit ich das beurteilen kann, sollte nichts passieren, bis SYNC auf 1 gesetzt ist – was bedeutet, dass ich nicht ganz erklären kann, warum das zweimalige Schreiben des Werts ein Update verursacht, ohne viel mehr über das Gerät zu lesen. Ich habe Ihre Frage mit einem Datenblatt-Link zu analog.com/static/imported-files/data_sheets/ADUC812.pdf bearbeitet , aber sie wartet auf die Genehmigung. Seite 21 wird Sie interessieren.
Daraus sieht es so aus, als hätten die DACs drei verschiedene Deaktivierungsschalter: Power, Force 0V, SYNC.