A while ago I had a project that involved Analog Devices ADuC812 microconverter.
Amongst assorted on-board hardware, the device had two very helpful DAC converters, that could source 0-5V on their respective pins and even maintain a respectable amperage.
There was one problem though. While the manual said all you had to do was writing a specific value into a specific register, and voltage corresponding to that value would appear on output, the reality wasn't exactly that simple.
One write could move the voltage value by about 3.5V. If you wanted to switch from 0 to 5V you had to perform
MOV DAC0H,#00fh
MOV DAC0L,#0ffh
twice. (reversing the order wouldn't help.)
First write would increase the voltage to some 3-and-something volts, and only the second would get it to the right value. If I started from 2V, it would achieve the target 5V in a single write. It's not a big problem, 4 cycles instead of 2 for rapid jumps, no impact for smooth "slides" at all, but it's a weird quirk.
I'd like to ask anyone who worked with that chip - was that just my chip's problem or is this common to all ADuC812? Does it appear in other ADuC family chips? 814 etc?
As a bonus, could someone with electronic knowledge explain how that happens? What internal mechanisms can lead to such behavior?