Como parte de mi proyecto de MIDI a CV, estoy usando un MPC4822 ( hoja de datos ) dos canal 12 bit DAC. Después de mucho trabajo, tengo todo funcionando según lo planeado, pero dado que incluso cuando se inicializa con valores que deberían dar una salida de 0v, el mínimo que veo en cada Vout es 0.56v. Falta la octava media. ¿Por qué sucede esto?
void loop() {
mode = digitalRead (modePin); // GET MODE
if (mode != prevMode) {
setVoltage (DAC1, 0, 1, 0); // INITIALISE BOTH DAC CHANNELS FOLLOWING MODE SWITCH
setVoltage (DAC1, 1, 1, 0);
}
prevMode = mode;
mode ? mode1() : mode2();
}
................
void setVoltage(int dacpin, bool channel, bool gain, unsigned int mV)
{
unsigned int command = channel ? 0x9000 : 0x1000;
command |= gain ? 0x0000 : 0x2000;
command |= (mV & 0x0FFF);
SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
digitalWrite(dacpin,LOW);
SPI.transfer(command>>8);
SPI.transfer(command&0xFF);
digitalWrite(dacpin,HIGH);
SPI.endTransaction();
}