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?
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.
Dzarda
SF.
Zack
SF.
Zack
SF.
Zack