![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
example program how to us the MCP4728 class and DevInterface classes
Dependencies: mbed DevInterfaces MCP4728 MCP4728setaddr I2Cinterfaces
Diff: main.cpp
- Revision:
- 1:d175631a5803
- Parent:
- 0:5bc0f4bd5aa0
- Child:
- 2:8ce5a2128381
- Child:
- 3:e12e21dcd16a
--- a/main.cpp Wed Jan 13 14:15:21 2016 +0000 +++ b/main.cpp Wed Jan 13 19:12:45 2016 +0000 @@ -1,3 +1,11 @@ +/** example program for the use of the MCP4728 class and DACInterface.h classes + * + * V 1.0 : tested on the KL05z but without the MCP4728 connected \ + * (C) Wim Beaumont Universiteit Antwerpen 2016 + */ + +#define MCP4728EXAMPLEVER "1.10 " + #include "mbed.h" #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) @@ -32,6 +40,7 @@ // get the version of getVersion getVersion gv; + printf("MCP4728 example program version %s, compile date %s time %s\n\r",MCP4728EXAMPLEVER,__DATE__,__TIME__); printf("getVersion :%s\n\r",gv.getversioninfo()); MCP4728 dac( i2cdev ,0, Vdd); // assuming the address of the MCP4728 is set to 0 factory default @@ -39,7 +48,7 @@ wait(4); float voltage=0; int cnt=0; - while(1){ + while(cnt < 4096){ // first set the 4 channels for ( int cc =0 ; cc <4 ; cc++) { if ( dac.setDACvalue(cnt,cc) ) @@ -47,18 +56,46 @@ } printf("set DAC value to %d result in",cnt); // no else read anyway even if set fails - for ( int cc =0 ; cc <4 ; cc++) { - if ( dac.getVoltage(voltage,cc)) - printf("\n\rfailed to readback voltage for channel %d\n\r",cc); - else + if(dac.update()) printf("\n\rfailed to readback channel info \n\r"); + else { + for ( int cc =0 ; cc <4 ; cc++) { + (void)dac.getVoltage(voltage,cc);//no need to test done with updat printf(" CH%d %f[V]",cc,voltage); - } - printf("\n\r"); + } + printf("\n\r"); + } cnt++; cnt=cnt % 4096; wait_ms(200); - } + } + // now the same with the DAC interface + DACInterface* di = &dac; + cnt=0; + while(1){ + // first set the 4 channels + for ( int cc =0 ; cc <4 ; cc++) { + if ( di->setDACvalue(cnt,cc) ) + printf("failed to set dac value %d for channel %d\n\r",cnt,cc); + } + printf("set DAC value to %d result in",cnt); + // no else read anyway even if set fails + if(di->update()) printf("\n\rfailed to readback channel info \n\r"); + else { + for ( int cc =0 ; cc <4 ; cc++) { + (void)di->getVoltage(voltage,cc);// no need to test done with update + printf(" CH%d %f[V]",cc,voltage); + } + printf("\n\r"); + } + + cnt++; + cnt=cnt % 4096; + wait_ms(200); + + } + + // never reach this return 1; }