Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 30.05.2010, 08:47  
sbcentr
Прохожий
 
Регистрация: 09.06.2009
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
sbcentr на пути к лучшему
По умолчанию Сохранение переменной в EEPROM при пропадани питания

Здравствуйте, разбираюсь с МК, IDE IAR, взял контроллер Attiny 2313 -
Подскажите пожалуйста, как сохранить переменную в EEPROM при
пропадании питания МК?
Заранее благодарен.
Реклама:
sbcentr вне форума  
Непрочитано 30.05.2010, 09:04  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Цитата:
// EEARH, EEARL - registri adressov danih v EEPROM
// EEDR - Register Dannih v EEPROM
// EECR - Register kontrolya sostoyaniya EEPROM
// EERIE - Register ожидания доступности EECR
// EEMWE - Register монопольного разрешения записи EECR
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
while(EECR & (1‹‹EERIE));
EEAR = uiAddress;
EEDR = ucData;
EECR |= (1‹‹EEMWE);
EECR |= (1‹‹EERIE);
}

unsigned char EEPROM_read(unsigned int uiAddress)
{
while(EECR & (1‹‹EEWE));
EEAR = uiAddress;
EECR |= (1‹‹EERE);
return EEDR;
}
дале вызываете...
Цитата:
//EEDATA1 = EEPROM_read(0x00); //read EEPROM-
EEPROM_write(0x00,123);
но не при пропадании, а на момент изменения переменной/
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ
raxp вне форума  
Сказали "Спасибо" raxp
avr123-nm-ru (30.05.2010)
Непрочитано 30.05.2010, 09:20  
sbcentr
Прохожий
 
Регистрация: 09.06.2009
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
sbcentr на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Дело в том, что у EEPROM ограниченное количество циклов, записи, стирания, а изменение переменной у меня происходит примерно раз в 0.5с.
Вот и хотелось что нибудь сделать, на случай если питание пропедет, что бы
данные не потерялись. Я думал как нибудь использовать BOD, вызвать прерывание, в нем произвести типа

// Reset Source checking
if (MCUSR & 1)
{
// Power-on Reset
MCUSR=0;
}
else if (MCUSR & 2)
{
// External Reset
MCUSR=0;
}
else if (MCUSR & 4)
{
// Brown-Out Reset
MCUSR=0;
}
else
{
// Watchdog Reset
MCUSR=0;
};
и при нужных условиях присвоить переменной EEPROM значение.

Просто не знаю как это прерывание реализовать...
sbcentr вне форума  
Непрочитано 30.05.2010, 09:28  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

100 тыс. вам мало? ...уточните, насколько часто меняется переменная ваша ...могу посоветовать сделать нечто вроде сторожевого ключа, самое простое приконнектить любой порт на питание и контролировать "1", а сам микроконтроллер запитать через диод и емкость, микрофарад на 100-470 ...тогда при пропадании питания контроллер еще будет с питанием, а уровень на порту упадет до "0", вот его и контролируйте.
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ
raxp вне форума  
Сказали "Спасибо" raxp
sbcentr (30.05.2010)
Непрочитано 30.05.2010, 09:36  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Сообщение от sbcentr Посмотреть сообщение
Дело в том, что у EEPROM ограниченное количество циклов, записи, стирания, а изменение переменной у меня происходит примерно раз в 0.5с.
Выделите в EEPROM несколько байт и пишите значение переменной по кругу. (Только не забудьте добавить механизм поиска последнего значения при включении питания)
testerplus вне форума  
Непрочитано 30.05.2010, 10:03  
sbcentr
Прохожий
 
Регистрация: 09.06.2009
Сообщений: 9
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
sbcentr на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

__no_init __eeprom unsigned long int E_sum;
.
.
.
#pragma vector = RESET_vect
__interrupt void rst(void)
{
if (MCUSR & 4)
{
// Brown-Out Reset
MCUSR=0;

E_sum=.....//переменная
asm("jmp 0x00");
}
}

соответственно задав fuse BOD на 2.7в

Так неправильно?
sbcentr вне форума  
Непрочитано 30.05.2010, 10:11  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Поздно пить боржоми когда почки уже отвалились.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 30.05.2010, 10:15  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Сообщение от sbcentr Посмотреть сообщение
соответственно задав fuse BOD на 2.7в

Так неправильно?
Это не спасет от полного пропадания питания.

Цитата:
asm("jmp 0x00");
И куда мы попадем после этого джампа? (Да и вектор ресета скорее всего установится не на rst(), а на стартап)
testerplus вне форума  
Сказали "Спасибо" testerplus
sbcentr (30.05.2010)
Непрочитано 30.05.2010, 11:12  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

от диодного моста - разделительный конденсатор, потом диод на конденсатор небольшой емкости, параллельно ему - резисторный делитель. Среднюю точку делителя - на вход компаратора. На второй вход компаратора - делитель с питания контроллера. По прерыванию от компаратора - запись в еепром и усыпляем.
Но если данные ответственные - лучше внешнюю батарейку, наверное.
__________________
warez
urry вне форума  
Непрочитано 30.05.2010, 12:23  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Сохранение переменной в EEPROM при пропадани питания

Сообщение от urry Посмотреть сообщение
от диодного моста - разделительный конденсатор.
Делаю почти аналогично. После моста маленький конденсатор с резистивным делителем для детектора пропадания, а от моста диод на большую ёмкость 4700 мкф и далее на стабилизатор МК. Для питания нагрузок отдельный конденсатор и стабилизатор.
При пропадании питания МК выключает все нагрузки, и если стабилизатор типа ШИМ (МС34063 например) то хватит на 1-2 сек питания МК для записи в ЕЕПРОМ. 8 милисек одна ячейка, за 0,8 сек 100 ячеек моно записать. )))))
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
picavr вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Сохранение счетчика при сбросе МК. woroba Микроконтроллеры, АЦП, память и т.д 9 29.09.2009 16:50


Часовой пояс GMT +4, время: 22:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot