car chassis
Dependencies: Servo mbed-rtos mbed
old.inc@4:7fa7f78cbb92, 2015-10-13 (annotated)
- Committer:
- mariob
- Date:
- Tue Oct 13 14:08:44 2015 +0000
- Revision:
- 4:7fa7f78cbb92
- Parent:
- 2:7dfc8dd6aab3
delete unused library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mariob | 2:7dfc8dd6aab3 | 1 | in main.cpp |
mariob | 2:7dfc8dd6aab3 | 2 | |
mariob | 2:7dfc8dd6aab3 | 3 | /* |
mariob | 2:7dfc8dd6aab3 | 4 | printf("INIT EEPROM\r\n"); |
mariob | 2:7dfc8dd6aab3 | 5 | init_eeprom(); |
mariob | 2:7dfc8dd6aab3 | 6 | */ |
mariob | 2:7dfc8dd6aab3 | 7 | |
mariob | 2:7dfc8dd6aab3 | 8 | /****************** EEPROM ******************/ |
mariob | 2:7dfc8dd6aab3 | 9 | /* |
mariob | 2:7dfc8dd6aab3 | 10 | eeprom_t eeprom(p7, p5, p6, p9, PAGENUMBER, PAGESIZE); |
mariob | 2:7dfc8dd6aab3 | 11 | |
mariob | 2:7dfc8dd6aab3 | 12 | t_eeprom_data eeprom_data[] = { |
mariob | 2:7dfc8dd6aab3 | 13 | //SIZE, ADDR |
mariob | 2:7dfc8dd6aab3 | 14 | { 2, 0}, //SOFTWARE VERSION |
mariob | 2:7dfc8dd6aab3 | 15 | { 2, 2}, //DATA VERSION |
mariob | 2:7dfc8dd6aab3 | 16 | { 4, 4}, //NUMBER OF STARTS |
mariob | 2:7dfc8dd6aab3 | 17 | { 4, 20}, //T_MISSING |
mariob | 2:7dfc8dd6aab3 | 18 | { 4, 40}, //ENGINE_LAST_MISSING |
mariob | 2:7dfc8dd6aab3 | 19 | { 4, 44} //BODY_LAST_MISSING |
mariob | 2:7dfc8dd6aab3 | 20 | }; |
mariob | 2:7dfc8dd6aab3 | 21 | |
mariob | 2:7dfc8dd6aab3 | 22 | void init_eeprom () |
mariob | 2:7dfc8dd6aab3 | 23 | { |
mariob | 2:7dfc8dd6aab3 | 24 | eeprom.init(eeprom_data, sizeof(eeprom_data)/sizeof(t_eeprom_data)); |
mariob | 2:7dfc8dd6aab3 | 25 | |
mariob | 2:7dfc8dd6aab3 | 26 | uint16 sw = 0; |
mariob | 2:7dfc8dd6aab3 | 27 | uint16 dd = 0; |
mariob | 2:7dfc8dd6aab3 | 28 | uint32 num = 0; |
mariob | 2:7dfc8dd6aab3 | 29 | if ((eeprom.read(EEPROM_DATA_SW_VERS, (uint8*)(&sw)) != 2) || |
mariob | 2:7dfc8dd6aab3 | 30 | (eeprom.read(EEPROM_DATA_DD_VERS, (uint8*)(&dd)) != 2) || |
mariob | 2:7dfc8dd6aab3 | 31 | (sw != SW_VERSION) || (dd != DD_VERSION)) |
mariob | 2:7dfc8dd6aab3 | 32 | { |
mariob | 2:7dfc8dd6aab3 | 33 | //error |
mariob | 2:7dfc8dd6aab3 | 34 | eeprom.reset(); |
mariob | 2:7dfc8dd6aab3 | 35 | sw = SW_VERSION; |
mariob | 2:7dfc8dd6aab3 | 36 | eeprom.write(EEPROM_DATA_SW_VERS, (uint8*)(&sw)); |
mariob | 2:7dfc8dd6aab3 | 37 | dd = DD_VERSION; |
mariob | 2:7dfc8dd6aab3 | 38 | eeprom.write(EEPROM_DATA_DD_VERS, (uint8*)(&dd)); |
mariob | 2:7dfc8dd6aab3 | 39 | } |
mariob | 2:7dfc8dd6aab3 | 40 | |
mariob | 2:7dfc8dd6aab3 | 41 | if (eeprom.read(EEPROM_DATA_NSTARTS, (uint8*)(&num)) != 4) |
mariob | 2:7dfc8dd6aab3 | 42 | num = 0xffffffff; |
mariob | 2:7dfc8dd6aab3 | 43 | num++; |
mariob | 2:7dfc8dd6aab3 | 44 | eeprom.write(EEPROM_DATA_NSTARTS, (unsigned char*)(&num)); |
mariob | 2:7dfc8dd6aab3 | 45 | } |
mariob | 2:7dfc8dd6aab3 | 46 | */ |
mariob | 2:7dfc8dd6aab3 | 47 | |
mariob | 2:7dfc8dd6aab3 | 48 | in eeprom.hpp |
mariob | 2:7dfc8dd6aab3 | 49 | |
mariob | 2:7dfc8dd6aab3 | 50 | #ifndef __EEPROM_H__ |
mariob | 2:7dfc8dd6aab3 | 51 | #define __EEPROM_H__ |
mariob | 2:7dfc8dd6aab3 | 52 | /* |
mariob | 2:7dfc8dd6aab3 | 53 | #include "common_types.h" |
mariob | 2:7dfc8dd6aab3 | 54 | |
mariob | 2:7dfc8dd6aab3 | 55 | #include "Ser25lcxxx.h" |
mariob | 2:7dfc8dd6aab3 | 56 | |
mariob | 2:7dfc8dd6aab3 | 57 | #define EEPROM_ENTRY_NOT_VALID ((int8)(-1)) |
mariob | 2:7dfc8dd6aab3 | 58 | #define EEPROM_ERR_READ ((int8)(-2)) |
mariob | 2:7dfc8dd6aab3 | 59 | #define EEPROM_ERR_WRITE ((int8)(-3)) |
mariob | 2:7dfc8dd6aab3 | 60 | |
mariob | 2:7dfc8dd6aab3 | 61 | typedef struct { |
mariob | 2:7dfc8dd6aab3 | 62 | uint8 size; // number of bytes |
mariob | 2:7dfc8dd6aab3 | 63 | uint32 addr; // eeprom address |
mariob | 2:7dfc8dd6aab3 | 64 | } t_eeprom_data; |
mariob | 2:7dfc8dd6aab3 | 65 | |
mariob | 2:7dfc8dd6aab3 | 66 | class eeprom_t |
mariob | 2:7dfc8dd6aab3 | 67 | { |
mariob | 2:7dfc8dd6aab3 | 68 | |
mariob | 2:7dfc8dd6aab3 | 69 | t_eeprom_data *eeprom_data; // configuration table of the eeprom |
mariob | 2:7dfc8dd6aab3 | 70 | |
mariob | 2:7dfc8dd6aab3 | 71 | Ser25LCxxx memory; // memory |
mariob | 2:7dfc8dd6aab3 | 72 | |
mariob | 2:7dfc8dd6aab3 | 73 | uint32 n; // total number of stored items |
mariob | 2:7dfc8dd6aab3 | 74 | uint32 max_pages; // total number of pages in eeprom |
mariob | 2:7dfc8dd6aab3 | 75 | uint32 page_size; // size of each page |
mariob | 2:7dfc8dd6aab3 | 76 | |
mariob | 2:7dfc8dd6aab3 | 77 | uint32 n_used_pages; // total number of used pages |
mariob | 2:7dfc8dd6aab3 | 78 | |
mariob | 2:7dfc8dd6aab3 | 79 | public: |
mariob | 2:7dfc8dd6aab3 | 80 | |
mariob | 2:7dfc8dd6aab3 | 81 | eeprom_t (PinName sck, PinName si, PinName so, PinName enable, |
mariob | 2:7dfc8dd6aab3 | 82 | int pagenumber, int pagesize): |
mariob | 2:7dfc8dd6aab3 | 83 | memory(sck, si, so, enable, pagenumber, pagesize) |
mariob | 2:7dfc8dd6aab3 | 84 | { |
mariob | 2:7dfc8dd6aab3 | 85 | max_pages = pagenumber; |
mariob | 2:7dfc8dd6aab3 | 86 | page_size = pagesize; |
mariob | 2:7dfc8dd6aab3 | 87 | } |
mariob | 2:7dfc8dd6aab3 | 88 | |
mariob | 2:7dfc8dd6aab3 | 89 | bool init (t_eeprom_data *data, unsigned int num); |
mariob | 2:7dfc8dd6aab3 | 90 | |
mariob | 2:7dfc8dd6aab3 | 91 | bool reset(); |
mariob | 2:7dfc8dd6aab3 | 92 | |
mariob | 2:7dfc8dd6aab3 | 93 | int8 read (uint32 id, uint8* dst); |
mariob | 2:7dfc8dd6aab3 | 94 | |
mariob | 2:7dfc8dd6aab3 | 95 | int8 write (uint32 id, const uint8* src); |
mariob | 2:7dfc8dd6aab3 | 96 | |
mariob | 2:7dfc8dd6aab3 | 97 | }; |
mariob | 2:7dfc8dd6aab3 | 98 | */ |
mariob | 2:7dfc8dd6aab3 | 99 | #endif //__EEPROM_H__ |
mariob | 2:7dfc8dd6aab3 | 100 | |
mariob | 2:7dfc8dd6aab3 | 101 | in eeprom.cpp |
mariob | 2:7dfc8dd6aab3 | 102 | |
mariob | 2:7dfc8dd6aab3 | 103 | /* |
mariob | 2:7dfc8dd6aab3 | 104 | #include "eeprom.hpp" |
mariob | 2:7dfc8dd6aab3 | 105 | |
mariob | 2:7dfc8dd6aab3 | 106 | bool eeprom_t::init (t_eeprom_data *data, unsigned int num) |
mariob | 2:7dfc8dd6aab3 | 107 | { |
mariob | 2:7dfc8dd6aab3 | 108 | if (!memory.isFullyWritable()) |
mariob | 2:7dfc8dd6aab3 | 109 | memory.setFullyWritable(); |
mariob | 2:7dfc8dd6aab3 | 110 | |
mariob | 2:7dfc8dd6aab3 | 111 | n = num; |
mariob | 2:7dfc8dd6aab3 | 112 | eeprom_data = data; |
mariob | 2:7dfc8dd6aab3 | 113 | uint32 max_addr = 0; |
mariob | 2:7dfc8dd6aab3 | 114 | |
mariob | 2:7dfc8dd6aab3 | 115 | for (int i = 0; i < n; i++) { |
mariob | 2:7dfc8dd6aab3 | 116 | // unsigned int buffer = 0; |
mariob | 2:7dfc8dd6aab3 | 117 | // unsigned int nread = memory.read(eeprom_data[i].addr, |
mariob | 2:7dfc8dd6aab3 | 118 | // eeprom_data[i].size, |
mariob | 2:7dfc8dd6aab3 | 119 | // (unsigned char*)(&buffer)); |
mariob | 2:7dfc8dd6aab3 | 120 | // if (nread == eeprom_data[i].size) |
mariob | 2:7dfc8dd6aab3 | 121 | // local_values[i] = buffer; |
mariob | 2:7dfc8dd6aab3 | 122 | if (eeprom_data[i].addr > max_addr) |
mariob | 2:7dfc8dd6aab3 | 123 | max_addr = eeprom_data[i].addr + eeprom_data[i].size; |
mariob | 2:7dfc8dd6aab3 | 124 | } |
mariob | 2:7dfc8dd6aab3 | 125 | |
mariob | 2:7dfc8dd6aab3 | 126 | n_used_pages = max_addr / page_size + 1; |
mariob | 2:7dfc8dd6aab3 | 127 | |
mariob | 2:7dfc8dd6aab3 | 128 | return true; |
mariob | 2:7dfc8dd6aab3 | 129 | } |
mariob | 2:7dfc8dd6aab3 | 130 | |
mariob | 2:7dfc8dd6aab3 | 131 | bool eeprom_t::reset () |
mariob | 2:7dfc8dd6aab3 | 132 | { |
mariob | 2:7dfc8dd6aab3 | 133 | for (int i = 0; i <= n_used_pages; i++) { |
mariob | 2:7dfc8dd6aab3 | 134 | __disable_irq(); |
mariob | 2:7dfc8dd6aab3 | 135 | memory.clearPage(i); |
mariob | 2:7dfc8dd6aab3 | 136 | __enable_irq(); |
mariob | 2:7dfc8dd6aab3 | 137 | } |
mariob | 2:7dfc8dd6aab3 | 138 | |
mariob | 2:7dfc8dd6aab3 | 139 | return true; |
mariob | 2:7dfc8dd6aab3 | 140 | } |
mariob | 2:7dfc8dd6aab3 | 141 | |
mariob | 2:7dfc8dd6aab3 | 142 | int8 eeprom_t::read (uint32 id, uint8* dst) |
mariob | 2:7dfc8dd6aab3 | 143 | { |
mariob | 2:7dfc8dd6aab3 | 144 | if (id >= n) |
mariob | 2:7dfc8dd6aab3 | 145 | return EEPROM_ENTRY_NOT_VALID; |
mariob | 2:7dfc8dd6aab3 | 146 | |
mariob | 2:7dfc8dd6aab3 | 147 | //critical section |
mariob | 2:7dfc8dd6aab3 | 148 | __disable_irq(); |
mariob | 2:7dfc8dd6aab3 | 149 | int num = memory.read(eeprom_data[id].addr, eeprom_data[id].size, dst); |
mariob | 2:7dfc8dd6aab3 | 150 | __enable_irq(); |
mariob | 2:7dfc8dd6aab3 | 151 | //critical section |
mariob | 2:7dfc8dd6aab3 | 152 | |
mariob | 2:7dfc8dd6aab3 | 153 | if (num == eeprom_data[id].size) |
mariob | 2:7dfc8dd6aab3 | 154 | return num; |
mariob | 2:7dfc8dd6aab3 | 155 | |
mariob | 2:7dfc8dd6aab3 | 156 | return EEPROM_ERR_READ; |
mariob | 2:7dfc8dd6aab3 | 157 | } |
mariob | 2:7dfc8dd6aab3 | 158 | |
mariob | 2:7dfc8dd6aab3 | 159 | int8 eeprom_t::write (uint32 id, const uint8* src) |
mariob | 2:7dfc8dd6aab3 | 160 | { |
mariob | 2:7dfc8dd6aab3 | 161 | if (id >= n) |
mariob | 2:7dfc8dd6aab3 | 162 | return EEPROM_ENTRY_NOT_VALID; |
mariob | 2:7dfc8dd6aab3 | 163 | |
mariob | 2:7dfc8dd6aab3 | 164 | //critical section |
mariob | 2:7dfc8dd6aab3 | 165 | __disable_irq(); |
mariob | 2:7dfc8dd6aab3 | 166 | int num = memory.write(eeprom_data[id].addr, eeprom_data[id].size, src); |
mariob | 2:7dfc8dd6aab3 | 167 | __enable_irq(); |
mariob | 2:7dfc8dd6aab3 | 168 | //critical section |
mariob | 2:7dfc8dd6aab3 | 169 | |
mariob | 2:7dfc8dd6aab3 | 170 | if (num != eeprom_data[id].size) |
mariob | 2:7dfc8dd6aab3 | 171 | return EEPROM_ERR_WRITE; |
mariob | 2:7dfc8dd6aab3 | 172 | |
mariob | 2:7dfc8dd6aab3 | 173 | return num; |
mariob | 2:7dfc8dd6aab3 | 174 | } |
mariob | 2:7dfc8dd6aab3 | 175 | */ |