Kevin Kent
/
XVHE_HID
IVSC Project
DigiPot.cpp
- Committer:
- kevinkent
- Date:
- 2012-11-14
- Revision:
- 1:82f2ef52759e
- Child:
- 2:d0778c36d28d
File content as of revision 1:82f2ef52759e:
// #include "DigiPot.h" #include "mbed.h" #include "MCP4651.h" // Enable pins for PCA9 BusOut Pbus(p14,p13,p12,p11); Serial dbg(USBTX, USBRX); MCP4651 Chip1(p9, p10, 0x1); MCP4651 Chip2(p9, p10, 0x2); MCP4651 Chip3(p9, p10, 0x3); MCP4651 Chip4(p9, p10, 0x5); MCP4651 Chip5(p9, p10, 0x6); MCP4651 Chip6(p9, p10, 0x7); // The MCP4651 go to mid scale on reset // Use the general call commands to set all pots to zero // Set the lowest values pot to approximately 10k int PotReset(void) { char wip0[2] = {0x80, 0x0}; char wip1[2] = {0x90, 0x0}; I2C GenCall(p9,p10); // Reset R1 & R2 Pbus = 0x1; GenCall.write(0x0, wip0, 2); GenCall.write(0x0, wip1, 2); Chip1.SetValue(0,50); // About 10k on 50k pot Chip4.SetValue(0,50); // Reset R3 & R4 Pbus = 0x2; GenCall.write(0x0, wip0, 2); GenCall.write(0x0, wip1, 2); Chip1.SetValue(0,50); Chip4.SetValue(0,50); // Reset R5 & R6 Pbus = 0x4; GenCall.write(0x0, wip0, 2); GenCall.write(0x0, wip1, 2); Chip1.SetValue(0,50); Chip4.SetValue(0,50); // Pbus = 0x8; /* Not Used at this time */ Pbus = 0; return(0); } // End PotReset // Decode the HID report and set the pots int SetResist( uint8_t *data) { int wiper = 0, value = 0; dbg.printf("data[0] = %d\n",data[0]); dbg.printf("data[1] = %d\n",data[1]); dbg.printf("data[2] = %d\n",data[2]); dbg.printf("data[3] = %d\n",data[3]); dbg.printf("data[4] = %d\n",data[4]); dbg.printf("data[5] = %d\n",data[5]); if (data[0] != 3) return(1); if (data[1] == 0) return(1); // Zero = bus disable if (data[3] == 0) return(1); // Zero disallowed Pbus = data[1]; if(data[4] > 0) wiper = (data[4] - 1); value = data[5]; switch (data[3]) { case 1: Chip1.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; case 2: Chip2.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; case 3: Chip3.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; case 4: Chip4.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; case 5: Chip5.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; case 6: Chip6.SetValue(wiper, value); dbg.printf("Set Pbus = %d, Chip = %d, Pot = %d, Value = %d\n", data[1], data[3], wiper, value); break; default: break; } dbg.printf("got here\n"); data[0] = 0; Pbus = 0; return(0); } // End SetResist