С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/324: Рейтинг темы: голосов - 324, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 455
1

Запись в EEPROM

07.02.2010, 23:53. Показов 59905. Ответов 57
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собираю счетчик импульсов на Miko16 и нескольких индикаторах. При отключении питания надо сохранить последнее значение в EEPROM автоматически. Как писать в память понятно http://iosyitistromyss.ru/avr-uchebnyj- ... eprom.html , но ведь питание отключилось и МК не сделает процедуру записи . Думаю сделать так:

Пока кондер разряжается МК успеет сохранить данные, а командой на запись будет служить отсутствие напряжения на ножке INT0 (прерывание INT0 по низкому лог. уровню) Будет ли это работать? Как это делаете Вы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2010, 23:53
Ответы с готовыми решениями:

Запись/чтение EEPROM
Первый раз столкнулся со встроенным еепромом, немного погуглил, понял что есть 3 пути работы с ним...

Запись в EEPROM Atmega128
Добрый день! В коде ниже проблемка: записывает только один символ и все. В чем может быть...

Запись в SRAM и EEPROM
Выписать в память EEPROM первые 10 чисел кратные 4, а по адресу $71 в SRAM их сумму. Спасибо!

Чтение/запись EEPROM на прерываниях
Здравствуйте. Подскажите, есть у кого готовый модуль для работы с внутренним EEPROM для mega328,...

Запись сканкодов клавиш в EEPROM
Задача: устройство на МК серии Atmega (или ATTINY) считывает сканкоды с USB клавиатуры, только...

57
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
08.02.2010, 23:06 21
Author24 — интернет-сервис помощи студентам
При твоем подключении, когда питание на супервизоре упадет до порогового значения, он выдаст ресет на МК независимо от того, какое напряжение на контроллере. А диод возьми с падением 0,2В.
0
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 455
08.02.2010, 23:28 22
Спасибо,понятно!
И вообще, ВСЕМ кто откликнулся - спасибо!
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
22.04.2012, 02:56 23
тэкс, влезу-ка я сюда.
уже третий час роюсь в интернете, читаю даташит, но нигде внятного описания не нахожу.
задача: при выключении питания безопасно записать long int в память attiny2313. при включении микроконтроллера это значение соответственно считывать.
я так понимаю, это четыре байта. на запись каждого (стирание-запись) требуется по 3,4 мс, то есть на все про все - 13,6 мс. еще одна проблема: устройство питается от 3,3В. как я понял, одним программным решением здесь не обойтись.
Далее, в интернетах люди жалуются, что даже если в прошивке нет операций записи(!!!) - EEPROM иногда начинает портиться (даже записанные при изготовлении устройства серийные номера, бывает, портятся - и даже при использовании встроенного BOD). чтобы этого не происходило некоторые рекомендуют указывать в EEAR какую-то ячейку, которую заведомо не используют.
я пишу на C, объявляю ячейку стандартным способом EEMEM unsykned long int i; - как мне в этом случае узнать адрес?
как для данного случая рассчитать емкость? и вообще, чтоб наверняка - хорошо бы увидеть кусок схемы по питанию, настройки фьюзов и непосредственно кода. думал, это распространенная задача, а судя по всему не совсем.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
22.04.2012, 10:03 24
Знаешь, я вот посмотрел, что коллеги перетерли 2 года назад... Я бы тогда не имел что добавить. А вот сейчас, спасибо тебе, появился повод - и есть что сказать.

В таких задачах часто может помочь совершенно другой подход: использовать ФРАМ-память. Запись туда идет последовательно (я спользовал SPI, есть много на I2C) на скорости до 5 МГц - очень быстро. Аппаратно: довесить, скажем, 8pin SOIC микруху FM25640 - разве можно это сравнить даже с простейшей схемой мониторинга питания?
А в чем прикол ФРАМки - ресурс неубиеный. Записывать каждое изменение, как в ОЗУ.

Да, есть задачи, где это не прокатит или прокатит с приличной морокой (например, завести 2 банка для гарантии на случай пропадания при записи массива данных). Но все можно сравнить. Мне пользоваться ФРАМкой понравилось - выбросил нах запись во внутреннюю ЕЕПРОМ. И надежность, думаю, повысилась (точно трудно сказать, не так давно начал ставить на объекты).

У Тексас Инструментс есть и МК со внутренней ФРАМкой. Так что она пришла и начинает убивать ЕЕПРОМ. Лучшее - враг хорошего :)
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
22.04.2012, 10:39 25
про лучшее враг хорошего - кажется, обычно эту поговорку используют несколько иначе :-)
переходить с avr на другую платформу только из-за этого - желания нету.
если бы все это добывалось примерно как молоко или хлеб - однозначно выбрал бы ваш вариант с FM25640. а так - сейчас заморачиваться, где ее добыть. ну и плюс посмотреть, как сильно увеличится код. можете кинуть сюда пример чтения/записи байта в эту память?

насчет простейшей схемы мониторинга - рассматриваю возможность включения микроконтроллера через электролит (например, на 100мкф) и диод шоттки. остается узнать, существуют ли диоды с падением напряжения <0.3В, и как быстро будет разряжаться электролит с 3,3 до 2,8В (успею ли я записать эти четыре байта). ну и плюс наверняка практика внесет свои коррективы...
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
22.04.2012, 10:56 26
Цитата Сообщение от koriprokrommyst
про лучшее враг хорошего - кажется, обычно эту поговорку используют несколько иначе
Могу поспорить, какой смысл вернее. Я прочел эту фразу годике эдак в 82-м в американском журнале, где описывалась как раз ситуация с появлением изделий (кажется полевиков), лучших, чем даже те хорошие, что появились незадолго до этого. И мне нравится этом позитивный смысл, а не общепринятый, связывающий перфекционистам руки :)

Цитата Сообщение от koriprokrommyst
переходить с avr на другую платформу только из-за этого - желания нету
И не предлагаю. Я говорю о тенденциях.

Цитата Сообщение от koriprokrommyst
если бы все это добывалось примерно как молоко или хлеб - однозначно выбрал бы ваш вариант с FM25640.
... рассматриваю возможность включения микроконтроллера через электролит (например, на 100мкф) и диод шоттки. остается узнать, существуют ли диоды с падением напряжения <0.3В, и как быстро будет разряжаться электролит с 3,3 до 2,8В (успею ли я записать эти четыре байта). ну и плюс наверняка практика внесет свои коррективы...
Угу. Дело хозяйское. Но в готовом устройстве доп.затраты будут больше, чем ФРАМка.

Ну, вот грубо выдраный кусок кода. Даже еще видно, что это заменило функции обращения к ЕЕПРОМ. В Wk_2_FLSH() производится запись рабочего массива параметров (тех, у которых стоит признак ITS_FLSH) во ФРАМ с контрольной суммой. Чтение - аналогично.
Внизу прогрммма посылки-приема 1 байта с использованием аппаратного SPI. До этого делал и программынй - не намного сложнее.

Код
void
Wk_2_FLSH( ucha bank) {         // bank - флаг запису у обидва банки ФЛЕШа - ігноруємо
ucha i;
uint w, cs = 0;
SEBIT( SS_PORT, SS_PIN);      // CS=1
CLBIT( SS_PORT, SS_PIN);      // CS=0 means a begin of sommunication
Send_a_byte( WREN);
SEBIT( SS_PORT, SS_PIN);
CLBIT( SS_PORT, SS_PIN);      // Begin of sommunication. FROM detects the SPI mode
Send_a_byte( WRITE);
Send_a_byte( 0x01);         // We write to FLSH from the 0х100 addr
Send_a_byte( 0x00);
for( i = 0; i < LASTINDEX; i++ ) {
if( ITS_FLSH) {
w = ParsWk[i];
Send_a_byte( (w >> 8) & 0xFF);   // Hi byte
Send_a_byte( w & 0xFF);         // Lo byte
cs += w;                     // omd add to a Checksum
}
}
Send_a_byte( ((~cs) >> 8) & 0xFF);   // Hi byte. Checksum is invirted
Send_a_byte( (~cs) & 0xFF);          // Lo byte
SEBIT( SS_PORT, SS_PIN);            // CS=1
return;
}

//********************************** L O W  L E V E L **************************
//********************************** F L A S H  A N D  F R A M *****************
//********************************** S U B R O U T I N E S *********************
ucha
Send_a_byte( ucha data) {         // CS is set outside!
SPDR = data;
while( !(SPSR & (1<<SPIF))) wdt_risit();
return SPDR;                  // Щоразу, коли штовхнемо байт, SLAVE вкине нам щось
}
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
22.04.2012, 14:00 27
последний вопрос: там что, к микроконтроллеру тянутся все шесть ног? на микрконтроллере порты какие-то остаются еще свободными?
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
22.04.2012, 14:11 28
Цитата Сообщение от koriprokrommyst
последний вопрос: там что, к микроконтроллеру тянутся все шесть ног?
"Там" - это где? У меня используется ФРАМка с SPI. Минимально ей достаточно 3 сигнала. Я использовал 4, потому как для аппаратного SPI нужно разделить MOSI и MISO. А в предыдущей реализации объединил на ФРАМке SO и SI - и тремя линиями все сделал, реализовав протокол программно.

Просто прикинь ШИРШЕ, обдумай новую парадигму. Может тебе так понравится использовать ФРАМ, что не жалЬко и 4-х ног станет :)
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
22.04.2012, 14:33 29
Цитата Сообщение от drvtos
Могу поспорить, какой смысл вернее. Я прочел эту фразу годике эдак в 82-м в американском журнале, где описывалась как раз ситуация с появлением изделий (кажется полевиков), лучших, чем даже те хорошие, что появились незадолго до этого. И мне нравится этом позитивный смысл, а не общепринятый, связывающий перфекционистам руки :)
Точно. Плюсую.
На мой взгляд, все, кто произносит «лучшее-враг хорошего» в негативном ключе - закоренелые махровые неудачники, которые ещё и оправдываются, вместо того чтобы исправляться.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
22.04.2012, 14:43 30
Цитата Сообщение от Гарнист
закоренелые махровые неудачники
Ну, друг, ты круто. Мне, например, часто НУЖНО дать подзатыльник с таким словами - и именно в "негативном" смысле. Иначе я буду херню какую-нить дошлифовывать "до нэстямы", как у нас говорят :)

А вообще, в юности всегда поражался, как появлялись новые девайсы, у которых ОДНОВРЕМЕННО было все лучше - и частотка, и рабочие напряжения, и бета... Тут уж действительно - лучшее приходило и убивало на месте хорошее.

Автору: извини, мы тут поофтопали немного.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
22.04.2012, 20:11 31
да не, все ок. будет время подумать, посмотреть на ассортимент нигазинов)
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,818
24.05.2012, 18:02 32
ой. принялся было за реализацию записи по пропаже питания, но так и не смог найти, где я видел схему с конденсатором и шотки диодом, и самое удивительное, в даташите ничего похожего (видимо, приснилось мне), посему стал копать в сторону fram.
drvtos, если видишь это сообщение, скажи, http://www.terraitistronica.ru... 24C256.pdf - тут не spi, а twi, насколько я умею читать. это сильно усложнит конструкцию (otmyko328)?
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
24.05.2012, 18:19 33
Цитата Сообщение от koriprokrommyst
drvtos, если видишь это сообщение
Ти чуєш мене, батьку?
Чую, синку, чую!

Так, смотрим ДШ, там поддерживается такой интерфейс. Значит, не вижу проблем. Я с ним не имел дела, но думаю, один хер.
0
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
24.05.2012, 18:31 34
В своем одометре сделал так - на ногу тиньки завел питание ДО стабилизатора, через делитель со стабилитроном. После стабилизатора - 1000 Мкф, без диода. (Хотя, таки наверное нужно будет поставить). Потребители - Тини2313, внешняя ЕЕПРОМ 24С04, два 74НС595 и два маленьких четырехразрядных индикатора.
В основном цикле опрашивается состояние этой ноги. Хотя по уму - надо на внешнее прерывание заводить. По низкому уровню - запись в ЕЕПРОМ. На столе работает, в реальных условиях не пробовал пока. Времени хватает записать 8+6 байт. Больше - не экспериментировал. Если питание на регистры (и индикаторы соответственно) подавать через полевик, отключаемый при пропаже питания - можно еще некоторое время работы от кондера выиграть.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
24.05.2012, 18:42 35
Цитата Сообщение от Финский
В своем одометре сделал так
ТАКА скажи смысл использования внешнего ЕЕПРОМ, если есть ФРАМ? И я все прощу :)

2 koriprokrommyst: а ты откуда? Что, проблема с ФРАМкой на SPI?
0
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
24.05.2012, 18:51 36
если есть ФРАМ?
"Если" - это хорошее слово :)
Что было под рукой на тот момент - то и втулил. И вообще, это прототип. После тестирования на машине оно все равно будет дорабатываться. Уже есть задумки по оптимизации.
Насчет ФРАМ - заинтересовали. Если в наших краях найду - куплю поиграться.
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
24.05.2012, 18:56 37
Цитата Сообщение от Финский
Насчет ФРАМ - заинтересовали. Если в наших краях найду - куплю поиграться.
Не найдешь - спроси меня. Могу парочку семплов прислать. Если еще можно думать о выборе "внутренняя ЕЕПРОМ - ФРАМ", то уж внешняя ЕЕПРОМ вообще не имеет шансов.
0
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
24.05.2012, 19:02 38
о выборе "внутренняя ЕЕПРОМ"
Начитался страшилок о глюках с внутренней ЕЕПРОМ при нестабильном питании - вот и сделал выбор в пользу внешней. Да и миллион циклов перезаписи показался надежнее ста тысяч. Хотя с точки зрения кода - пришлось подключать I2C библиотеку только ради 24С04.
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
24.05.2012, 19:02 39
drvtos а не подскажешь как называются FROM со SPI? FM24 я так понял аналог 24 серии с ииц
0
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
24.05.2012, 19:04 40
FM25640 у меня.
0
24.05.2012, 19:04
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2012, 19:04
Помогаю со студенческими работами здесь

Запись отрицательного числа в EEPROM
Пробую записать с помощью eeprom_write_dword, но сохраняется как положительное число. Как сохранить...

Iar Avr 3.20c отладчик не показывает чтение/запись в Eeprom
Симулятор IAR не показывает чтение/запись в EEPROM. Из файла загружал память и вручную забивал,...

Запись в EEPROM
Не могу осуществить запись в EEPROM (проверка с помощью PIC SIMULATOR IDE) под pic16f676 чтение...

Запись в STM8 EEPROM
Переменные: #pragma location=0x004001 //stort eeprom address __no_init int16_t CorrectionValue; ...

Запись в Serial EEPROM.
Пишу в память. void LOGGER_Write(uint32_t address, uint32_t lenght, uint8_t *data) { #if...

Победить блочную запись в EEPROM 24LCXXX
Нихерасики не получается..... :( Есть устройство stm32F100CBT в качестве мозгов и 24LC64 в роли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru