1
Dependencies: mbed
i2c.h
00001 #ifndef _I2C_H_ 00002 #define _I2C_H_ 00003 /* 00004 **************************************************************************** 00005 **************************************************************************** 00006 ** DEVINT BİLİŞİM YAZILIM DONANIM TİC. LTD. ŞTİ. TARAFINDAN GELİŞTİRİLMİŞTİR 00007 ** İzmir / TÜRKİYE 00008 ** 00009 ** (C) 2015 00010 **************************************************************************** 00011 **************************************************************************** 00012 *************************************************************** K A M B O ** 00013 */ 00014 00015 // FONKSIYON PROTOTİPLERİ 00016 void eeprom_write(uint8_t eepromtype, uint16_t memory_address, uint8_t value); 00017 //****************************************************************************** 00018 00019 uint8_t eeprom_read(uint8_t eepromtype, uint16_t memory_address); 00020 //****************************************************************************** 00021 00022 bool io_send(uint8_t first_byte, uint8_t second_byte); 00023 //****************************************************************************** 00024 00025 // 00026 void eeprom_write(uint8_t eepromtype, uint16_t memory_address, uint8_t val) 00027 { 00028 if (eepromtype == 1) { // 1 bayt adresleme 00029 00030 fnode.edata2[0] = memory_address; 00031 fnode.edata2[1] = val; 00032 i2c.write(EEPROM_ADDRESS, fnode.edata2, 2, false); 00033 wait_ms(10); 00034 00035 } else { // 2 bayt adresleme 00036 00037 fnode.edata3[0] = memory_address >> 8; 00038 fnode.edata3[1] = memory_address & 0xFF; 00039 fnode.edata3[2] = val; 00040 i2c.write(EEPROM_ADDRESS, fnode.edata3, 3, false); 00041 wait_ms(10); 00042 00043 } 00044 } 00045 00046 // 00047 uint8_t eeprom_read(uint8_t eepromtype, uint16_t memory_address) 00048 { 00049 if (eepromtype == 1) { // 1 bayt adresleme 00050 00051 fnode.edata = memory_address; 00052 i2c.write(EEPROM_ADDRESS, &fnode.edata, 1, true); 00053 wait_ms(5); 00054 i2c.read(EEPROM_ADDRESS, &fnode.value, 1, false); 00055 wait_ms(10); 00056 00057 return (uint8_t)fnode.value; 00058 00059 } else { // 2 bayt adresleme 00060 00061 fnode.edata2[0] = memory_address >> 8; 00062 fnode.edata2[1] = memory_address & 0xFF; 00063 i2c.write(EEPROM_ADDRESS, fnode.edata2, 2, true); 00064 wait_ms(5); 00065 i2c.read(EEPROM_ADDRESS, &fnode.value, 1, false); 00066 wait_ms(10); 00067 00068 return (uint8_t)fnode.value; 00069 00070 } 00071 } 00072 00073 // 00074 // 00075 bool io_send(uint8_t first_byte, uint8_t second_byte) 00076 { 00077 bool _success = false; 00078 00079 fnode.iodata[0] = first_byte; 00080 fnode.iodata[1] = second_byte; 00081 00082 // Try max. 3 times 00083 for (uint8_t i = 0; i < 3; i++) { 00084 00085 if (i2c.write(IO_EXPANDER_ADDRESS, fnode.iodata, 2) == 0) { 00086 _success = true; 00087 } 00088 00089 if (_success == true) { 00090 break; 00091 } 00092 } 00093 00094 return _success; 00095 } 00096 #endif
Generated on Sat Jul 16 2022 01:21:54 by
1.7.2