|
Отсчет времени и сброс микроконтроллера |
|
|
|
 |
Ответов
|
Oct 23 2006, 06:23
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(GSK @ Oct 23 2006, 14:11)  Как решить следующую задачку: Таймер микроконтроллера вырабатывает прерывания через определенные промежутки времени. По этому прирыванию увеличиваеться значение переменной. При провале питания происходит перезапуск контроллера. Как сделать, чтобы значение этой переменной не пропадало? Я думаю, что подобная задача решаеться в электронных часах. Нет ли у кого примера на С. Для начала объявить эту переменную как __no_init, что бы она не инициализировалась стартовым кодом, генерируемым компилятором. Если в Вашем контроллере есть MCU control and Status Register (MCUCSR), и в нем присутсвует флаг PORF (Power On Reset), программа может контролировать, "холодный" или "горячий" старт произошел, соответсвенно инициализировать переменную или нет. В электронных часах (стационарных), ИМХО, обычно решается двумя питаниями - сетевым и батарейным
--------------------
|
|
|
|
|
Oct 23 2006, 08:35
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
Цитата(prottoss @ Oct 23 2006, 10:23)  Для начала объявить эту переменную как __no_init, что бы она не инициализировалась стартовым кодом, генерируемым компилятором. Если в Вашем контроллере есть MCU control and Status Register (MCUCSR), и в нем присутсвует флаг PORF (Power On Reset), программа может контролировать, "холодный" или "горячий" старт произошел, соответсвенно инициализировать переменную или нет.
В электронных часах (стационарных), ИМХО, обычно решается двумя питаниями - сетевым и батарейным У меня для AtTiny2313, программа была написана на asm, не получилось для этой цели использовать MCUCSR. Переменная достаточно часто портилась.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
|
Oct 23 2006, 08:52
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Семён @ Oct 23 2006, 16:35)  Цитата(prottoss @ Oct 23 2006, 10:23)  Для начала объявить эту переменную как __no_init, что бы она не инициализировалась стартовым кодом, генерируемым компилятором. Если в Вашем контроллере есть MCU control and Status Register (MCUCSR), и в нем присутсвует флаг PORF (Power On Reset), программа может контролировать, "холодный" или "горячий" старт произошел, соответсвенно инициализировать переменную или нет.
В электронных часах (стационарных), ИМХО, обычно решается двумя питаниями - сетевым и батарейным
У меня для AtTiny2313, программа была написана на asm, не получилось для этой цели использовать MCUCSR. Переменная достаточно часто портилась. Значит речь не о провале а о пропадании питания на относительно большое время. Возможно конденсаторы большей, чем есть, емкости решат проблему?
--------------------
|
|
|
|
|
Oct 24 2006, 02:45
|
Местный
  
Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044

|
Цитата(prottoss @ Oct 23 2006, 11:52)  Значит речь не о провале а о пропадании питания на относительно большое время. Возможно конденсаторы большей, чем есть, емкости решат проблему? Видимо так. Значит есть следующие варианты: 1. Резервное питание контроллера от батарейки с засыпанием на время пропадания основного питания. 2. Хранение переменной в энергонезависимом месте постоянно. 3. Сохранение переменной в энергонезависимом месте на время пропадания питания. Для увеличения времени пропадания питания: - использовать step-down стабилизатор; - достаточной емкости накопители энергии до и после стабилизатора: - контроль питания на входе стабилизатора. Для увеличения числа циклов жизни ЭПРОМ для сохранения переменной использовать не одну, а несколько ячеек, меняя их при каждом цикле записи.
--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
|
|
|
|
Сообщений в этой теме
GSK Отсчет времени и сброс микроконтроллера Oct 23 2006, 06:11 Семён Использовать внутренней флеш или внешнею память. Н... Oct 23 2006, 06:17 Dog Pawlowa Цитата(GSK @ Oct 23 2006, 09:11) Как сдел... Oct 23 2006, 06:28 Михаил Горюнов Можно сформировать, завести сигнал о исчезновении ... Oct 23 2006, 07:06 GSK А можно пример схемы ПРАВИЛЬНОЙ организации питани... Oct 24 2006, 03:21 prottoss Цитата(GSK @ Oct 24 2006, 11:21) А можно ... Oct 24 2006, 03:51 Михаил Горюнов Не вижу смысл резервного питания применительно к э... Oct 24 2006, 05:26 Igor_K Если требуется гарантированно сохранять переменную... Oct 24 2006, 05:53 GSK Прошу прощения за назойливость.
А как контролирова... Oct 24 2006, 06:52 Михаил Горюнов Цитата(GSK @ Oct 24 2006, 10:52) Прошу пр... Oct 24 2006, 07:20  GinRider Если питание пропадает ненадолго, то можно использ... Oct 24 2006, 10:06   Михаил Горюнов Цитата(GinRider @ Oct 24 2006, 14:06) Мож... Oct 24 2006, 10:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|