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.
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
Generated on Sat Jul 16 2022 03:23:51 by
