- 
	- оформить счетчик в секцию .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,  ) )
 
- Только я с ним так до конца и не разобрался. 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)
																							
 
- Всё дело в том, что я не умею писать "нормальных программ". А конструктор не может "правильно" развести схему. А в ящике, где стоИт блок, какой-то ненормальный напихал силовых кабелей. Ситуацию украшает периодические проседания питания и 100 км  Юра(14 знак., 01.09.2013 17:16, 
 
 
- Вы всегда ВСЮ периферию инициализуете, даже неиспользуемую в проекте? Так дайте "рыбу" я ее использую!)) А сверхзадача такая: мне нужно добиться некоторой повышенной надежности работы блока. Очень бы помог штатный периодический сброс по 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)