Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 16:22:27

Я не видел людей утверждающих, что ватчдог это спасение (хотя наверное есть такие). Устройство должно полностью работать без него и в тех условиях, для которых он предназначен.

А вот неиспользование сторожевого таймера - это выстрел себе в ногу.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 16:29:17

Что касается RETI как "спасения" от сбоя. Т.е. Вы допускаете, что каким-то случайным образом включится маска прерывания на который нет обработчика.

Давайте посчитаем эту вероятность. Не знаю насколько верным будем мой прикидочный расчет. Пускай у Вас область ОЗУ (в которой и РОН и РВВ и просто ОЗУ) 64 байт или 512 бит и 8 векторов с RETI. Приходит некая помеха, которая переводит эту память в некое неизвестное состояние. Существует некий шанс, что память собъется так, что все останется целое, но будут включены маски неиспользуемых прерываний.
Эта вероятность 2^(-512) /8 =9.3E-156. Если хотите, можете все 156 нулей написать :). Кроме того, существуют прерывания, в которых флаги событий аппаратно не сбрасываются. В нынешнее время, МК с 64 байтами это прошлый век. Да, и есть флаги событий которые аппаратно не сбрасываются. (два раза одно и тоже пишу, %) )
Добавлено after 1 minute 48 seconds:
Demiurg писал(а):А вот неиспользование сторожевого таймера - это выстрел себе в ногу.
Не соглашусь. Все зависит от задачи.

----
UPD: разделить конечно надо было 2^8, чуток поменьше нулей после зпт будет.
Последний раз редактировалось Z_h_e Пт авг 11, 2017 16:59:31, всего редактировалось 2 раз(а).

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 16:39:18

Z_h_e, расскажи какие флаги событий аппаратно не сбрасываются?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 16:41:59

Буфер приема по UART не пуст. У I2C вроде, тут соврать могу.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 16:44:58

А вот неиспользование сторожевого таймера - это выстрел себе в ногу.

Вы сейчас на каком ресурсе? На любительском? Ну так и расскажите о правильном использовании ватчдога. Только боюсь что вы и сами не знаете или начнёте нервно задавать этот вопрос на другом ресурсе чтобы с пафосом ответить здесь. На чём вас уже подлавливали на изиэлектроникс.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 17:02:33

scorpi_0n писал(а):Вы сейчас на каком ресурсе? На любительском? Ну так и расскажите о правильном использовании ватчдога. Только боюсь что вы и сами не знаете или начнёте нервно задавать этот вопрос на другом ресурсе чтобы с пафосом ответить здесь. На чём вас уже подлавливали на изиэлектроникс.

Хе. Вы хоть знаете все обстоятельства того случая? Пришел чувак, офисный работник. Не знаю кем он себя возомнил, докопался до меня. Задал он вопрос. Какие методы я применяю для проверки своих проектов. Да, я спросил на ирк канале. Потому что я не знал названия методик. И то, что мне ответили, именно эти методики я и применяю. И что ВЫ мне хотите сейчас сказать?
Применение ватчдога нужно в критических проектах. К примеру, если устройство стоит в пром оборудовании. Срабатывание ватчдога дает гарантию сброса МК и отключение исполнительных механизмов. Есть такое понятие, как время реакции системы. 16 мс - достаточное время для реакции на сбой.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт авг 11, 2017 18:06:32

Применение ватчдога нужно в критических проектах. К примеру, если устройство стоит в пром оборудовании. Срабатывание ватчдога дает гарантию сброса МК и отключение исполнительных механизмов. Есть такое понятие, как время реакции системы. 16 мс - достаточное время для реакции на сбой.

Если у вас ватчдог будет срабатывать постоянно, то никому такой девайс не нужен. Неправильный сброс ватчдога в ненужном месте принесёт ещё больше неприятностей. Вот я и спрашиваю, все говорят ватчдог, ватчдог... А вы знаете как им правильно пользоваться? Вы уверены что это панацея или просто как все?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 05:50:23

Сторожевой таймер - такой же инструмент, как и любой другой периферийный модуль МК. И не меня или кого-либо еще нужно спрашивать, панацея или нет. И нормальна ли ситуация, если девайс постоянно сбрасывается.
Вы сами ответили на свой вопрос.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 08:29:30

Я сам себе вопрос не задавал, я задал его вам.
А вы знаете как им правильно пользоваться?

Вы можете озвучить критерии и правильность применения ватчдога или нет? Неужели это такой трудный для вас вопрос?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 09:19:31

Повторяю, задавая мне вопрос, вы сами же и ответили. Ватчдог такой же инструмент. Вы может взять микроскоп и забивать им гвозди. Можете ничего не делать с микроскопом. Это ваше право. То же касается и ватчдога. Критерии задает разработчик устройства. Исходя из его предназначения и условий применения.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 09:43:53

Понятно! Ватчдогом вы пользуетесь (?), но смысла всего происходящего объяснить вы не можете. Спасибо!

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 10:02:51

Я подталкиваю вас же к правильным ответам. У вас в руках сторожевой таймер. Вы крутите его и не можете понять, с чем его едят. Начинаем с первого же очевидного. Назначение. Сброс МК, если он зависнет. Таймер можно настроить на разные временные интервалы. Настроив таймер, учитывайте его настройки при применении зацикленных временных задержек в программе. Временные характеристики внешней периферии. Использование или неиспользование сторожевого таймера зависит от назначения и применения устройства. Если вы используете свое устройство в пром оборудовании, то вы обязаны предусмотреть аварийные ситуации. Сторожевой таймер - это один из инструментов для предотвращения этих ситуаций. Поэтому, повторяю, критерии задает разработчик, исходя из условий задачи.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 10:49:10

Я подталкиваю вас же к правильным ответам.

Только этого мне ещё и не хватало! Вам нечего мне сказать больше чем знаю я. Вы рассказывайте так, чтобы это всё другим понятно было, если уж начали про ватчдог.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб авг 12, 2017 11:04:09

[uquote="scorpi_0n"]Вам нечего мне сказать больше чем знаю я.[/quote]
Ух ты, а стоять в вашем присутствии можно?
Вы работали в команде разработчиков Atmel?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт авг 24, 2017 00:12:55

Z_h_e писал(а):Что касается RETI как "спасения" от сбоя. Т.е. Вы допускаете, что каким-то случайным образом включится маска прерывания на который нет обработчика.
Ставить что-то на неиспользуемые прерывания - это защита не от сбоя, а, скорее, от своих собственных ошибок. И ставить туда надо не RETI, а зацикленный на себя RJMP, чтобы потом глянуть в отладчике, где оно застряло. Ну, или какую-нибудь аварийную выдачу - типа зажечь красный светодиод...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс авг 27, 2017 19:27:01

Всем доброго времени суток. Подскажите пожалуйста. в книге Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR (2008) при описании последовательного интерфейса USI на стр 493 приведен пример программы на ассемблере
ldi r16, (1<<USIWMO)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
понятно, что это команда записи константы в регистр r16, а что из из себя в этом выражении представляет константа непонятно
Если кто знает дайте пояснение пожалуйста

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вс авг 27, 2017 20:02:01

Байт с установленными битами USIWMO, USICS1 и т.д.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн авг 28, 2017 06:17:45

Это логические операции, аналогичные Си-шным.
(x<<y) - сдвиг числа х на у бит влево. Полностью аналогичен x = x*2^y. В частности, (1<<y) сдвигает 1 на y битов влево, что дает число, в котором все биты сброшены в ноль, а бит номер y - в 1. Например, (1<<3) => 0b00001000
x | y - побитовое ИЛИ. Если хотя бы у одного из аргументов в соответствующем бите 1, то и в бите результата будет 1. Например, 0b01111000 | 0b00011110 => 0b01111110
В данном случае эти логические операции проводятся препроцессором, то есть перед компиляцией, и контроллер использует просчитанную заранее константу, так что накладных расходов не возникает. Зато такой код гораздо легче читать человеку, чем двоичную, а тем более десятичную запись.
Рекомендую потренироваться и перевести пару таких конструкций в двоичное представление.
(спасибо WiseLord, поправил)
Последний раз редактировалось COKPOWEHEU Пн авг 28, 2017 16:48:23, всего редактировалось 1 раз.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн авг 28, 2017 06:58:44

COKPOWEHEU писал(а):Например, 0b01111000 | 0b00011111 => 0b01111000
Не самый удачный и неправильный пример. Подозреваю, копипаст не сработал.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн авг 28, 2017 16:49:17

Верно, спасибо. Это был пример на побитовое И. Исправил на ИЛИ.
Ответить