well, this is really strange.
I just connected a fresh DOUT board and had the same issues.
If the shiftRegister is enabled by [tt]MIOS_SRIO_NumberSet(4)[/tt], my sensorizer-code isn’t executed anymore, but astonishingly the “normal” AIN-Pot->CC is executed. And moreover, the DOUT works as expected!
While if the shiftRegister is disabled, the sensorizer-code works as expected but the DOUT won’t do it (obviously because no SRIO active).
I think that means it’s a software issue and that my sensorizer calculations (which are a bit excessive, I admit ;D ) get somehow interrupted (aborted) by the SRIO, right?
I tried to increase [tt]MIOS_SRIO_UpdateFrqSet[/tt] from 1 to 20ms, just to see what happens, but the behaviour did not change.
I have three sensors connected to AIN 0-2, grounded pin 3 and four 10k-pots @ AIN 4-7.
FYI I enclosed the relevant sensorizer code:
void ZS_SENSORIZER_Sensorize(unsigned char pin, unsigned int pin_value) {
unsigned char c = 0;
unsigned int i = 0;
unsigned char sevenBitValue= 0; // 0..255
unsigned int tenBitValue = 0; // 0..1023
signed int invertedValue = 0; // inverter var
// read input
if(sensor[pin].enabled == 0) {
return;
}
// check pedal state
if(sensor[pin].pedal) {
if(MIOS_DIN_PinGet(BUTTON_AIN_PEDAL)) {
// pedal is +5V => is NOT pressed
return;
}
}
// read 10bit input value
tenBitValue = MIOS_AIN_PinGet(pin);
// check threshold
if(tenBitValue <= senseThreshold[pin]) { return; }
// invert
if(sensor[pin].invert) {
invertedValue = tenBitValue - tenBitValue - tenBitValue;
tenBitValue = invertedValue + 1023;
}
// + AINS
if(pin >= SENSOR_NUM) {
// send 7bit value
sevenBitValue = tenBitValue >> 3;
ZS_SENSORIZER_SendCC(pin, sevenBitValue);
return;
}
// + GATE
if(sensor[pin].gate) {
// check timeout
if(sensor[pin].read) {
// reset gate timeout
sensor[pin].read = 0;
gateCounter[pin] = 0;
} else {
return;
}
// check gate threshold
if( (tenBitValue < (lastValue[pin] + gateThreshold[pin]) ) &&
(tenBitValue > (lastValue[pin] - gateThreshold[pin]) ) ) {
// save last 10bit value and abort
last10bitValue[pin] = tenBitValue;
return;
} else {
// save last 10bit value and go on...
last10bitValue[pin] = tenBitValue;
}
}
// + EXPANDER
if(sensor[pin].expand) {
// check smin threshold
if(tenBitValue < smin[pin]) {
sevenBitValue = 0;
} else {
// interpolate
tenBitValue = tenBitValue - smin[pin];
switch(sfactor[pin]) {
case 1: i = tenBitValue; break;
case 2: i = tenBitValue >> 1; break;
case 4: i = tenBitValue >> 2; break; // preferred
case 8: i = tenBitValue >> 3; break;
case 16: i = tenBitValue >> 4; break;
default: i = ZS_MATH_Divide(tenBitValue, sfactor[pin]); break;
}
if(i > 127) { i = 127; }
sevenBitValue = i;
}
} else {
// don't expand, just read 7bit
sevenBitValue = MIOS_AIN_Pin7bitGet(pin);
}
// scale
if(sensor[pin].scale) {
c = ZS_MATH_Scale_7bit(sevenBitValue, tmin[pin], tmax[pin]);
sevenBitValue = c;
}
// send MIDI message
ZS_SENSORIZER_SendCC(pin, sevenBitValue);
return;
}
Any suggestions very welcome 
I’m a bit clueless right now…