1
Dependencies: mbed
i2c.h@0:2a01c5a56ed1, 2018-07-09 (annotated)
- Committer:
- meric
- Date:
- Mon Jul 09 09:12:38 2018 +0000
- Revision:
- 0:2a01c5a56ed1
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
meric | 0:2a01c5a56ed1 | 1 | #ifndef _I2C_H_ |
meric | 0:2a01c5a56ed1 | 2 | #define _I2C_H_ |
meric | 0:2a01c5a56ed1 | 3 | /* |
meric | 0:2a01c5a56ed1 | 4 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 5 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 6 | ** DEVINT BİLİŞİM YAZILIM DONANIM TİC. LTD. ŞTİ. TARAFINDAN GELİŞTİRİLMİŞTİR |
meric | 0:2a01c5a56ed1 | 7 | ** İzmir / TÜRKİYE |
meric | 0:2a01c5a56ed1 | 8 | ** |
meric | 0:2a01c5a56ed1 | 9 | ** (C) 2015 |
meric | 0:2a01c5a56ed1 | 10 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 11 | **************************************************************************** |
meric | 0:2a01c5a56ed1 | 12 | *************************************************************** K A M B O ** |
meric | 0:2a01c5a56ed1 | 13 | */ |
meric | 0:2a01c5a56ed1 | 14 | |
meric | 0:2a01c5a56ed1 | 15 | // FONKSIYON PROTOTİPLERİ |
meric | 0:2a01c5a56ed1 | 16 | void eeprom_write(uint8_t eepromtype, uint16_t memory_address, uint8_t value); |
meric | 0:2a01c5a56ed1 | 17 | //****************************************************************************** |
meric | 0:2a01c5a56ed1 | 18 | |
meric | 0:2a01c5a56ed1 | 19 | uint8_t eeprom_read(uint8_t eepromtype, uint16_t memory_address); |
meric | 0:2a01c5a56ed1 | 20 | //****************************************************************************** |
meric | 0:2a01c5a56ed1 | 21 | |
meric | 0:2a01c5a56ed1 | 22 | bool io_send(uint8_t first_byte, uint8_t second_byte); |
meric | 0:2a01c5a56ed1 | 23 | //****************************************************************************** |
meric | 0:2a01c5a56ed1 | 24 | |
meric | 0:2a01c5a56ed1 | 25 | // |
meric | 0:2a01c5a56ed1 | 26 | void eeprom_write(uint8_t eepromtype, uint16_t memory_address, uint8_t val) |
meric | 0:2a01c5a56ed1 | 27 | { |
meric | 0:2a01c5a56ed1 | 28 | if (eepromtype == 1) { // 1 bayt adresleme |
meric | 0:2a01c5a56ed1 | 29 | |
meric | 0:2a01c5a56ed1 | 30 | fnode.edata2[0] = memory_address; |
meric | 0:2a01c5a56ed1 | 31 | fnode.edata2[1] = val; |
meric | 0:2a01c5a56ed1 | 32 | i2c.write(EEPROM_ADDRESS, fnode.edata2, 2, false); |
meric | 0:2a01c5a56ed1 | 33 | wait_ms(10); |
meric | 0:2a01c5a56ed1 | 34 | |
meric | 0:2a01c5a56ed1 | 35 | } else { // 2 bayt adresleme |
meric | 0:2a01c5a56ed1 | 36 | |
meric | 0:2a01c5a56ed1 | 37 | fnode.edata3[0] = memory_address >> 8; |
meric | 0:2a01c5a56ed1 | 38 | fnode.edata3[1] = memory_address & 0xFF; |
meric | 0:2a01c5a56ed1 | 39 | fnode.edata3[2] = val; |
meric | 0:2a01c5a56ed1 | 40 | i2c.write(EEPROM_ADDRESS, fnode.edata3, 3, false); |
meric | 0:2a01c5a56ed1 | 41 | wait_ms(10); |
meric | 0:2a01c5a56ed1 | 42 | |
meric | 0:2a01c5a56ed1 | 43 | } |
meric | 0:2a01c5a56ed1 | 44 | } |
meric | 0:2a01c5a56ed1 | 45 | |
meric | 0:2a01c5a56ed1 | 46 | // |
meric | 0:2a01c5a56ed1 | 47 | uint8_t eeprom_read(uint8_t eepromtype, uint16_t memory_address) |
meric | 0:2a01c5a56ed1 | 48 | { |
meric | 0:2a01c5a56ed1 | 49 | if (eepromtype == 1) { // 1 bayt adresleme |
meric | 0:2a01c5a56ed1 | 50 | |
meric | 0:2a01c5a56ed1 | 51 | fnode.edata = memory_address; |
meric | 0:2a01c5a56ed1 | 52 | i2c.write(EEPROM_ADDRESS, &fnode.edata, 1, true); |
meric | 0:2a01c5a56ed1 | 53 | wait_ms(5); |
meric | 0:2a01c5a56ed1 | 54 | i2c.read(EEPROM_ADDRESS, &fnode.value, 1, false); |
meric | 0:2a01c5a56ed1 | 55 | wait_ms(10); |
meric | 0:2a01c5a56ed1 | 56 | |
meric | 0:2a01c5a56ed1 | 57 | return (uint8_t)fnode.value; |
meric | 0:2a01c5a56ed1 | 58 | |
meric | 0:2a01c5a56ed1 | 59 | } else { // 2 bayt adresleme |
meric | 0:2a01c5a56ed1 | 60 | |
meric | 0:2a01c5a56ed1 | 61 | fnode.edata2[0] = memory_address >> 8; |
meric | 0:2a01c5a56ed1 | 62 | fnode.edata2[1] = memory_address & 0xFF; |
meric | 0:2a01c5a56ed1 | 63 | i2c.write(EEPROM_ADDRESS, fnode.edata2, 2, true); |
meric | 0:2a01c5a56ed1 | 64 | wait_ms(5); |
meric | 0:2a01c5a56ed1 | 65 | i2c.read(EEPROM_ADDRESS, &fnode.value, 1, false); |
meric | 0:2a01c5a56ed1 | 66 | wait_ms(10); |
meric | 0:2a01c5a56ed1 | 67 | |
meric | 0:2a01c5a56ed1 | 68 | return (uint8_t)fnode.value; |
meric | 0:2a01c5a56ed1 | 69 | |
meric | 0:2a01c5a56ed1 | 70 | } |
meric | 0:2a01c5a56ed1 | 71 | } |
meric | 0:2a01c5a56ed1 | 72 | |
meric | 0:2a01c5a56ed1 | 73 | // |
meric | 0:2a01c5a56ed1 | 74 | // |
meric | 0:2a01c5a56ed1 | 75 | bool io_send(uint8_t first_byte, uint8_t second_byte) |
meric | 0:2a01c5a56ed1 | 76 | { |
meric | 0:2a01c5a56ed1 | 77 | bool _success = false; |
meric | 0:2a01c5a56ed1 | 78 | |
meric | 0:2a01c5a56ed1 | 79 | fnode.iodata[0] = first_byte; |
meric | 0:2a01c5a56ed1 | 80 | fnode.iodata[1] = second_byte; |
meric | 0:2a01c5a56ed1 | 81 | |
meric | 0:2a01c5a56ed1 | 82 | // Try max. 3 times |
meric | 0:2a01c5a56ed1 | 83 | for (uint8_t i = 0; i < 3; i++) { |
meric | 0:2a01c5a56ed1 | 84 | |
meric | 0:2a01c5a56ed1 | 85 | if (i2c.write(IO_EXPANDER_ADDRESS, fnode.iodata, 2) == 0) { |
meric | 0:2a01c5a56ed1 | 86 | _success = true; |
meric | 0:2a01c5a56ed1 | 87 | } |
meric | 0:2a01c5a56ed1 | 88 | |
meric | 0:2a01c5a56ed1 | 89 | if (_success == true) { |
meric | 0:2a01c5a56ed1 | 90 | break; |
meric | 0:2a01c5a56ed1 | 91 | } |
meric | 0:2a01c5a56ed1 | 92 | } |
meric | 0:2a01c5a56ed1 | 93 | |
meric | 0:2a01c5a56ed1 | 94 | return _success; |
meric | 0:2a01c5a56ed1 | 95 | } |
meric | 0:2a01c5a56ed1 | 96 | #endif |