-
- оформить счетчик в секцию .noinit ? - zeleny(01.09.2013 20:45)
- Ну разумеется, счетчик секунд no_init volatile unsigned long. Чтобы стартап его не трогал после очередного JUMP 0. Так же как и буфера для связи. Ведь связь-то не должна страдать из-за того, что какой-то чучел пишет такие программы)) - Юра(01.09.2013 21:04, )
- А вы уверены, что это startup значения в регистрах затирает, а не они сами аппаратно обнуляются при ресете? - Ксения(01.09.2013 21:06)
- не затирает. Делал программные часы - все норм, только нужно ловить начало пропадания основного питания и быстро улетать в power save. Ессно если делать много рестартов то накапливается ошибка. - zeleny(01.09.2013 22:28)
- Ну, регистры RTC стартап точно не трогает. RTC даже не заметит что программа сделала jump 0. А счетчик секунд - это переменная в SRAM, инкрементируемая при каждом прерывании RTC. Она защищается чтобы очередной стартап после jump 0 ее не затер. Юра(284 знак., 01.09.2013 21:26, )
- Тогда куда же число девается? :) Аппаратный ресет разрушает SRAM? - Ксения(01.09.2013 21:29)
- Не "число", а предделитель таймера и настройки часового кварца. Читаю этот топик и прусь. Автор даже точность часов не обозначил - одни глубокие мысли ;) Зарядить WDT с минимальным временем в прерывании таймера, взвести битик асинхронного таймера Гyдвин(272 знак., 01.09.2013 21:57)
- Это, конечно, хорошо. Только Вы, наверно, думаете что счетный регистр RTC сохранит своё значение после сброса по WD? Я так не думаю. Он обнулится, и появится первая погрешность. Плюс у меня внешний кварц, и время нарастания питания хрен ее знает, Юра(202 знак., 01.09.2013 23:28, )
- Нихт шиссен! Все. Сдаюсь... - Гyдвин(01.09.2013 23:35)
- Это, конечно, хорошо. Только Вы, наверно, думаете что счетный регистр RTC сохранит своё значение после сброса по WD? Я так не думаю. Он обнулится, и появится первая погрешность. Плюс у меня внешний кварц, и время нарастания питания хрен ее знает, Юра(202 знак., 01.09.2013 23:28, )
- Счетчик секунд имеете в виду? Никуда не девается. Лежит как миленький в no_init SRAM. Инициализуется начальным значением при POR, а все остальные источники аппаратных или программных сбросов ему по боку. Инкрементируется каждый раз в обработчике Юра(225 знак., 01.09.2013 21:41, )
- А вы тогда запускайте RTC при старте. Если произойдет сброс, то МК рестартует и снова запустит RTC. Но если вы аппаратный сброс делаете периодически, да еще и с периодом в несколько секунд, то вы сами себе злобный Буратино, и Атмел в том не Ксения(12 знак., 01.09.2013 22:13)
- Если это укладывается в алгоритм работы, то почему бы и нет? Я в прошлом году делал автомобильный датчик, работающий в таком режиме - 7 сек. Там длинный провод, который должен идти по внешней стороне кузова (и не только). Тем более, что в MSP430G2 Гyдвин(32 знак., 01.09.2013 22:23)
- Так мне и странно, что это за алгоритм такой, чтобы МК надо было каждые 7 секунд ресетить? Разве нельзя зациклить алгоритм так, чтобы он ходил по кругу, не требуя ресета? - Ксения(01.09.2013 22:28)
- Это известный способ повышения надежности. Например, нажатие любой кнопки вызывает сброс. - Vladimir Ljaschko(01.09.2013 22:34)
- А зачем, если со сбросом надежнее? - Гyдвин(01.09.2013 22:32)
- Так мне и странно, что это за алгоритм такой, чтобы МК надо было каждые 7 секунд ресетить? Разве нельзя зациклить алгоритм так, чтобы он ходил по кругу, не требуя ресета? - Ксения(01.09.2013 22:28)
- Если это укладывается в алгоритм работы, то почему бы и нет? Я в прошлом году делал автомобильный датчик, работающий в таком режиме - 7 сек. Там длинный провод, который должен идти по внешней стороне кузова (и не только). Тем более, что в MSP430G2 Гyдвин(32 знак., 01.09.2013 22:23)
- А вы тогда запускайте RTC при старте. Если произойдет сброс, то МК рестартует и снова запустит RTC. Но если вы аппаратный сброс делаете периодически, да еще и с периодом в несколько секунд, то вы сами себе злобный Буратино, и Атмел в том не Ксения(12 знак., 01.09.2013 22:13)
- Не "число", а предделитель таймера и настройки часового кварца. Читаю этот топик и прусь. Автор даже точность часов не обозначил - одни глубокие мысли ;) Зарядить WDT с минимальным временем в прерывании таймера, взвести битик асинхронного таймера Гyдвин(272 знак., 01.09.2013 21:57)
- Тогда куда же число девается? :) Аппаратный ресет разрушает SRAM? - Ксения(01.09.2013 21:29)
- А вы уверены, что это startup значения в регистрах затирает, а не они сами аппаратно обнуляются при ресете? - Ксения(01.09.2013 21:06)
- Ну разумеется, счетчик секунд no_init volatile unsigned long. Чтобы стартап его не трогал после очередного JUMP 0. Так же как и буфера для связи. Ведь связь-то не должна страдать из-за того, что какой-то чучел пишет такие программы)) - Юра(01.09.2013 21:04, )
- А не проще тогда к авр внешний RTC прилепить? - Mazur(01.09.2013 19:40)
- Стремно. Внешний RTC, потом внешний WDT, потом под зад коленом меня во внешний мир(( Легче 60 регистров прописать. - Юра(01.09.2013 19:48, )
- Может я чего-то не знаю, не понимаю, но зачем внешний wdt? С внутренним wdt какие-то проблемы бывают? - Mazur(01.09.2013 19:59)
- Не в АВРе, здесь все чисто. - Vladimir Ljaschko(01.09.2013 20:01)
- Только я с ним так до конца и не разобрался. caxapa.ru/433728.html - Юра(01.09.2013 20:11, )
- Не в АВРе, здесь все чисто. - Vladimir Ljaschko(01.09.2013 20:01)
- Может я чего-то не знаю, не понимаю, но зачем внешний wdt? С внутренним wdt какие-то проблемы бывают? - Mazur(01.09.2013 19:59)
- Стремно. Внешний RTC, потом внешний WDT, потом под зад коленом меня во внешний мир(( Легче 60 регистров прописать. - Юра(01.09.2013 19:48, )
- А внешний таймер - сильно влом поставить. У Maxim/Dallas они есть. С последовательным интерфейсом в том числе. 8 DIP/SOIC не сильно много места займет. - tesla(01.09.2013 19:29)
- Да можно, наверно. Только, боюсь, после таких непоправимых улучшений это будет мой последний договор в фирме(( - Юра(01.09.2013 19:45, )
- Значит, такая фирма. Под всех раком не встанешь. Оне ж диктуют свои условия, ну, так... tesla(162 знак., 01.09.2013 20:44 - 20:46)
- Да можно, наверно. Только, боюсь, после таких непоправимых улучшений это будет мой последний договор в фирме(( - Юра(01.09.2013 19:45, )
- Аппаратный сброс - reset или wdt? Если reset, то все. А если wdt, то есть кристаллы, где сработку на wdt не сброс, а прерывание можно сделать. - mazur(01.09.2013 16:23)
- А какая особо разница? Все равно и по прерыванию от WD тоже надо FULL-INIT делать. Ведь мог же и из зависона прерваться по WD, так что - опять что ли в зависон возвращаться? Поэтому прерывание по RTC тоже мало чем отличается от прерывания по WD. - Юра(01.09.2013 16:43, )
- Зачем в зависон возвращаться. Нехитрые манипуляции со стеком и все. Можно любую точку указать. - mazur(01.09.2013 16:51)
- И что? Просто так возвратиться из зависания? Без полной переинициализации ВСЕЙ периферии? Ну, Вы герой! - Юра(01.09.2013 17:02, )
- В Си нулем инициализируются глобальные переменные, периферия тут ни при чем. - tesla(01.09.2013 19:42)
- Глобальные переменные ерунда, их пусть стартап прописывает. Мне важно именно регистры периферии. Причем все поголовно пробежать. А то в зависании испортится вроде какой-нибудь совершенно левый сбоку-припеку SFIOR - я его знать не знаю, а у портов Юра(19 знак., 01.09.2013 19:56, )
- Так, это от тебя зависит, какую периферию инициализировать, какую - нет. Си периферию не инициализирует, она в отдельном сегменте располагается. А вообще, я уже написАл : доводите до ума железо. Если с железом беда, программными заплатками не tesla(122 знак., 01.09.2013 20:13)
- Просто - всю. Только почему Вы думаете что рестарт это обязательно шухер и авария? Бывает рестарт - штатный этап суперпетли программы. В том числе и рестарт по WD. Ну, в моем случае напрямую от вачдога сброситься не удастся. Но пройтись по 60 Юра(70 знак., 01.09.2013 20:23, )
- Даже не знаю, что сказать. Мне 45 лет, из них чисто разработкой устройств на МК отдал лет 20. Уже сказал, повторюсь еще раз : доводите до ума железо. Экранируйте, развязывайте гальванически. Бля, я не знаю вашу ситуацию, но, точно скажу: tesla(166 знак., 01.09.2013 20:41)
- Просто - всю. Только почему Вы думаете что рестарт это обязательно шухер и авария? Бывает рестарт - штатный этап суперпетли программы. В том числе и рестарт по WD. Ну, в моем случае напрямую от вачдога сброситься не удастся. Но пройтись по 60 Юра(70 знак., 01.09.2013 20:23, )
- Так, это от тебя зависит, какую периферию инициализировать, какую - нет. Си периферию не инициализирует, она в отдельном сегменте располагается. А вообще, я уже написАл : доводите до ума железо. Если с железом беда, программными заплатками не tesla(122 знак., 01.09.2013 20:13)
- Глобальные переменные ерунда, их пусть стартап прописывает. Мне важно именно регистры периферии. Причем все поголовно пробежать. А то в зависании испортится вроде какой-нибудь совершенно левый сбоку-припеку SFIOR - я его знать не знаю, а у портов Юра(19 знак., 01.09.2013 19:56, )
- В Си нулем инициализируются глобальные переменные, периферия тут ни при чем. - tesla(01.09.2013 19:42)
- И что? Просто так возвратиться из зависания? Без полной переинициализации ВСЕЙ периферии? Ну, Вы герой! - Юра(01.09.2013 17:02, )
- Зачем в зависон возвращаться. Нехитрые манипуляции со стеком и все. Можно любую точку указать. - mazur(01.09.2013 16:51)
- А какая особо разница? Все равно и по прерыванию от WD тоже надо FULL-INIT делать. Ведь мог же и из зависона прерваться по WD, так что - опять что ли в зависон возвращаться? Поэтому прерывание по RTC тоже мало чем отличается от прерывания по WD. - Юра(01.09.2013 16:43, )
- Мелких вроде нет, в каких-то XMega есть - MBedder(01.09.2013 12:28)
- Это хорошо, спасибо. Уже по скайпу начал убеждать руководство менять ориентацию с Атмела на ARM)) - Юра(01.09.2013 13:18, )
- У Atmel и АРМы есть. - tesla(01.09.2013 15:18)
- Ну, я не силен в номенклатуре Атмела. Про ARM - имел в виду STM32 - Юра(01.09.2013 15:43, )
- :-) "Мы говорим ARM - подразумеваем STM32!" Я бы на месте ARM обиделся :-))) - SciFi(01.09.2013 16:26)
- Я битый год STMы изучал, уже вкус ощутил) А щас чувствую что все забуду к чьей-то матери, изучая AVR. - Юра(01.09.2013 16:33, )
- А ты не забывай. Кстати, оно для мозгов полезно, програмить на разных архитектурах. Главное, решить задачу с минимальными издержками, а не сидеть на работе до 12 ночи, изучая STM. Лучше за это время подхалтурить. - tesla(01.09.2013 19:15)
- AVR хороши тем, что многого знать не надо. XMega чуть сложнее, но после прочих AVR адаптация не трудна. А STM32 - такие дебри, которые приучают новичка бездумно копипастить куски чужого кода, не вникая в то, как тот работает. - Ксения(01.09.2013 18:30)
- А не надо копипастить бездумно. К тому же жизнь заставляет. Я вот сам перешел с AVR на STM32 и LPC. LPC вроде как роднее, програмишь без всяких библиотек и еще мне лично нравится, что у LPC на последовательных портах FIFO, а не онли DMA, как у tesla(606 знак., 01.09.2013 19:06)
- Дебри - это IMX6DQRM.pdf 3m(53 знак., 01.09.2013 18:54)
- Дык, фрискейловцы завсегда этим делом отличались. Помню, лет 10 назад поколупался я с каким-то 683ххх. tesla(242 знак., 01.09.2013 19:26)
- Я битый год STMы изучал, уже вкус ощутил) А щас чувствую что все забуду к чьей-то матери, изучая AVR. - Юра(01.09.2013 16:33, )
- :-) "Мы говорим ARM - подразумеваем STM32!" Я бы на месте ARM обиделся :-))) - SciFi(01.09.2013 16:26)
- Ну, я не силен в номенклатуре Атмела. Про ARM - имел в виду STM32 - Юра(01.09.2013 15:43, )
- профессианальных МК пик24 есть часы - хи-хи(01.09.2013 14:45, )
- Не владею, да и не поможет, думаю. Переориентировать даже на применение STM32 пока тоже не удается(( Блин. Потому что в фирме работает сын одного из боссов, и владеет только Атмелом. Он должен быть в курсе кода, написанного договорниками. Чтобы, Юра(273 знак., 01.09.2013 15:40, )
- Крутые боссы, однако. Даже сын - и тот владелец Атмела! - ut1wpr(01.09.2013 17:45)
- "только Атмелом" - не так уж и круто :)) - MBedder(01.09.2013 18:23)
- Подобное, это какое? Apтём(231 знак., 01.09.2013 15:57)
- Программная эмуляция рестарта программы путем задания значений (кому - default, кому - сразу нужные) всем регистрам периферии. ОЗУ конечно ни при чем. - Юра(01.09.2013 16:02, )
- Хм. А цель этих действий? Периферия и так должна инициализироваться, чтоб всё заработало. - Apтём(01.09.2013 16:07)
- Вы всегда ВСЮ периферию инициализуете, даже неиспользуемую в проекте? Так дайте "рыбу" я ее использую!)) А сверхзадача такая: мне нужно добиться некоторой повышенной надежности работы блока. Очень бы помог штатный периодический сброс по WD, но он Юра(342 знак., 01.09.2013 16:23, )
- Бред какой-то. В первую очередь железо нужно довести до ума. Я вотч дог включаю на самом последнем этапе разработки, когда уже все отлажено, смазано, и крутится сутками без проблем. Собака должна срабатывать по залету какой нибудь частицы из tesla(91 знак., 01.09.2013 19:53)
- Всю периферию не инициализирую - не нужно это. Apтём(463 знак., 01.09.2013 17:03)
- Всё дело в том, что я не умею писать "нормальных программ". А конструктор не может "правильно" развести схему. А в ящике, где стоИт блок, какой-то ненормальный напихал силовых кабелей. Ситуацию украшает периодические проседания питания и 100 км Юра(14 знак., 01.09.2013 17:16, )
- Подобное практикуем в высоконадежных необслуживаемых системах. Периодически проводится инициализация всей периферии. На этот счет и ремомендации есть в книжках по EMC. - Alex68(01.09.2013 17:13)
- Подумаешь... Мое устройство продолжает работу после воздействия помехи и без переинициализации :) Проблема обычно не в периферии, а сбое счетчика команд из-за неправильного декодирования кода команды. - Vladimir Ljaschko(01.09.2013 18:25)
- Это Вы очень правильно сказали! Проблема в счетчике команд. Но приводит это почему-то - к сбоям именно периферии))) Пример из жизни. Однажды у меня болело ухо. Что-то там внутри вскочило распухло. А в результате пострадала от уколов - как Вы Юра(13 знак., 01.09.2013 18:36, )
- После антител, выработанных на Туемосеца, обсуждение темы надежности функционирования микроконтроллерных систем и должно выходить к обсуждению (.) ;) - Vladimir Ljaschko(01.09.2013 18:44)
- Причем эта часть тела у меня считалась образцово-здоровой! - Юра(01.09.2013 18:39, )
- Это Вы очень правильно сказали! Проблема в счетчике команд. Но приводит это почему-то - к сбоям именно периферии))) Пример из жизни. Однажды у меня болело ухо. Что-то там внутри вскочило распухло. А в результате пострадала от уколов - как Вы Юра(13 знак., 01.09.2013 18:36, )
- А с каким периодом проводится переинициализация? Apтём(22 знак., 01.09.2013 17:30)
- Точных рекомендаций, в цифрах, там нет. - Alex68(01.09.2013 18:41)
- А главный вопрос, как узнать, в какой момент можно делать переинициализацию? Вдруг идет обмен данными и бац, переинициализация. Ну или еще какие моменты. - mazur(01.09.2013 17:39)
- В перерывах между делом, так сказать. Все крутится в очень четком цикле. И внешний WD тоже есть. - Alex68(01.09.2013 18:40)
- Тоже верно. Или период переинициализации большой задать - устройство повисло например после переинициализации и так и висит чёрт знает сколько (до наступления следующей перенастройки). - Apтём(01.09.2013 17:45)
- Подумаешь... Мое устройство продолжает работу после воздействия помехи и без переинициализации :) Проблема обычно не в периферии, а сбое счетчика команд из-за неправильного декодирования кода команды. - Vladimir Ljaschko(01.09.2013 18:25)
- Вы всегда ВСЮ периферию инициализуете, даже неиспользуемую в проекте? Так дайте "рыбу" я ее использую!)) А сверхзадача такая: мне нужно добиться некоторой повышенной надежности работы блока. Очень бы помог штатный периодический сброс по WD, но он Юра(342 знак., 01.09.2013 16:23, )
- Хм. А цель этих действий? Периферия и так должна инициализироваться, чтоб всё заработало. - Apтём(01.09.2013 16:07)
- Программная эмуляция рестарта программы путем задания значений (кому - default, кому - сразу нужные) всем регистрам периферии. ОЗУ конечно ни при чем. - Юра(01.09.2013 16:02, )
- Крутые боссы, однако. Даже сын - и тот владелец Атмела! - ut1wpr(01.09.2013 17:45)
- Не владею, да и не поможет, думаю. Переориентировать даже на применение STM32 пока тоже не удается(( Блин. Потому что в фирме работает сын одного из боссов, и владеет только Атмелом. Он должен быть в курсе кода, написанного договорниками. Чтобы, Юра(273 знак., 01.09.2013 15:40, )
- У Atmel и АРМы есть. - tesla(01.09.2013 15:18)
- Это хорошо, спасибо. Уже по скайпу начал убеждать руководство менять ориентацию с Атмела на ARM)) - Юра(01.09.2013 13:18, )
- оформить счетчик в секцию .noinit ? - zeleny(01.09.2013 20:45)