Например TDA7294

Форум РадиоКот • Просмотр темы - Сохранение структуры в EEPROM AVR?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс фев 22, 2026 07:18:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 14:32:52 
Открыл глаза

Зарегистрирован: Пн янв 08, 2007 10:44:28
Сообщений: 48
Откуда: Красноярский край
Рейтинг сообщения: 0
Доброго времени суток!
Пишу программу в студии под мегу 16 и возник вопрос.
Делаю так:
Код:
typedef struct {
    unsigned char  Name_1;
    unsigned char  Name_2; //И таких еще 10 :)
} Prog_Struct;


А потом так:
Код:
Prog_Struct eePrg[4] __attribute__((section(".eeprom")));


Идея в том, чтобы в EEPROM был массив структур с параметрами для работы устройства и обращаясь по номеру вытаскивать нужную:
Код:
eeprom_read_block(&psPrg, &eePrg[ucPrg_Nam], sizeof(psPrg)); //psPrg - такая же структура, но для работы


И так вопрос. Все что описано выше работает, но я не могу сообразить как изначально сделать массивы структур заполненным в EEPROM. Вариант с заполнить при первом запуске не подходит.

Подскажите, как выйти из положения? Как их зашить их в EEPROM уже заполненными?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 17:07:40 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Цитата:
Вариант с заполнить при первом запуске не подходит.


Почему? Напишите код, который заполняет их, скомпилируйте. Компилятор сгенерирует HEX для eeprom. Зашейте его, а код при желании измените обратно.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 17:15:11 
Открыл глаза

Зарегистрирован: Пн янв 08, 2007 10:44:28
Сообщений: 48
Откуда: Красноярский край
Рейтинг сообщения: 0
На соседней ветке подсказали красивое решение:
Код:
Prog_Struct eePrg[2] __attribute__((section(".eeprom"))) = {
    {..., ..., ...},
    {..., ..., ...},
};


Вопрос снят, спасибо за совет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 17:33:03 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Ну так да, я это и имел в виду. Т.е., вопрос был о форме записи?

Рад, что все решилось.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 17:47:38 
Открыл глаза

Зарегистрирован: Пн янв 08, 2007 10:44:28
Сообщений: 48
Откуда: Красноярский край
Рейтинг сообщения: 0
Да, именно в эту мелочь я и не мог въехать, бывает :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 20:11:25 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
Kalibry писал(а):
На соседней ветке подсказали красивое решение:
Код:
Prog_Struct eePrg[2] __attribute__((section(".eeprom"))) = {
    {..., ..., ...},
    {..., ..., ...},
};
решение не красивое, а самое обычное. однако, вместо __attribute__((section(".eeprom"))) разумнее использовать макрос EEMEM:
Код:
EEMEM Prog_Struct eePrg[2] = {
    {..., ..., ...},
    {..., ..., ...},
};
ну и само собой, надо не забыть прошить МК сгенерированным файлом для EEPROM :)

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вс сен 18, 2011 21:51:44 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
Kalibry писал(а):
Вариант с заполнить при первом запуске не подходит.


Как раз это самый правильный вариант. Каждый раз при запуске программа должна проверять контрольную сумму EEPROM (или хотя бы сигнатуру) и записывать в EEPROM значения по умолчанию, если содержимое испорчено. Так Вы увеличите живучесть устройств и исключите лишние действия при прошивке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 06:53:42 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Ничегонеработает писал(а):
и записывать в EEPROM значения по умолчанию, если содержимое испорчено. Так Вы увеличите живучесть устройств и исключите лишние действия при прошивке
Странное утверждение. Если значение по умолчанию отличается от нужного, то это ведет к неправильной работе устройства. Такое годится, наверное, только для домашних поделок.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 07:36:33 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
"Странное утверждение."
Утверждение не странное. Это грамотное решение.
Создаются две одинаковые структуры. Первая дефолтная во flash, вторая, с которой работает программа, в eeprom. При старте и определении "битой" рабочей структуре происходит тупое копирование из дефолтной.

"Такое годится, наверное, только для домашних поделок."
Вариант с созданием 2-ух прошивочных файлов - домашняя поделка )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 07:44:11 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
у меня епром прописывается в 3 местах и каждое закрывается контрольной суммой. :)
В случае, если кс не бьет в 3 местах, происходит запись дефолтных значений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 08:22:23 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
Не хилое резервирование.
Наверное выдерживает 4-ую степень жесткости при смене eeprom параметров.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 10:29:53 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Если значение по умолчанию отличается от нужного, то это ведет к неправильной работе устройства.


Испорченное значение EEPROM ведёт еще к более неправильной работе, чем дефолтное. Даже может привести к катастрофическим последствиям.

BerZerK-ku писал(а):
Такое годится, наверное, только для домашних поделок.


Наоборот.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 10:43:18 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Ничегонеработает писал(а):
Испорченное значение EEPROM ведёт еще к более неправильной работе, чем дефолтное. Даже может привести к катастрофическим последствиям.
Испорченное значение не ведет к неправильной работе, т.к. формируется сигнал/вызов/еще что-то и устройство нуждается в обслуживании. Дефолтное значение еще можно записать в какую-нибудь подсветку экрана, но все остальное лучше резервировть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 11:13:03 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Испорченное значение не ведет к неправильной работе, т.к. формируется сигнал/вызов/еще что-то и устройство нуждается в обслуживании. Дефолтное значение еще можно записать в какую-нибудь подсветку экрана, но все остальное лучше резервировть.


Загрузка дефолтных значений в большинстве случаев позволяет устройству хоть как-то функционировать. Такой подход распространен, и отнюдь не в домашних поделках. Впрочем, нет смысла Вас переубеждать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 12:04:28 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Ничегонеработает писал(а):
Загрузка дефолтных значений в большинстве случаев позволяет устройству хоть как-то функционировать.
"Хоть как-то функционировать" ?! Зачем тогда нужны все эти настройки, если и так сойдет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 13:56:37 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
"Хоть как-то функционировать" ?! Зачем тогда нужны все эти настройки, если и так сойдет?
кормушка для рыбок в аквариуме: настроили на кормление раз в сутки, EEPROM глюкнула. в вашем случае (остановиться и подавать сигналы тревоги) рыбы останутся голодными до приезда хозяина из отпуска (т.е. подохнут), в случае, описанного Леонидом Ивановичем - кормушка "перенастроится" на кормление по умолчанию (допустим, 2 раза в сутки) - за месяц аквариум немного позеленеет, но рыбы, скорее всего, выживут.

впрочем,
Ничегонеработает писал(а):
нет смысла Вас переубеждать.
:)))

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 15:56:15 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Хм... а чего тут переубеждать? я вроде и сам согласен что такой метод имеет право на жизнь, для домашних поделок или настроек касающихся пользовательского интерфейса. Но обходится так с параметрами участвующими в основных алгоритмах работы это уже бред.
А если у вас устройство релейной защиты? и например в МТЗ выставится "значение по умолчанию", в итоге получите миллионные-миллиардные убытки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 19:04:47 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 889
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6281
Откуда: Minsk
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Хм... а чего тут переубеждать? я вроде и сам согласен что такой метод имеет право на жизнь, для домашних поделок или настроек касающихся пользовательского интерфейса. Но обходится так с параметрами участвующими в основных алгоритмах работы это уже бред.
А если у вас устройство релейной защиты? и например в МТЗ выставится "значение по умолчанию", в итоге получите миллионные-миллиардные убытки.


Правы оба, хоть так не бывает :)
Если слетела EEPROM, то нужно
- загрузить дефолтные настройки, но при этом :
- сообщить "куда следует", что настройки запорчены.
И та же МТЗ пусть лучше отключит не при 10А, а при 20, чем не отключит вообще. И у оператора будет мигать красная лампочка НАСТРОЙКИ ПОФИРЯЧИЛИСЬ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Пн сен 19, 2011 19:07:23 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Цитата:
Если значение по умолчанию отличается от нужного, то это ведет к неправильной работе устройства.


Значения по умолчанию суть безопасные значения. Лучше пусть устройство работает не так эффективно, как могло бы, но ничего не круша вокруг, чем работает непонятно как (и потенциально опасно) с глючными параметрами.

Цитата:
миллионные-миллиардные убытки.


В серьезных случаях на это пофиг. Главное - безопасность и предсказуемость.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Последний раз редактировалось YS Вт сен 20, 2011 18:44:31, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сохранение структуры в EEPROM AVR?
СообщениеДобавлено: Вт сен 20, 2011 05:15:15 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Jack_A писал(а):
Значение по умолчанию суть безопасное значение.

Это как? Металл перегреют/недогреют? устройство внезапно начнет работать на другой частоте? детектор пальчиков будет пропускать только своего создателя?

Если человек пишет , что "Вариант с заполнить при первом запуске не подходит.". Значит у него есть на это основания.

YS писал(а):
Лучше пусть устройство работает не так эффективно
Угу. Так считает начальство выводя бригаду укладывать асфальт в дождь.

YS писал(а):
В серьезных случаях на это пофиг. Главное - безопасность и предсказуемость.
Для безопасности/предсказуемости используют как-раз резервирование, если не аппаратуры, то хотя бы параметров.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y