I have a rotary encoder adjusting the volume of a sine wave, and it works fine. Here's my schematic (project link attached below)
It reads the interface register 0 and also writes to it. However, when I turn the board off, and turn it on again, the value of the volume is reset back to the highest. It's very annoying to have to reset the volume on every power cycle, or worse have it at maximum volume right at the start. I need to find a way to "remember" the value of the volume during shutdown and set it back during boot, ie, for the EEPROM to store the value of interface registers during shutdown.
I read these topics and articles:
And many other links from Google. They didn't seem to apply to ADAU1452, were outdated, or simply didn't help.
I understand that interface registers are supposed to trigger a "write back" command that writes the value of the 8 interface registers to the EEPROM during shutdown. There are many things I don't understand about this process: (1) How does the IC trigger shutdown? I have, to be safe, connected a 2000 uF cap on the supply rail, does that buy enough time for the chip to realize it is shutting down and has to write to EEPROM? (2) What additional steps do I need to take so that when the board powers off, the interface register settings are saved? (3) Under what circumstances are the interface register values NOT saved? Could this be a bug with Sigma Studio software? I have version 4.2.
Please help me figure this out. I am completely lost. Thanks.
Added project file
[edited by: brightsky at 7:30 AM (GMT -4) on 10 Oct 2018]