Knud Dalgaard / 310-TMC3-TestHW

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers dido.cpp Source File

dido.cpp

00001 #include "mbed.h"
00002 #include "dido.h"
00003 #include "MCP23008.h"
00004 
00005 
00006 //---------------------------------------
00007 // Hardware recources
00008 //---------------------------------------
00009 MCP23008 *DIDO_I2C;    //
00010 
00011 
00012 //---------------------------------------
00013 // Prototypes
00014 //---------------------------------------
00015 
00016 
00017 
00018 //---------------------------------------
00019 // Internal variables
00020 //---------------------------------------
00021 static unsigned char DIDO_doState;    // keeps last written DO state 
00022 
00023 
00024 //---------------------------------------
00025 // External variables
00026 //---------------------------------------
00027 
00028 
00029 
00030 //---------------------------------------
00031 // Global Functions
00032 //---------------------------------------
00033 
00034 void DIDO_init( void )
00035 {
00036     unsigned char direction;
00037     
00038     direction = 0x00;   // Set all to outputs
00039     direction = ( (1<<DIDO_DI1) | (1<<DIDO_DI2) | (1<<DIDO_DI3) | (1<<DIDO_DI4) | (1<<DIDO_DI5) ); // set some to inputs   
00040 
00041     DIDO_I2C = new MCP23008( p9, p10, DIDO_I2C_ADD);
00042     DIDO_I2C->config(direction, 0 , 0);  // set direction, no pull-ups, 0
00043     
00044     DIDO_setDO1OFF();
00045     DIDO_setDO2OFF();
00046     DIDO_setRelayOFF();
00047   
00048 }
00049 
00050 
00051 void DIDO_setDO1ON( void )
00052 {
00053     DIDO_doState |= (1 << DIDO_DO1);  
00054     DIDO_I2C->write_bit(0, DIDO_DO1);
00055 }
00056 
00057 void DIDO_setDO1OFF( void )
00058 {
00059     DIDO_doState &= ~(1 << DIDO_DO1);  
00060     DIDO_I2C->write_bit(1, DIDO_DO1);
00061 }
00062 
00063 
00064 void DIDO_setDO2ON( void )
00065 {
00066     DIDO_doState |= (1 << DIDO_DO2);  
00067     DIDO_I2C->write_bit(0, DIDO_DO2);
00068 }
00069 
00070 void DIDO_setDO2OFF( void )
00071 {
00072     DIDO_doState &= ~(1 << DIDO_DO2);  
00073     DIDO_I2C->write_bit(1, DIDO_DO2);
00074 }
00075 
00076 
00077 void DIDO_setRelayON( void )
00078 {
00079     DIDO_doState |= (1 << DIDO_RELAY);  
00080     DIDO_I2C->write_bit(1, DIDO_RELAY);
00081 }
00082 
00083 void DIDO_setRelayOFF( void )
00084 {
00085     DIDO_doState &= ~(1 << DIDO_RELAY);  
00086     DIDO_I2C->write_bit(0, DIDO_RELAY);
00087 }
00088 
00089 
00090 int DIDO_getDO1( void )
00091 {
00092     return ( DIDO_doState & (1 << DIDO_DO1) ); 
00093 }
00094 
00095 
00096 int DIDO_getDO2( void )
00097 {
00098     return ( DIDO_doState & (1 << DIDO_DO2) ); 
00099 }
00100 
00101 
00102 int DIDO_getRelay( void )
00103 {
00104     return ( DIDO_doState & (1 << DIDO_RELAY) ); 
00105 }
00106 
00107 
00108 int DIDO_getDI1( void )
00109 {
00110     return DIDO_I2C->read_bit(DIDO_DI1);
00111 }
00112 
00113 
00114 int DIDO_getDI2( void )
00115 {
00116     return DIDO_I2C->read_bit(DIDO_DI2);
00117 }
00118 
00119 
00120 int DIDO_getDI3( void )
00121 {
00122     return DIDO_I2C->read_bit(DIDO_DI3);
00123 }
00124 
00125 
00126 int DIDO_getDI4( void )
00127 {
00128     return DIDO_I2C->read_bit(DIDO_DI4);
00129 }
00130 
00131 
00132 int DIDO_getDI5( void )
00133 {
00134     return DIDO_I2C->read_bit(DIDO_DI5);
00135 }
00136 
00137 
00138 //---------------------------------------
00139 // Internal Functions
00140 //---------------------------------------
00141