Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MCP482X.cpp
- Committer:
- henryeherman
- Date:
- 2013-08-14
- Revision:
- 0:b58572ce83b6
File content as of revision 0:b58572ce83b6:
#include "mbed.h"
#include "MCP482X.h"
using namespace mbed;
MCP482X::MCP482X(SPI &spi, DigitalOut &cspin): _spi(spi), _cspin(cspin) {
gainA = 1;
gainB = 1;
valA = 0;
valB = 0;
enable();
_cspin.write(1);
}
MCP482X::~MCP482X() {
}
int MCP482X::writeA(int value){
int tempval = 0;
valA = (value & 0x0FFF);
tempval = SELECTDACA(valA);
if(gainA == 1) {
tempval = SELECT1XGAIN(tempval);
} else {
tempval = SELECT2XGAIN(tempval);
}
if(bshutdown==true) {
tempval = SELECTPWROFF(tempval);
} else {
tempval = SELECTPWRON(tempval);
}
sendValue(tempval);
return tempval;
}
int MCP482X::writeB(int value){
int tempval = 0;
valB = (value & 0x0FFF);
tempval = SELECTDACB(valB);
if(gainB == 1) {
tempval = SELECT1XGAIN(tempval);
} else {
tempval = SELECT2XGAIN(tempval);
}
if(bshutdown==true) {
tempval = SELECTPWROFF(tempval);
} else {
tempval = SELECTPWRON(tempval);
}
sendValue(tempval);
return tempval;
}
void MCP482X::setGainA(int value){
if(value==1 || value == 2)
gainA = value;
else
gainA = 1;
}
void MCP482X::setGainB(int value){
if(value==1 || value == 2)
gainB = value;
else
gainB = 1;
}
void MCP482X::disable() {
bshutdown = true;
writeA(valA);
writeB(valB);
}
void MCP482X::enable() {
bshutdown = false;
writeA(valA);
writeB(valB);
}
void MCP482X::configspi() {
_spi.format(16, 0);
_spi.frequency(50000);
}
void MCP482X::sendValue(int value) {
configspi();
_cspin.write(0);
_spi.write(value);
_cspin.write(1);
}