|
Как записать/считать float в/из EEPROM, ATmega8 |
|
|
|
 |
Ответов
|
Oct 26 2010, 20:33
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 3-09-10
Пользователь №: 59 263

|
Когда нужно много чего разного в ЕЕПРОМ писать-читать, всегда использую предложенный здесь подход - объявления union. Например:
#define ucha unsigned char ... typedef union { struct { ucha csL, csH, N1, N2, N3, Coeff, R1[TABLES_SIZE], R2[TABLES_SIZE], R3[TABLES_SIZE]; }s; ucha mc[SIZEOFEEPROM]; }Type_My_Data_in_EEPROM;
extern Type_My_Data_in_EEPROM u;
Теперь в программе везде обращаюсь к элементам союза так
u.s.N1 u.s.Coeff u.s.R1[...]
и только в подпрограммах записи-чтения "вспоминаю", что это еще и массив:
for( i = 2; i < SIZEOFEEPROM; i++ ) { u.mc[i] = EEPROM_read_byte(i); cs2 += u.mc[i]; }
Т.е. мне пофиг, каковы данные, входящие в союз - там и байты, и флоаты, и массивы... Важно под их размерчик разместить "поверх" еще и массив ucha mc[SIZEOFEEPROM] (что и есть сутью союза)
|
|
|
|
|
Oct 27 2010, 06:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(drvlas @ Oct 26 2010, 23:33)  Когда нужно много чего разного в ЕЕПРОМ писать-читать, всегда использую предложенный здесь подход - объявления union. Ну и для чего вся эта лабуда с union, когда можно просто и ясно: Код struct { ucha csL, csH, N1, N2, N3, Coeff, R1[TABLES_SIZE], R2[TABLES_SIZE], R3[TABLES_SIZE]; }s
s s1, s2;
eeprom_write_block((unsigned char *) &s1, 0x0, sizeof(s)); eeprom_read_block ((unsigned char *) &s2, 0x0, sizeof(s));
|
|
|
|
Сообщений в этой теме
LexRoss Как записать/считать float в/из EEPROM Oct 26 2010, 14:18 proba напр так:
extern eeprom_write_block(unsigned char... Oct 26 2010, 14:42 Палыч Цитата(proba @ Oct 26 2010, 18:42) напр т... Oct 26 2010, 14:48 LexRoss Цитата(proba @ Oct 26 2010, 18:42) напр т... Oct 26 2010, 15:21  demiurg_spb Зачем что-то делить? Память и так зачастую имеет б... Oct 26 2010, 15:36 LexRoss А прочитать как?
Кодunsigned char read_var[5... Oct 26 2010, 15:56 sergeeff Вы в функции
Кодeeprom_write_block( (uns... Oct 26 2010, 16:20 LexRoss я писал
Кодeeprom_write_block( (unsigned ... Oct 26 2010, 16:23 sergeeff Ну тогда сделайте так:
Кодfloat f2;
eeprom_read_... Oct 26 2010, 16:39  rezident Цитата(drvlas @ Oct 27 2010, 02:33) Т.е. ... Oct 26 2010, 22:51   Dog Pawlowa А откуда там оверхэд берется, не подскажете? Oct 27 2010, 03:16   Сергей Борщ Цитата(sergeeff @ Oct 27 2010, 09:12) Код... Oct 27 2010, 08:08 sigmaN Я чё-та не соображу, вы переменную заводите с этим... Oct 27 2010, 03:52 sergeeff Я просто хотел показать, как писать/читать структу... Oct 27 2010, 08:53 Сергей Борщ Цитата(sergeeff @ Oct 27 2010, 11:53) но ... Oct 27 2010, 09:03 sergeeff AVR-овские штучки. Oct 27 2010, 11:29 rezident Цитата(Dog Pawlowa @ Oct 27 2010, 09:16) ... Oct 27 2010, 11:53 sergeeff Нет там никакого оверхеда. Беда в том, что это неп... Oct 27 2010, 14:01 drvlas Цитата(sergeeff @ Oct 27 2010, 17:01) Нет... Oct 27 2010, 17:24  sergeeff Цитата(drvlas @ Oct 27 2010, 20:24) Почем... Oct 27 2010, 20:38   drvlas Убедили меня По второму пункту. Ибо, что касается... Oct 28 2010, 12:05 sigmaN ЦитатаИ про ОЗУ тут напрасно беспокоятся. Совершен... Oct 27 2010, 21:43 _Pasha какая-то белиберда. Откровенно железозависимые вещ... Oct 28 2010, 12:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|