|
Отсчет времени и сброс микроконтроллера |
|
|
|
 |
Ответов
|
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. Переменная достаточно часто портилась. Значит речь не о провале а о пропадании питания на относительно большое время. Возможно конденсаторы большей, чем есть, емкости решат проблему?
--------------------
|
|
|
|
Сообщений в этой теме
GSK Отсчет времени и сброс микроконтроллера Oct 23 2006, 06:11 Семён Использовать внутренней флеш или внешнею память. Н... Oct 23 2006, 06:17   CDT Цитата(prottoss @ Oct 23 2006, 11:52) Зна... Oct 24 2006, 02:45 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
|
|
|