This are general defs and base class interfaces. ( DACInterface, I2CInterface) to be used with I2C devices

Dependents:   MCP23009tst AT30TSE752TST MCP4728setaddrProg mbedSerialInterface_talkback2 ... more

The DevInterfaces class is used for a more general support of a number of I2C devices.

For the moment this is MCP4728 Quad DAC.

The idea is to write a libs for the I2C devices (and perhaps later SPI , ... devices) not restricted to a certain hardware platform.

So there is the I2CInterface. This is a ( not pure) virtual class. A pointer to this class is used for the I2C device lib (like the MCP4728 class https://developer.mbed.org/users/wbeaumont/code/MCP4728/ ) to communicate with the I2C interface. The I2C interface is kept simple as possible. So it has to be applied for "tested environments". I2C Bus timeouts etc. are hard to debug with such a simple interface. This kind of interface is also not suitable for optimal performance. The user has to take care of issues of blocking devices, parallel processes etc. This can be dealt with in the implementation of the I2CInterface class

The aim of this project is to generate code for these devices on different platforms without doing the painstaking work of looking up all the register details.

There is an implementation of the I2CInterface for the MBED , tested with the FRDM-KL05Z platform. https://developer.mbed.org/users/wbeaumont/code/I2Cinterfaces/

A very simple application on a MBED can be found in https://developer.mbed.org/users/wbeaumont/code/MCP4728test/

Committer:
wbeaumont
Date:
Fri Jan 08 11:56:44 2016 +0000
Revision:
1:5672673314f9
Parent:
0:da1fb7dd363f
Child:
2:58f1d5a3f850
virtual  I2C interface and some other classes for I2C devices

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:da1fb7dd363f 1 #include "getVersion.h"
wbeaumont 0:da1fb7dd363f 2
wbeaumont 1:5672673314f9 3 #define GETVERSION_SRC_VER "0.11"
wbeaumont 1:5672673314f9 4 #ifdef MBED
wbeaumont 0:da1fb7dd363f 5 #include "mbed.h"
wbeaumont 1:5672673314f9 6 #else
wbeaumont 1:5672673314f9 7 #include <stdlib.h>
wbeaumont 1:5672673314f9 8 #endif
wbeaumont 0:da1fb7dd363f 9
wbeaumont 0:da1fb7dd363f 10 #define NULL 0
wbeaumont 0:da1fb7dd363f 11
wbeaumont 0:da1fb7dd363f 12 void getVersion::get_dec_version( unsigned short hexversion , unsigned char & version, unsigned char& subversion) {
wbeaumont 0:da1fb7dd363f 13 subversion =(unsigned short)( hexversion & 0xFF);
wbeaumont 0:da1fb7dd363f 14 hexversion=hexversion >> 8;
wbeaumont 0:da1fb7dd363f 15 version =(unsigned char)( hexversion & 0xFF);
wbeaumont 0:da1fb7dd363f 16 }
wbeaumont 0:da1fb7dd363f 17
wbeaumont 0:da1fb7dd363f 18
wbeaumont 0:da1fb7dd363f 19
wbeaumont 0:da1fb7dd363f 20 unsigned short getVersion::get_hex_version_nr(const char * vers){
wbeaumont 0:da1fb7dd363f 21 float verf = strtof(vers,NULL);
wbeaumont 0:da1fb7dd363f 22 unsigned short version=(unsigned short) verf;
wbeaumont 0:da1fb7dd363f 23 verf=verf-version;
wbeaumont 0:da1fb7dd363f 24 version = version<<8;
wbeaumont 0:da1fb7dd363f 25 verf=verf*100;
wbeaumont 0:da1fb7dd363f 26 unsigned char sub=(unsigned char)verf;
wbeaumont 0:da1fb7dd363f 27 version=version| sub;
wbeaumont 0:da1fb7dd363f 28 return version;
wbeaumont 0:da1fb7dd363f 29 }
wbeaumont 0:da1fb7dd363f 30
wbeaumont 0:da1fb7dd363f 31
wbeaumont 0:da1fb7dd363f 32
wbeaumont 0:da1fb7dd363f 33
wbeaumont 0:da1fb7dd363f 34
wbeaumont 0:da1fb7dd363f 35
wbeaumont 0:da1fb7dd363f 36 unsigned short getVersion::getHdrVersion(){
wbeaumont 0:da1fb7dd363f 37 if( hver == NULL) return get_hex_version_nr(GETVERSION_HDR_VER);
wbeaumont 0:da1fb7dd363f 38 else return get_hex_version_nr(hver);
wbeaumont 0:da1fb7dd363f 39 }
wbeaumont 0:da1fb7dd363f 40
wbeaumont 0:da1fb7dd363f 41 unsigned short getVersion::getSrcVersion(){
wbeaumont 0:da1fb7dd363f 42 if( sver == NULL) return get_hex_version_nr(GETVERSION_SRC_VER);
wbeaumont 0:da1fb7dd363f 43 else return get_hex_version_nr(sver);
wbeaumont 0:da1fb7dd363f 44 }
wbeaumont 0:da1fb7dd363f 45
wbeaumont 0:da1fb7dd363f 46
wbeaumont 0:da1fb7dd363f 47 unsigned short getVersion::getCompileTime(){
wbeaumont 0:da1fb7dd363f 48 if ( ctime == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 49 else return 0;
wbeaumont 0:da1fb7dd363f 50 }
wbeaumont 0:da1fb7dd363f 51
wbeaumont 0:da1fb7dd363f 52
wbeaumont 0:da1fb7dd363f 53 unsigned short getVersion::getCompileDate(){
wbeaumont 0:da1fb7dd363f 54 if ( cdate == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 55 else return 0;
wbeaumont 0:da1fb7dd363f 56 }
wbeaumont 0:da1fb7dd363f 57
wbeaumont 0:da1fb7dd363f 58 unsigned short getVersion::getCompileYear(){
wbeaumont 0:da1fb7dd363f 59
wbeaumont 0:da1fb7dd363f 60 if ( cdate == NULL ) return 0;
wbeaumont 0:da1fb7dd363f 61 else return 0;
wbeaumont 0:da1fb7dd363f 62 }