Volume Control by both Rotary Encoder & Microcontroller - ADAU1467


I have a working prototype with several rotary encoders controlling the volume of various inputs.

I want add remote control of these using a microcontroller, but I've now realised that there doesn't seem to be a register that holds the current LUT index value for me to alter.

Is there a way of achieving a volume control that can either use a rotary encoder or input from a microcontroller?

It doesn't seem like a big ask, but I've got stuck!

Thanks in advance


  • Hello Jonathan,

    The storage of the current table position is actually not in the Rotary Encoder module itself. So this is why you are having issues finding it. 

    The Interface Read and Write is the structure that is used to do this. When the rotary encoder detects the counter or counterclockwise motion it reads the memory location that is used for the Interface Read/Write. Then it increments/decrements it and outputs this new setting out of the Interface Write pin that writes to the memory location. The Rotary Encoder then takes this new value and looks up in the table the gain value to use as a gain factor for the volume control. Those gain factors you can see in the Params window. The index position you can see in the Interface Read parameter location. 

    Here is my program:

    Here is the memory location that you can read to find the current setting or write to it to change the setting.

    The Interface Read object does show up in the System output files.

    Dave T

  • Hi Dave

    Just to follow up on this one, perhaps something that can go in the development backlog if it isn't already, the Interface Read object used for EEPROM does not appear in the export files, although the memory location does show ok in the GUI


  • Hello Jonathan,

    I had performed a system files export and checked that it was in the "params" export file. I pasted the screenshot into my post. 

    What revision are you using? I am using Rev 4.6

    Dave T

  • Hi Dave

    Sorry, I wasn't clear. What you've shown works fine. I'm on Rev 4.6.

    The version of interface read that accompanies the EEPROM interface write doesn't show in "params".

    I'm using that version to hold the settings when turned off.

    Hope that makes sense