Program to interact via the mbed with its I2C interface.

Dependencies:   DevInterfaces I2Cinterfaces MCP4725 mbed

Fork of MCP4728test by wimbeaumont Project

main.cpp

Committer:
wbeaumont
Date:
2016-01-13
Revision:
0:5bc0f4bd5aa0
Child:
1:d175631a5803

File content as of revision 0:5bc0f4bd5aa0:

#include "mbed.h"

#if   defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
  PinName const SDA = PTE25;
  PinName const SCL = PTE24;
#elif defined (TARGET_KL05Z)
  PinName const SDA = PTB4;
  PinName const SCL = PTB3;
#elif defined (TARGET_K20D50M)
  PinName const SDA = PTB1;
  PinName const SCL = PTB0;
#else
  #error TARGET NOT DEFINED
#endif


#include "I2C.h"
#include "I2CInterface.h" 
#include "MBEDI2CInterface.h" 
#include "DACInterface.h" 
#include "dev_interface_def.h"
#include "mcp4728.h"

MBEDI2CInterface mbedi2c( SDA, SCL); 
MBEDI2CInterface* mbedi2cp=  &mbedi2c ;
I2CInterface* i2cdev= mbedi2cp;
const float Vdd=5.0;

Serial pc(USBTX, USBRX);

int main(void) {
  
   // get the version of getVersion 
   getVersion gv;
   printf("getVersion :%s\n\r",gv.getversioninfo());
   
   MCP4728  dac( i2cdev ,0, Vdd);  // assuming the address  of the MCP4728 is set to 0 factory default 
   printf("MCP4728 :%s\n\r",dac.getversioninfo());
   wait(4);
   float voltage=0;
   int cnt=0;
   while(1){
           // first set the 4 channels 
           for ( int cc =0 ; cc <4 ; cc++) { 
               if ( dac.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 
            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 
                  printf(" CH%d %f[V]",cc,voltage);
             }
             printf("\n\r");
             cnt++;
             cnt=cnt % 4096;     
             wait_ms(200);

  }  
    // never reach this   
    return 1;
}