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

 
 
> XMEGA, RTC и программный сброс
zombi
сообщение Feb 24 2013, 13:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Иногда нужно выполнить программный сброс в устройсте с иксмегой и внешним часовым кварцем.
Как сделать так что бы работа RTC не нарушалась (часы не отставали).
Ну или как минимизировать отставание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ILYAUL
сообщение Feb 24 2013, 15:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Почему , только с батарейным? Например выход из программы MENU, после смены каких либо установок , благополучно обходит всё что касается часов. Перезапускается только то чего коснулись установки.
ИМХО RTC в XMEGA - бесполезная вещь, так , чисто маркетинг.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 24 2013, 15:53
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ILYAUL @ Feb 24 2013, 18:00) *
ИМХО RTC в XMEGA - бесполезная вещь, так , чисто маркетинг.

Да ладно. Довольно много изделий на иксмегах с часами на ней и батарейкой чудно работают.
Но я ниразу не инициировал системный сброс из программы.

Недавно пожаловались что некоторые изделия не включаются при подаче питания (т.е. они включаются но неработают как надо).
Оказалось что для восстановления работоспособности надо полностью обесточить процессор (вынуть батарейку) и после этого всё опять чудно работает.
Получается что при работе был какойто сбой (отвёртка упала на включённую прлату, молния или опять же метеорит (болид biggrin.gif ) рядышком пролетел), процессор "улетел" и натворил чегото со своими регистрами.
И для того чтобы все их снова инициализировать нужно дать ему сброс.
Вот я и подумал инициировать системный сброс из программы всегда при подаче питания.
Но боюсь часы отставать будут ввиду их выключения на время выполнения сброса.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 24 2013, 16:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zombi @ Feb 24 2013, 17:53) *
Недавно пожаловались что некоторые изделия не включаются при подаче питания (т.е. они включаются но неработают как надо).
Оказалось что для восстановления работоспособности надо полностью обесточить процессор (вынуть батарейку) и после этого всё опять чудно работает.

А BOD разрешён?

Цитата(zombi @ Feb 24 2013, 17:53) *
Получается что при работе был какойто сбой (отвёртка упала на включённую прлату, молния или опять же метеорит (болид biggrin.gif ) рядышком пролетел), процессор "улетел" и натворил чегото со своими регистрами.
И для того чтобы все их снова инициализировать нужно дать ему сброс.

И watchdog не помогает?
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 24 2013, 18:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Feb 24 2013, 20:33) *
А BOD разрешён?

Конечно, но что от него толку если процессор всегда запитан либо от внешнего блока питания либо от внутренней батарейки.
Цитата(_Артём_ @ Feb 24 2013, 20:33) *
И watchdog не помогает?

watchdog не использую. На думаю что он тоже не всегда поможет, процессор же после сбоя работает, чего то делает, только неизвестно чего и вполне может собаку сбрасывать.


Цитата(maksimp @ Feb 24 2013, 20:51) *
Нужно переделать прорамму так чтобы сброс был не нужен.

Возможно.
Цитата(maksimp @ Feb 24 2013, 20:51) *
Программа может сама инициализировать _все_ регистры процессора, в том числе значениями по умолчанию регистры неиспользуемой периферии.
И делать это надо регулярно, в основном цикле. А то вдруг космический протон пролетел и какой-нибудь регистр сбился.

дайте пример кода biggrin.gif


Сделал сброс при каждом включении питания.
Раз сто уже вкл.-выкл. часы не отстают (или я не могу увидеть это отставание). Как такое может быть cranky.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 25 2013, 13:29
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(zombi @ Feb 24 2013, 22:49) *
дайте пример кода biggrin.gif
Писать не только единичи по маске в регистры, а и нули...
Сбрасывать нужные битики записью единичек... И т.д. и т.п.
Проще и надёжнее ресетнуть по-настоящемуsm.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 25 2013, 15:15
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(demiurg_spb @ Feb 25 2013, 17:29) *
Проще и надёжнее ресетнуть по-настоящемуsm.gif

Вот по псевдо настоящему и ресетаю.


Померял время теряемое RTC при формировании процессором программного сброса.
На всё про всё уходит примерно 65-75 мкс.
т.е. на пробуждение, обработку прерывания RTC, выполнение сброса и повторную инициализацию RTC.
Даже если предположить что при каждом включении изделия будет теряться аж 3 такта RTC и в день изделие вкючат аж 20 раз получаем потерю всего 60-ти тактов.
На фоне 30ppm самого кварца (+-84935 тактов в сутки) это просто мизер.
А если при повторной инициализауии RTC стартануть не с нуля а с троечки то вообще можно забыть что часы останавливались biggrin.gif

Если я где то ошибся поправьте плиз.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   XMEGA, RTC и программный сброс   Feb 24 2013, 13:12
- - ILYAUL   Ну, так если это программный сброс - не трогайте R...   Feb 24 2013, 13:37
|- - zombi   Цитата(ILYAUL @ Feb 24 2013, 16:37) Ну, т...   Feb 24 2013, 13:38
- - ILYAUL   Это если Вы выходите 0x0000 ? А если перенести ...   Feb 24 2013, 13:40
|- - zombi   Цитата(ILYAUL @ Feb 24 2013, 16:40) Это е...   Feb 24 2013, 13:47
|- - _Артём_   Цитата(ILYAUL @ Feb 24 2013, 15:40) Это е...   Feb 24 2013, 14:41
- - ILYAUL   НУ так значит этот режим для Вашей задачи не подхо...   Feb 24 2013, 14:40
|- - maksimp   Нужно переделать прорамму так чтобы сброс был не н...   Feb 24 2013, 16:51
- - zombi   удалил. Точно напутал.   Feb 25 2013, 12:16
- - ILYAUL   Может будет проще разобраться почему происходит эт...   Feb 25 2013, 17:10
- - zombi   Цитата(ILYAUL @ Feb 25 2013, 20:10) Может...   Feb 25 2013, 19:53


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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 04:53
Рейтинг@Mail.ru


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