Using 6 Pots on the FV-1

Hardware questions and issues with the FV-1

Moderator: frank

Post Reply
amz-fx
Posts: 38
Joined: Wed Sep 06, 2006 7:06 am
Location: Louisiana, USA
Contact:

Using 6 Pots on the FV-1

Post by amz-fx »

This is an untested idea, and there may be techincal limitations of the FV-1 that would keep it from functioning properly.

There are only 3 Pot inputs to the FV-1 but sometimes you need more for a program. The way to add more pots is to multiplex the pot input channels on the FV-1 so that multiple pots can be used. This has limitations but here's how:

We will use DACR as an output to control the multiplexer. The CD4053 has three 2-to-1 channels, which is perfect for what we are doing. Pot1 and Pot2 would be the inputs on the first channel and the output goes to the FV1 pin for pot0. Pot3 and Pot4 would be the inputs on the second channel and the output goes to the FV1 pin for pot1. Pot5 and Pot6 would be the inputs on the third channel and the output goes to the FV1 pin for pot2.

In the program, we set the DACR output alternately high and low to drive the control pins for all three of the multiplexer channels. This means with the control byte cleared, Pot1, Pot3 and Pot5 would be read by the program, and with the byte set, Pot2, Pot4, and Pot6 would be read (if connected as described in the previous paragraph).

Code: Select all

; multiplex control on DACR
Set1:			; the pots being read here are the first set 
CLR
WRAX	DACR,0		; send it to output
RDAX	Pot0,1
; do pot 1 processing here
RDAX	POT1,1
; do pot 2 processing here
RDAX	POT2,1
; do pot 3 processing here
Set2:			; the pots being read here are the second set 
SOF	0, 0.99
WRAX	DACR,0		; send it to output
RDAX	Pot0,1
; do pot 4 processing here
RDAX	POT1,1
; do pot 5 processing here
RDAX	POT2,1
; do pot 6 processing here
Program:
; process rest of the fx program now that the pots have been read
One set of 3 pots is read then the channel select is toggled so the second set can be read, meaning that 6 pots can be used with the FV-1. Using one of the DAC outputs as a control pin also means that you only have one channel for audio output, and that is a tradeoff.

I would connect the DACR output to a transistor as a level shifter on the control pins of the CD4053... tie the 4053 control pins together with a 10k pullup and use the transistor to pull the control pins low when it is on.

It looks like a lot but actually it is only using 4 extra instructions to control the multiplexer.

Again, this is untested. Proceed at your own risk.

Best regards, Jack
gfisys
Posts: 28
Joined: Wed Dec 14, 2011 7:39 pm
Location: Indonesia
Contact:

Post by gfisys »

This is a great idea, I've myself thought of this technique previously, but never gave it a try cause I hate to lose the second output channel.

One important thing to consider is the 'settling time' of the FV-1 pots input ADCs, you may have to devise some kind of 'wait state' where we don't read the pot values until we are sure the new values have settled after switching the multiplexer channel.
frank
Posts: 1244
Joined: Wed Oct 19, 2005 12:26 pm
Contact:

Post by frank »

Couple things to consider:
1. You can write to DACR at any time but the output will not be updated until after the program is done, the FV-1 does the actual write from the DACR register to the physical DAC only after the last instruction.

2. The POT ADC has a time constant so that it will take a number of sample periods for them to settle to the new values so you will want to do something like:


Wait until wait timer hits 0
Read ADC values
Change DACR to select other bank and load wait timer
Frank Thomson
Experimental Noize
amz-fx
Posts: 38
Joined: Wed Sep 06, 2006 7:06 am
Location: Louisiana, USA
Contact:

Post by amz-fx »

Actually, I considered that and the first way that I wrote the code used a register as a counter so that it would alternate reading the pots on each pass through the code.... i.e. on the first pass through the code it would read one set of pots, then on the next pass through it would read the other set.

Since plenty of time elapses between passes, the pots have time to settle.

The disadvantage is that each set of pots is updated half as often (since they are ON only half of the time), but that's not too big of a problem.

I can post the code for that version if anyone is interested.

regards, Jack
Sweetalk
Posts: 141
Joined: Thu Oct 15, 2009 5:13 am

Post by Sweetalk »

I thought doing this but with digipots controller by another uC and a control input (maybe the unused ADC). So when that control input is high the pot value will affect a set of registers, and when it's low other set of registers.

It's a nice workaround, at least for prototyping where you have tons of variables to control or for some parameter that you don't modify a lot.

Thanks!
Sandrine
Posts: 16
Joined: Thu Mar 12, 2015 10:19 am
Location: BC Canada
Contact:

Post by Sandrine »

This is a very good idea, although one output is sorta disabled.
Couldn't one use a toggle on the resonator ( sample ) frequency? I'm sure that could be predicted, or maybe I'm forgetting the internal multiplication... hmm

Using an output channel, a crude ADC could also logically switch in more than 6 pots! Wow!

Anyway, I'm here because someone told me that the pots are only responsive every 100 mS, which seems odd as they are sampled every sample/prog cycle.
Can someone please explain this?
According to that, this wouldn't work so I'm sure he's wrong.
Cheers
Is there a latin word for "Stage Fright"?
gkaiomenos
Posts: 19
Joined: Thu Oct 16, 2014 11:59 am

Re: Using 6 Pots on the FV-1

Post by gkaiomenos »

amz-fx wrote: Sun Jun 21, 2015 3:56 am This is an untested idea, and there may be techincal limitations of the FV-1 that would keep it from functioning properly.

There are only 3 Pot inputs to the FV-1 but sometimes you need more for a program. The way to add more pots is to multiplex the pot input channels on the FV-1 so that multiple pots can be used. This has limitations but here's how:

We will use DACR as an output to control the multiplexer. The CD4053 has three 2-to-1 channels, which is perfect for what we are doing. Pot1 and Pot2 would be the inputs on the first channel and the output goes to the FV1 pin for pot0. Pot3 and Pot4 would be the inputs on the second channel and the output goes to the FV1 pin for pot1. Pot5 and Pot6 would be the inputs on the third channel and the output goes to the FV1 pin for pot2.

In the program, we set the DACR output alternately high and low to drive the control pins for all three of the multiplexer channels. This means with the control byte cleared, Pot1, Pot3 and Pot5 would be read by the program, and with the byte set, Pot2, Pot4, and Pot6 would be read (if connected as described in the previous paragraph).

Code: Select all

; multiplex control on DACR
Set1:			; the pots being read here are the first set 
CLR
WRAX	DACR,0		; send it to output
RDAX	Pot0,1
; do pot 1 processing here
RDAX	POT1,1
; do pot 2 processing here
RDAX	POT2,1
; do pot 3 processing here
Set2:			; the pots being read here are the second set 
SOF	0, 0.99
WRAX	DACR,0		; send it to output
RDAX	Pot0,1
; do pot 4 processing here
RDAX	POT1,1
; do pot 5 processing here
RDAX	POT2,1
; do pot 6 processing here
Program:
; process rest of the fx program now that the pots have been read
One set of 3 pots is read then the channel select is toggled so the second set can be read, meaning that 6 pots can be used with the FV-1. Using one of the DAC outputs as a control pin also means that you only have one channel for audio output, and that is a tradeoff.

I would connect the DACR output to a transistor as a level shifter on the control pins of the CD4053... tie the 4053 control pins together with a 10k pullup and use the transistor to pull the control pins low when it is on.

It looks like a lot but actually it is only using 4 extra instructions to control the multiplexer.

Again, this is untested. Proceed at your own risk.

Best regards, Jack

Has this been tried yet?

Does it work?
Post Reply