OWL pedal controls extension - pinout?

Morning everyone,
i would like to add a few outboard controls to the OWL, analogue buttons, faders.
Which pins on the board might be good/open for that. I have a bit of BELA experience, so could anyone give me a quick run on the technical details or even just an image of the board pinout with pins marked in color suitable for this? Ground, and unused analogue in/outs?
Also, how would i address those additional pins in pure data?
And, what are suitable controls for this, 10K linear pots? How about momentary buttons?
Thanx for any insights and excuses, if that was asked before. Couldn’t find a suitable existing thread for this other than maybe in OWL Digital.

Have a look at the pinout here: https://hoxtonowl.com/mediawiki/index.php/OWL_Digital

There are two parts to this:

  1. firstly assign pins to your pots and buttons
  2. change firmware to use your new controls

For 1) you need to find some unused pins, e.g. PF10, PF9, PA4, PA0 and PA1 (the latter two expose a UART, currently unused).
Then check the datasheet to see what functions you can assign to these pins, e.g. ADC for analogue inputs, EXTI for interrupt driven digital inputs.
STM32F407: http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf

For 2) look at the firmware to see how existing ADCs and EXTIs are handled: GitHub - pingdynasty/OwlWare: Firmware for the OWL programmable effects pedal
This might seem a little daunting. We don’t have a high-level API to hook pins up to parameters, instead you will have to use the ST libraries to do low level configuration. I’m happy to help you get through that.

The STM32F407 datasheet will probably be more useful than the reference manual: http://www.st.com/content/ccc/resource/technical/document/datasheet/ef/92/76/6d/bb/c2/4f/f7/DM00037051.pdf/files/DM00037051.pdf/jcr:content/translations/en.DM00037051.pdf

Hi, I added an external button connected directly to the internal pushbutton. Now I want to be able to push it as long as I want without triggering the preset selection mechanism.

I connected the footswitch to PA4 and after a lot of headaches I realized that only 1 pin per EXTI line is allowed and the line 4 is used for the bypass switch. So if anyone wants to add pushbutton avoid pins that end in 2 or 4 for the OWL pedal and 2 or 6 for the modular.

BTW @Martin, any tips on how to do this? I’m guessing that I have to trigger a setButtonEvent(EXT_BUTTON), follow ProgramVector->buttonChangedCallback() and find where is defined and check if the button id is EXT_BUTTON. Am I on the right direction?

It was easier than I thought. I’m just triggering pushButtonCallback( ) in the EXTI handler. It acts as the pushbutton but it doesn’t change the preset. :slight_smile:

Very good advice, thank you. Adding another push button, but as a momentary foot switch, is the first one on my list.

Yes, I used a momentary switch. It doesn’t make much sense to put a latching switch here.

I also tried to add a potentiometer. It’s fairly simple. Just need to add the PARAMETER_I and PATCH_PARAMETER_I definitions (parameter I is the next available) and reconfigure the ADC3 sequencer.

If you want more detail just ask.

Excellent, good work!
The low level configuration code can look a bit scary, but you get a long way with copy and replace.

And yes you can have several pins with the same EXTI number, you just need to write code in the callback to check which one/ones are active.

Also keep in mind that for most buttons the logic will be inverted, with an internal pull-up resistor holding the pin high and the switch connecting it to ground.

Are you sure of this? When I do SYSCFG_EXTILineConfig(SWITCH_EXT_PORT_SOURCE, SWITCH_EXT_PIN_SOURCE); the footswitch stops triggering the handler.

Also, i read this: https://stm32f4-discovery.net/2014/08/stm32f4-external-interrupts-tutorial/
There is a note at the beginning that says you can’t. I didn’t read anything about this in the datasheet, but the schematic shows a multiplexer selecting between all pins with the same number. Page 382 of this document:
http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf
And a multiplexer would only let you select one pin. It makes sense since the EXTIxx bits on the SYSCFG_EXTICRx registers are indexes, not masks.

1 Like

oh okay, I thought I’d used it this way but obviously not - my bad!