реклама на сайте
подробности

 
 
> Как записать/считать float в/из EEPROM, ATmega8
LexRoss
сообщение Oct 26 2010, 14:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202



МК ATmega8, компилятор WinAvr. Нужно записать число float в eeprom. Была идея сначала домножить число на 10, потом искать остаток от деления на 100, и писать по 2 цифры с помощью eeprom_write_byte(). Что-то мне подсказывает, что можно проще rolleyes.gif Может с помощью eeprom_write_block() ? Тогда как?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
LexRoss
сообщение Oct 26 2010, 17:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 31-01-09
Пользователь №: 44 202



Работает, спасибо.
Go to the top of the page
 
+Quote Post
drvlas
сообщение Oct 26 2010, 20:33
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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] (что и есть сутью союза)



Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 27 2010, 06:12
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 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));
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - LexRoss   Работает, спасибо.   Oct 26 2010, 17:17
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016