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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

если бы все знали мат часть, то необходимости в форумах не возникло бы априори. А вообще иногда так зацикливаешься на какой то проблеме, что просто нужен чей то взгляд со стороны, что бы опустить тебя на землю. ))
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

[uquote="Jetetex",url="/forum/viewtopic.php?p=3319029#p3319029"]если бы все знали мат часть, то необходимости в форумах не возникло бы априори. А вообще иногда так зацикливаешься на какой то проблеме, что просто нужен чей то взгляд со стороны, что бы опустить тебя на землю. ))[/uquote]
Категорически не соглашусь! Информация должна быть качественной. В идеале форумы должны быть информативными, а не постоянными повторениями, а подскажите-ка мне то-то. Этому персонажу лень жопу от стула оторвать, один раз книжку прочитать. Ему проще лежа на печи на диване на смартфоне настучать сиюминутный вопрос. Если мучать форум, так более содержательными вопросами...
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

Почитал книги, порылся в интернете, но так и не нашел однозначного ответа. Нужно в Attiny 13 использовать внешнее прерывание по INT_0(что то вроде бистабильного реле- одно нажатие-вкл, второе-выкл).

Вопрос: нужно ли делать антидребезг при использовании этого прерывания (программный или аппаратный)?
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

кнопка... там не нужно прерывание, с ним больше возни. Лучше запустить таймер с периодом в 20мс, в его прерывании один раз смотреть кнопку, ловить изменения(сранивая результаты нынешнего и предыдущего скана) и переключать то что вам надо. С прерыванием на кнопку НУЖЕН антидребезг и реализовать его достаточно просто и изящно не получится.
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

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

Сообщение dr.doc »

Это почему? А запретить прерывание от INT, запустить таймер, а по истечении времени проверить состояние. Выполнить задачу согласно состояния и разрешить прерывания по INT.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

Планируется использование команды Sleep, а значит либо сторожевой, либо внешнее прерывание, что бы не будить контроллер без необходимости.
Но суть понятна - антидребезг нужен.
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15551
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Скорее "ожидание подтверждения отпускания"...
:roll:
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Даже в этом случае, прерывание по порту с кнопкой пусть только будит контроллер скажем на время не более 100мс, а опрос кнопок - по таймеру. Таймер на время сна просто останавливать. Впрочем, во время глубокого сна с отключением тактирования можно и не останавливать.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

То есть что то вроде:

EXT_INT0:
ldi temp,250
d1:
dec temp
brne d1

reti

при 128 кГц /8 ?

прерывание по спадающему фронту
Последний раз редактировалось Jetetex Пт мар 02, 2018 15:02:30, всего редактировалось 1 раз.
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15551
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Кнопка вызвала прерывание, а вот выход из прерывания либо с предварительным его запретом либо после ожидания гарантированно отпушеной кнопки.
8)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

нет, сразу же выходишь с прерывания и ВСЁ. В прерывании ничего делать не надо. Его задача - пробудить контроллер, а дальше будут работать обычные механизмы отработки нажатия кнопок и т.д.
После команды SLEEP обнулить таймер, чтобы с нуля пошел считать и если кнопка реально была нажата то через 10-20мс вы об этом узнаете, если кнопка не нажата и ничего не надо больше делать считаете по таймеру 5...10 переполнений и снова в SLEEP.
АСУ
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

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

Сообщение АСУ »

[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3321116#p3321116"]нет, сразу же выходишь с прерывания и ВСЁ. В прерывании ничего делать не надо. Его задача - пробудить контроллер, а дальше будут работать обычные механизмы отработки нажатия кнопок и т.д.[/uquote]
Если ничего не делать, то прерывание по INT будет постоянно отрабатывать пока не будет отпущена кнопка… такое дрыганье не есть гуд.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Уточнение, прерывание, которое настроено на низкий уровень. А не по спаду или фронту.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Как простой выход из ситуации - перед сном прерывание разрешать, а после сна запрещать.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

Alexeyslav писал(а):если кнопка не нажата
тогда с какого хера он проснулся?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

От помехи, например.
АСУ
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

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

Сообщение АСУ »

[uquote="Demiurg",url="/forum/viewtopic.php?p=3322287#p3322287"]Уточнение, прерывание, которое настроено на низкий уровень.[/uquote]
Это и так понятно, так как другие варианты не разбудят МК.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Почему не разбудят? Уточнения же небыло что это сон с отключением тактового генератора.
АСУ
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

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

Сообщение АСУ »

Потому что в 90% случаях режим сна используется для экономии энергопотребления в мобильных устройствах, а это PowerDown…
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

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

Сообщение Голимый »

Добрый день, у меня похожая ситуация с кнопкой.
Решил испробовать прерывание PCINT у Attiny13A, и написал простенькую программу с кнопкой (с PB3 на общий, и подтяжка 47К сверху) и светодиод с PB0 на общий.
Поскольку, PCINT это прерывание по смене состояния вывода, решил сделать так. Для борьбы с дребезгом, при в ходе в прерывание запрещаются прерывания, и запускается задержка на 50 мс, пока кнопка дребезжит. Далее, проверяется состояние кнопки, и если кнопка нажата (PB3 = 0), происходит выход, и возврат в главный цикл. Когда кнопка отпускается, происходит новое прерывание, но так как кнопка отжата (PB3=1), происходит переход на выполнение команд смены состояния выхода.
Выглядит все красиво, но на практике не работает. Точнее, работает еще хуже, чем если вообще никак не бороться с дребезгом. Однако, если "нажимать кнопку" от источника без дребезга (генератор на другом МК), то все работает идеально, и в связи с этим подозреваю что, либо по каким-то причинам не отрабатывает задержка, либо при нажатии или отпускании кнопки происходит больше чем одно прерывание, которое МК откладывает "на потом". Об этом говорит то, что если сделать большую задержку (1сек), то при нажатии на кнопку, светодиод загорается на секунду и гаснет.
Никак не могу понять что с этим делать, помогите разобраться. Может, просто элементарно ступил где-то.
Вложения
PCINT_check.asm
(1.55 КБ) 236 скачиваний
Трудное детство, стальные игрушки.
Ответить

Вернуться в «AVR»