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

 
 
> Сохранение важных переменных в EEPROM при потере питяния
ATMExpert
сообщение Feb 8 2012, 13:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 20-11-09
Из: Ставрополь
Пользователь №: 53 756



Бодрого дня всем форумчанам. В моем проекте (на Mega640) требуется в момент пропадания общего питания сохранять 5-6 байт оперативной информации в еепром, дабы иметь возможность при подаче питания благополучно их считывать. Аппаратно для этих целей использую встроенный компаратор с внешней опорой (REF192) и делитель по питанию. В программе ставлю прерывание на компаратор, ну и пишу в еепром. Схема питания такая: +24-->+12-->diode-->condencator 2200 uF-->+5. При пропадании +24 схема детектирует просадку, вызывается прирывание. Конденсатор 2200 мкФ думаю достаточен, чтобы успеть записать в память до снижения питания ниже критического уровня. В железе показывает достаточно устойчивую работу (в лаб. условиях). Хочется услышать мнения по такой реализации, а также может нужно еще что-то в код добавлять если после успешной записи остается время (может нужно ожидать с ноги выхода компаратора смену уровня, если это была кратковременная просадка питания).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ATMExpert
сообщение Feb 8 2012, 16:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 20-11-09
Из: Ставрополь
Пользователь №: 53 756



Кондер стоит по 12 вольтам. от этой же напруги питается dc-dc на 5 вольт(Мега и логика). А диод после +12 стоит, он и отсекает всю нагрузку по этой линии питания. BOD стоит внешний вместе с WDT. Я мог проверить факт попадания в процедуру прерывания тупо уменьшая входное питание от БП. Делитель расчитал вроде верно с достаточным запасом. При 19 вольтах появляется сработка. Вот п/п от компаратора:

Код
__interrupt void MainPowerFail(void)
{
  asm("cli");
  if ((!drv_pan.drv_on)&&(!drv_tilt.drv_on))   // если тока приводы не включены - значит можно сохранить, а иначе нет смысла
    {Wr_Ee_Int((int)&PanFailPos, drv_pan.pos_pan); //сохраняем данные
     Wr_Ee_Int((int)&TiltFailPos,drv_tilt.pos_tilt);
     Wr_Eeprom((int)&ErrorFlag, (SYSTEM_STATUS|POS_SAVED));
     while (bit_is_set(ACSR, ACO)){}  //ждемс пока питание не восстановится
    }
}


Так можно решить задачу ожидания восстановления питания?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 8 2012, 16:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ATMExpert @ Feb 8 2012, 20:06) *
Так можно решить задачу ожидания восстановления питания?

Так не стоит: нужно дождаться стабильного восстановления питания, а не вылетать по любому шороху от компаратора.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ATMExpert   Сохранение важных переменных в EEPROM при потере питяния   Feb 8 2012, 13:05
- - aaarrr   Цитата(ATMExpert @ Feb 8 2012, 17:05) Кон...   Feb 8 2012, 13:13
- - V_G   Я в xmegy успеваю сохранить страницу (32 байта) пр...   Feb 8 2012, 13:15
- - zombi   Цитата(ATMExpert @ Feb 8 2012, 16:05) ......   Feb 8 2012, 13:36
|- - zombi   Цитата(ATMExpert @ Feb 8 2012, 19:06) При...   Feb 8 2012, 17:29
- - ATMExpert   Дык вот этой строчкой и жду вроде как: while (bit...   Feb 8 2012, 16:25
|- - aaarrr   Цитата(ATMExpert @ Feb 8 2012, 20:21) Дык...   Feb 8 2012, 16:27
|- - ATMExpert   Цитата(aaarrr @ Feb 8 2012, 20:27) В том-...   Feb 8 2012, 16:31
|- - aaarrr   Цитата(ATMExpert @ Feb 8 2012, 20:31) Т.е...   Feb 8 2012, 16:44
- - ILYAUL   1. Что мешает сразу сохранять данные в EEPROM? 2. ...   Feb 8 2012, 17:04
- - ATMExpert   Цитата1. Что мешает сразу сохранять данные в EEPRO...   Feb 8 2012, 17:48
|- - ILYAUL   Цитата(ATMExpert @ Feb 8 2012, 21:44) 1. ...   Feb 8 2012, 18:04
|- - ATMExpert   Цитата(ILYAUL @ Feb 8 2012, 22:04) Вы не ...   Feb 8 2012, 19:10
|- - zombi   Цитата(ATMExpert @ Feb 8 2012, 22:10) В с...   Feb 8 2012, 19:22
|- - ATMExpert   Цитата(zombi @ Feb 8 2012, 23:22) Как час...   Feb 9 2012, 04:50
|- - zombi   Цитата(ATMExpert @ Feb 9 2012, 07:50) А е...   Feb 9 2012, 08:40
- - demaven   в одной из работ потребовалось сохранять небыстро ...   Feb 9 2012, 09:04
|- - ATMExpert   Цитата(demaven @ Feb 9 2012, 13:04) в одн...   Feb 9 2012, 11:56
|- - defunct   Цитата(demaven @ Feb 9 2012, 11:04) видно...   Feb 19 2012, 04:27
- - smk   Ионистор ставить не желаете? А вообще для таких ус...   Feb 19 2012, 05:27
- - demaven   с двумя местами сохранения никак не получается. яч...   Feb 27 2012, 12:49
|- - zombi   Цитата(demaven @ Feb 27 2012, 16:49) с дв...   Feb 27 2012, 14:39
- - desh   А что вам мешает защищать ваши ячейки контрольной ...   Feb 27 2012, 14:35


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:15
Рейтинг@Mail.ru


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