Ассемблер (ASM) для AVR в вопросах и ответах
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3160332#p3160332"]Я не видел людей утверждающих, что ватчдог это спасение (хотя наверное есть такие). Устройство должно полностью работать без него и в тех условиях, для которых он предназначен.[/uquote]
А вот неиспользование сторожевого таймера - это выстрел себе в ногу.
А вот неиспользование сторожевого таймера - это выстрел себе в ногу.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Что касается RETI как "спасения" от сбоя. Т.е. Вы допускаете, что каким-то случайным образом включится маска прерывания на который нет обработчика.
Давайте посчитаем эту вероятность. Не знаю насколько верным будем мой прикидочный расчет. Пускай у Вас область ОЗУ (в которой и РОН и РВВ и просто ОЗУ) 64 байт или 512 бит и 8 векторов с RETI. Приходит некая помеха, которая переводит эту память в некое неизвестное состояние. Существует некий шанс, что память собъется так, что все останется целое, но будут включены маски неиспользуемых прерываний.
Эта вероятность 2^(-512) /8 =9.3E-156. Если хотите, можете все 156 нулей написать
. Кроме того, существуют прерывания, в которых флаги событий аппаратно не сбрасываются. В нынешнее время, МК с 64 байтами это прошлый век. Да, и есть флаги событий которые аппаратно не сбрасываются. (два раза одно и тоже пишу, %) )
Добавлено after 1 minute 48 seconds:
----
UPD: разделить конечно надо было 2^8, чуток поменьше нулей после зпт будет.
Давайте посчитаем эту вероятность. Не знаю насколько верным будем мой прикидочный расчет. Пускай у Вас область ОЗУ (в которой и РОН и РВВ и просто ОЗУ) 64 байт или 512 бит и 8 векторов с RETI. Приходит некая помеха, которая переводит эту память в некое неизвестное состояние. Существует некий шанс, что память собъется так, что все останется целое, но будут включены маски неиспользуемых прерываний.
Эта вероятность 2^(-512) /8 =9.3E-156. Если хотите, можете все 156 нулей написать
Добавлено after 1 minute 48 seconds:
Не соглашусь. Все зависит от задачи.Demiurg писал(а):А вот неиспользование сторожевого таймера - это выстрел себе в ногу.
----
UPD: разделить конечно надо было 2^8, чуток поменьше нулей после зпт будет.
Последний раз редактировалось Z_h_e Пт авг 11, 2017 16:59:31, всего редактировалось 2 раза.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Z_h_e, расскажи какие флаги событий аппаратно не сбрасываются?
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Буфер приема по UART не пуст. У I2C вроде, тут соврать могу.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Demiurg",url="/forum/viewtopic.php?p=3160346#p3160346"]А вот неиспользование сторожевого таймера - это выстрел себе в ногу.[/uquote]
Вы сейчас на каком ресурсе? На любительском? Ну так и расскажите о правильном использовании ватчдога. Только боюсь что вы и сами не знаете или начнёте нервно задавать этот вопрос на другом ресурсе чтобы с пафосом ответить здесь. На чём вас уже подлавливали на изиэлектроникс.
Вы сейчас на каком ресурсе? На любительском? Ну так и расскажите о правильном использовании ватчдога. Только боюсь что вы и сами не знаете или начнёте нервно задавать этот вопрос на другом ресурсе чтобы с пафосом ответить здесь. На чём вас уже подлавливали на изиэлектроникс.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Хе. Вы хоть знаете все обстоятельства того случая? Пришел чувак, офисный работник. Не знаю кем он себя возомнил, докопался до меня. Задал он вопрос. Какие методы я применяю для проверки своих проектов. Да, я спросил на ирк канале. Потому что я не знал названия методик. И то, что мне ответили, именно эти методики я и применяю. И что ВЫ мне хотите сейчас сказать?scorpi_0n писал(а):Вы сейчас на каком ресурсе? На любительском? Ну так и расскажите о правильном использовании ватчдога. Только боюсь что вы и сами не знаете или начнёте нервно задавать этот вопрос на другом ресурсе чтобы с пафосом ответить здесь. На чём вас уже подлавливали на изиэлектроникс.
Применение ватчдога нужно в критических проектах. К примеру, если устройство стоит в пром оборудовании. Срабатывание ватчдога дает гарантию сброса МК и отключение исполнительных механизмов. Есть такое понятие, как время реакции системы. 16 мс - достаточное время для реакции на сбой.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Demiurg",url="/forum/viewtopic.php?p=3160379#p3160379"]Применение ватчдога нужно в критических проектах. К примеру, если устройство стоит в пром оборудовании. Срабатывание ватчдога дает гарантию сброса МК и отключение исполнительных механизмов. Есть такое понятие, как время реакции системы. 16 мс - достаточное время для реакции на сбой.[/uquote]
Если у вас ватчдог будет срабатывать постоянно, то никому такой девайс не нужен. Неправильный сброс ватчдога в ненужном месте принесёт ещё больше неприятностей. Вот я и спрашиваю, все говорят ватчдог, ватчдог... А вы знаете как им правильно пользоваться? Вы уверены что это панацея или просто как все?
Если у вас ватчдог будет срабатывать постоянно, то никому такой девайс не нужен. Неправильный сброс ватчдога в ненужном месте принесёт ещё больше неприятностей. Вот я и спрашиваю, все говорят ватчдог, ватчдог... А вы знаете как им правильно пользоваться? Вы уверены что это панацея или просто как все?
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Сторожевой таймер - такой же инструмент, как и любой другой периферийный модуль МК. И не меня или кого-либо еще нужно спрашивать, панацея или нет. И нормальна ли ситуация, если девайс постоянно сбрасывается.
Вы сами ответили на свой вопрос.
Вы сами ответили на свой вопрос.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я сам себе вопрос не задавал, я задал его вам.
Вы можете озвучить критерии и правильность применения ватчдога или нет? Неужели это такой трудный для вас вопрос?А вы знаете как им правильно пользоваться?
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Повторяю, задавая мне вопрос, вы сами же и ответили. Ватчдог такой же инструмент. Вы может взять микроскоп и забивать им гвозди. Можете ничего не делать с микроскопом. Это ваше право. То же касается и ватчдога. Критерии задает разработчик устройства. Исходя из его предназначения и условий применения.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Понятно! Ватчдогом вы пользуетесь (?), но смысла всего происходящего объяснить вы не можете. Спасибо!
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я подталкиваю вас же к правильным ответам. У вас в руках сторожевой таймер. Вы крутите его и не можете понять, с чем его едят. Начинаем с первого же очевидного. Назначение. Сброс МК, если он зависнет. Таймер можно настроить на разные временные интервалы. Настроив таймер, учитывайте его настройки при применении зацикленных временных задержек в программе. Временные характеристики внешней периферии. Использование или неиспользование сторожевого таймера зависит от назначения и применения устройства. Если вы используете свое устройство в пром оборудовании, то вы обязаны предусмотреть аварийные ситуации. Сторожевой таймер - это один из инструментов для предотвращения этих ситуаций. Поэтому, повторяю, критерии задает разработчик, исходя из условий задачи.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Только этого мне ещё и не хватало! Вам нечего мне сказать больше чем знаю я. Вы рассказывайте так, чтобы это всё другим понятно было, если уж начали про ватчдог.Я подталкиваю вас же к правильным ответам.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="scorpi_0n"]Вам нечего мне сказать больше чем знаю я.[/quote]
Ух ты, а стоять в вашем присутствии можно?
Вы работали в команде разработчиков Atmel?
Ух ты, а стоять в вашем присутствии можно?
Вы работали в команде разработчиков Atmel?
- afz
- Опытный кот
- Сообщения: 744
- Зарегистрирован: Сб дек 22, 2012 08:17:42
- Откуда: Караганда, Казахстан
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ставить что-то на неиспользуемые прерывания - это защита не от сбоя, а, скорее, от своих собственных ошибок. И ставить туда надо не RETI, а зацикленный на себя RJMP, чтобы потом глянуть в отладчике, где оно застряло. Ну, или какую-нибудь аварийную выдачу - типа зажечь красный светодиод...Z_h_e писал(а):Что касается RETI как "спасения" от сбоя. Т.е. Вы допускаете, что каким-то случайным образом включится маска прерывания на который нет обработчика.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
-
sibiryak69
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс июн 19, 2016 06:31:18
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Всем доброго времени суток. Подскажите пожалуйста. в книге Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR (2008) при описании последовательного интерфейса USI на стр 493 приведен пример программы на ассемблере
ldi r16, (1<<USIWMO)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
понятно, что это команда записи константы в регистр r16, а что из из себя в этом выражении представляет константа непонятно
Если кто знает дайте пояснение пожалуйста
ldi r16, (1<<USIWMO)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
понятно, что это команда записи константы в регистр r16, а что из из себя в этом выражении представляет константа непонятно
Если кто знает дайте пояснение пожалуйста
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Байт с установленными битами USIWMO, USICS1 и т.д.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Это логические операции, аналогичные Си-шным.
(x<<y) - сдвиг числа х на у бит влево. Полностью аналогичен x = x*2^y. В частности, (1<<y) сдвигает 1 на y битов влево, что дает число, в котором все биты сброшены в ноль, а бит номер y - в 1. Например, (1<<3) => 0b00001000
x | y - побитовое ИЛИ. Если хотя бы у одного из аргументов в соответствующем бите 1, то и в бите результата будет 1. Например, 0b01111000 | 0b00011110 => 0b01111110
В данном случае эти логические операции проводятся препроцессором, то есть перед компиляцией, и контроллер использует просчитанную заранее константу, так что накладных расходов не возникает. Зато такой код гораздо легче читать человеку, чем двоичную, а тем более десятичную запись.
Рекомендую потренироваться и перевести пару таких конструкций в двоичное представление.
(спасибо WiseLord, поправил)
(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 раз.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Не самый удачный и неправильный пример. Подозреваю, копипаст не сработал.COKPOWEHEU писал(а):Например, 0b01111000 | 0b00011111 => 0b01111000
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Верно, спасибо. Это был пример на побитовое И. Исправил на ИЛИ.
