Yes, I have been looking at this problem today, and so far it appears to be an inherent issue with the use of the overflow bit. I have confirmed this by toggling the bit on and off to see the problem come and go, all the while making sure all other oscillators are disabled. This code might be of some use in your testing:
// bits 0-2 ( 0x1, 0x2, 0x4 ) waveform type
// bit 3 ( 0x08 ) ABS/FULL bit
// bit 4 ( 0x10 ) overflow bit
// bit 5 ( 0x20 ) apply bend bit
// bit 6 ( 0x40 ) unused
// bit 7 ( 0x80 ) on/off
#define TEST_BIT 0x10
ubyte regStatus; char msg[60];
while ( 1 )
{
// clear overflow bit
regStatus = GS.readRegister ( A1_Control ); // read current value
regStatus &= ~( TEST_BIT ); // clear bit
GS.sendCommand ( WriteOneByte , A1_Control , regStatus );
printOscStatus( "A1 OVERFLOW OFF" );
delay ( 1000 );
// set overflow bit
regStatus = GS.readRegister ( A1_Control ); // read current value
regStatus |= ( TEST_BIT ); // set bit
GS.sendCommand ( WriteOneByte , A1_Control , regStatus );
printOscStatus( "A1 OVERFLOW ON" );
delay ( 1000 );
}
void printOscStatus( char *label)
{
GSRegister oscCtrlRegs[6] = { A1_Control , A2_Control , A3_Control , B1_Control , B2_Control , B3_Control };
ubyte regStatus;
char msg[30];
Serial.println ( "\n" );
Serial.println ( label );
for ( int oscIdx = 0; oscIdx < 6; oscIdx++ )
{
regStatus = GS.readRegister ( oscCtrlRegs[oscIdx] );
sprintf ( msg , "osc #%d : 0x%.2x" , oscIdx , regStatus );
Serial.println ( msg );
}
}
When I run this, I can hear (and see) the difference, and only the overflow bit is being set:
A1 OVERFLOW ON
osc #0 : 0x90
osc #1 : 0x00
osc #2 : 0x00
osc #3 : 0x00
osc #4 : 0x00
osc #5 : 0x00
A1 OVERFLOW OFF
osc #0 : 0x80
osc #1 : 0x00
osc #2 : 0x00
osc #3 : 0x00
osc #4 : 0x00
osc #5 : 0x00
Also, although there is definite stepping on the output as a result of the PWM conversion, I also see my A/D sampler stepping at its sampling rate ( 44.1 kHz ). I am in the process of getting up some pics of this issue as well as making a recording that I will forward onto Savage industries to get their take on this.