Подскажите "красивый" код на СИ для чтения/записи в EEPROM 32-х разрядных чисел(unsigned long int и long int). Для двухбайтных есть примеры выше по тексту (архив для скачивания - для старшего байта используется*256) и в апноуте (AVR035 - для старшего байта используется <<8).
ATmega16: EEPROM
Нашёл подходящую тему, чтобы задать вопрос.
Подскажите "красивый" код на СИ для чтения/записи в EEPROM 32-х разрядных чисел(unsigned long int и long int). Для двухбайтных есть примеры выше по тексту (архив для скачивания - для старшего байта используется*256) и в апноуте (AVR035 - для старшего байта используется <<8).
Подскажите "красивый" код на СИ для чтения/записи в EEPROM 32-х разрядных чисел(unsigned long int и long int). Для двухбайтных есть примеры выше по тексту (архив для скачивания - для старшего байта используется*256) и в апноуте (AVR035 - для старшего байта используется <<8).
- Реклама
Просто объявляй такие переменные в еепром и используй.
пример в линке в профиле - страница 05a.htm
пример в линке в профиле - страница 05a.htm
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
У меня сейчас было:
написал eeprom int i , выставил BODEN, записал бит, записал программу, в программе значение i приращалось кнопкой и выводилось на дисплей...Выключил питание- на дисплее какая- то ерунда...Прочитал фьюзы- BODEN не включен...включил, еще раз перезаписал- работает....
Но это так....
У меня вопрос вот в чем: в даташите что- то сказано про 1000 циклов перезаписи EEPROM....Допустим, у меня информация записывается только при отключекнии питания, а читается при включении....Получается, что гарантированный срок жизни аппарата- 1000 циклов включение- выключение....Не маловато ли ?
написал eeprom int i , выставил BODEN, записал бит, записал программу, в программе значение i приращалось кнопкой и выводилось на дисплей...Выключил питание- на дисплее какая- то ерунда...Прочитал фьюзы- BODEN не включен...включил, еще раз перезаписал- работает....
Но это так....
У меня вопрос вот в чем: в даташите что- то сказано про 1000 циклов перезаписи EEPROM....Допустим, у меня информация записывается только при отключекнии питания, а читается при включении....Получается, что гарантированный срок жизни аппарата- 1000 циклов включение- выключение....Не маловато ли ?
1000 циклов это гарантированное значение, так например если у паяльника гарантия 1 год это же не значит что он через год перегорит.
Настоящий кот всегда либо голоден,
либо невыспался ...
либо невыспался ...
Я писал на встроенной ЕЕПРОМ счетчик наработки с записью каждые 5 минут.
Заводил в ЕЕПРОМ специальную ячейку-счетчик количества записей и при ее приближении к критическому значению "переезжал" в новую область ЕЕПРОМ с копированием данных. Вполне себе нормально работает.
Заводил в ЕЕПРОМ специальную ячейку-счетчик количества записей и при ее приближении к критическому значению "переезжал" в новую область ЕЕПРОМ с копированием данных. Вполне себе нормально работает.
Оптимизм х (Опыт + Знания) = const
- Реклама
Попробую..
Предположим, я использую 10 последовательных ячеек ЕЕПРОМ.
В начале адресного пространства ЕЕПРОМ завожу еще 1 ячейку, в которой храню адрес первой ячейки из моего массива в 10 ячеек.
При каждом акте записи в ЕЕПРОМ значение в определенной ячейке из моего массива увеличивается (счетчик записей). При включении МК сначала считывает адрес начала массива (1 служебная ячейка в начале, помните?), потом проверяет значение в счетчике записей. Если оно больше заданной величины, то МК записывает в первую служебную ячейку новый адрес начала массива (старый + 10), потом копирует все данные из массива в ячейки с тем же сдвигом 10 (ну кроме счетчика, разумеется, его надо обнулить). Вот такой примерно алгоритм.
Предположим, я использую 10 последовательных ячеек ЕЕПРОМ.
В начале адресного пространства ЕЕПРОМ завожу еще 1 ячейку, в которой храню адрес первой ячейки из моего массива в 10 ячеек.
При каждом акте записи в ЕЕПРОМ значение в определенной ячейке из моего массива увеличивается (счетчик записей). При включении МК сначала считывает адрес начала массива (1 служебная ячейка в начале, помните?), потом проверяет значение в счетчике записей. Если оно больше заданной величины, то МК записывает в первую служебную ячейку новый адрес начала массива (старый + 10), потом копирует все данные из массива в ячейки с тем же сдвигом 10 (ну кроме счетчика, разумеется, его надо обнулить). Вот такой примерно алгоритм.
Оптимизм х (Опыт + Знания) = const
Да нет, на Си...
По сути - косвенная адресация, так что ничего страшного в этом нет..
По сути - косвенная адресация, так что ничего страшного в этом нет..
Оптимизм х (Опыт + Знания) = const
Вопрос времени и желания. Правильной дорогой идете, товарищ.. 
Оптимизм х (Опыт + Знания) = const
- Сообщения: 8
- Зарегистрирован: Вс сен 09, 2007 22:29:15
Читаем постом выше. Resp правильно вырезку из даташита привел.skrrmrchoh писал(а): У меня вопрос вот в чем: в даташите что- то сказано про 1000 циклов перезаписи EEPROM....Допустим, у меня информация записывается только при отключекнии питания, а читается при включении....Получается, что гарантированный срок жизни аппарата- 1000 циклов включение- выключение....Не маловато ли ?
10000 (десять тысяч) циклов перезаписи флэша (памяти программ)
100000 (сто тысяч) циклов перезаписи EEPROM
P.S. Даташиты надо читать внимательно ;)


