-
1Solder Headers to the Shield
As presented, the Sound Processing Shield has no headers attached to it for connecting to other Arduino boards. You may use either male or through headers, depending on whether another Shield is going on top of it.
The procedure for doing this is the same as with any other Shield.
-
2Solder Headers onto the BLE SPI Friend (Optional)
If you don't already know how to do it, the instructions for attaching headers to the BLE SPI Friend can be found on Adafruit's website (here).
However, unless the Sound Processing Shield is going on the top of the stack (and probably even if it is), do not use the headers provided with the breakout; instead, use short male headers, sold separately.
Once it's all done, plug the Friend into its slot on the Shield.
-
3Programming
Eventually this step will include Python code for setting up and controlling this Shield, or at least instructions on modifying it for your own purposes (with the full code going into the Files section). Until that's ready (or close to it), this spot will be a placeholder for notes on that.
First, the I2C addresses will need to be declared. The defaults:
MAX11312 = 0111000 MCP4652 = 0101000 EEPROM = 1010000
The FV-1 can only address the EEPROM at 1010000, so that one is immutable. The other two can change, depending on how the jumpers are connected. (One can still have two to four of these Shields and program the EEPROMs separately, since their Write Protect functions are controlled through the MAX11312. Just be sure that no more than one of them is Write-Capable at a time!)
Then the MAX11312 will need instructions on how to handle its I/O ports. (For purposes of these "placeholder notes," I'm using the variable names from the chip's data sheet.)
DACCTL : 1 [DACs in immediate update mode] DACREF : 0 [DAC uses external reference] TMPCTL : 3 [int & 1st ext temperature monitors enabled] THSHDN : 0 [thermal shutdown function disabled] TMPINTMONCFG : 2 [16 samples to average for current temp] TMPINTHI : 320 [max temp for int temp is 100C] TMPINTLO : 0 [min temp for int temp is 0C] TMPEXT1HI : 228 [max temp for ext temp 1 is 67.5C] TMPEXT1LO : 20 [min temp for ext temp 1 is 2.5C] FUNCPRM_5 : 512 FUNCPRM_6 : 512 FUNCPRM_7 : 512 [all DACs set to -5 to +5V] FUNCPRM_11 : 512 [ADC set to -5 to +5V] FUNCID_0 : 3 [GPO] [Mike Preamp Shutdown] FUNCID_1 : 3 [GPO] [EEPROM Read/Write] FUNCID_2 : 3 [GPO] FUNCID_3 : 3 [GPO] FUNCID_4 : 3 [GPO] [These 3 are FV-1 Program Select] FUNCID_5 : 5 [DAC] FUNCID_6 : 5 [DAC] FUNCID_7 : 5 [DAC] [These 3 control the FV-1 Pot inputs] FUNCID_8 : 3 [GPO] [FV-1 Int/Ext program select] FUNCID_9 : 1 [GPI] [FV-1 "Clip" signal] FUNCID_10 : 3 [GPO] [BLE Friend DFU] FUNCID_11 : 7 [ADC] [Mike input]
The temperature monitors are normally used to reset the MAX11312 itself if it overheats. However, this can screw up the settings, so for this instance it will instead generate an interrupt sequence that shuts down the mike preamp and/or sends an alert to the user interface. The internal one monitors the MAX11312; the external one monitors the space next to the FV-1, where it's covered by the BLE SPI Friend (if that breakout is attached).
A function will be needed to translate program selection from a single digit (1-8 on the user's screen) into binary on pins 2, 3, and 4. A related (either inclusive or separate) function can select a larger number (1-16) into the same binary with an additional digit on pin 8.
I also hope to include something that will store and recall "presets," setting not only the program as above (pins 2, 3, 4, and 8) but also the levels of the pots (pins 5, 6, and 7) and the volume levels on the MCP4652.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.