Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
если бы все знали мат часть, то необходимости в форумах не возникло бы априори. А вообще иногда так зацикливаешься на какой то проблеме, что просто нужен чей то взгляд со стороны, что бы опустить тебя на землю. ))
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Jetetex",url="/forum/viewtopic.php?p=3319029#p3319029"]если бы все знали мат часть, то необходимости в форумах не возникло бы априори. А вообще иногда так зацикливаешься на какой то проблеме, что просто нужен чей то взгляд со стороны, что бы опустить тебя на землю. ))[/uquote]
Категорически не соглашусь! Информация должна быть качественной. В идеале форумы должны быть информативными, а не постоянными повторениями, а подскажите-ка мне то-то. Этому персонажу лень жопу от стула оторвать, один раз книжку прочитать. Ему проще лежа на печи на диване на смартфоне настучать сиюминутный вопрос. Если мучать форум, так более содержательными вопросами...
Категорически не соглашусь! Информация должна быть качественной. В идеале форумы должны быть информативными, а не постоянными повторениями, а подскажите-ка мне то-то. Этому персонажу лень жопу от стула оторвать, один раз книжку прочитать. Ему проще лежа на печи на диване на смартфоне настучать сиюминутный вопрос. Если мучать форум, так более содержательными вопросами...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Почитал книги, порылся в интернете, но так и не нашел однозначного ответа. Нужно в Attiny 13 использовать внешнее прерывание по INT_0(что то вроде бистабильного реле- одно нажатие-вкл, второе-выкл).
Вопрос: нужно ли делать антидребезг при использовании этого прерывания (программный или аппаратный)?
Вопрос: нужно ли делать антидребезг при использовании этого прерывания (программный или аппаратный)?
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
кнопка... там не нужно прерывание, с ним больше возни. Лучше запустить таймер с периодом в 20мс, в его прерывании один раз смотреть кнопку, ловить изменения(сранивая результаты нынешнего и предыдущего скана) и переключать то что вам надо. С прерыванием на кнопку НУЖЕН антидребезг и реализовать его достаточно просто и изящно не получится.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Это почему? А запретить прерывание от INT, запустить таймер, а по истечении времени проверить состояние. Выполнить задачу согласно состояния и разрешить прерывания по INT.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Планируется использование команды Sleep, а значит либо сторожевой, либо внешнее прерывание, что бы не будить контроллер без необходимости.
Но суть понятна - антидребезг нужен.
Но суть понятна - антидребезг нужен.
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Скорее "ожидание подтверждения отпускания"...

-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Даже в этом случае, прерывание по порту с кнопкой пусть только будит контроллер скажем на время не более 100мс, а опрос кнопок - по таймеру. Таймер на время сна просто останавливать. Впрочем, во время глубокого сна с отключением тактирования можно и не останавливать.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
То есть что то вроде:
EXT_INT0:
ldi temp,250
d1:
dec temp
brne d1
reti
при 128 кГц /8 ?
прерывание по спадающему фронту
EXT_INT0:
ldi temp,250
d1:
dec temp
brne d1
reti
при 128 кГц /8 ?
прерывание по спадающему фронту
Последний раз редактировалось Jetetex Пт мар 02, 2018 15:02:30, всего редактировалось 1 раз.
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Кнопка вызвала прерывание, а вот выход из прерывания либо с предварительным его запретом либо после ожидания гарантированно отпушеной кнопки.

-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
нет, сразу же выходишь с прерывания и ВСЁ. В прерывании ничего делать не надо. Его задача - пробудить контроллер, а дальше будут работать обычные механизмы отработки нажатия кнопок и т.д.
После команды SLEEP обнулить таймер, чтобы с нуля пошел считать и если кнопка реально была нажата то через 10-20мс вы об этом узнаете, если кнопка не нажата и ничего не надо больше делать считаете по таймеру 5...10 переполнений и снова в SLEEP.
После команды SLEEP обнулить таймер, чтобы с нуля пошел считать и если кнопка реально была нажата то через 10-20мс вы об этом узнаете, если кнопка не нажата и ничего не надо больше делать считаете по таймеру 5...10 переполнений и снова в SLEEP.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3321116#p3321116"]нет, сразу же выходишь с прерывания и ВСЁ. В прерывании ничего делать не надо. Его задача - пробудить контроллер, а дальше будут работать обычные механизмы отработки нажатия кнопок и т.д.[/uquote]
Если ничего не делать, то прерывание по INT будет постоянно отрабатывать пока не будет отпущена кнопка… такое дрыганье не есть гуд.
Если ничего не делать, то прерывание по INT будет постоянно отрабатывать пока не будет отпущена кнопка… такое дрыганье не есть гуд.
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Уточнение, прерывание, которое настроено на низкий уровень. А не по спаду или фронту.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Как простой выход из ситуации - перед сном прерывание разрешать, а после сна запрещать.
- Starichok51
- Модератор
- Сообщения: 19045
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
тогда с какого хера он проснулся?Alexeyslav писал(а):если кнопка не нажата
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
От помехи, например.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Demiurg",url="/forum/viewtopic.php?p=3322287#p3322287"]Уточнение, прерывание, которое настроено на низкий уровень.[/uquote]
Это и так понятно, так как другие варианты не разбудят МК.
Это и так понятно, так как другие варианты не разбудят МК.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Почему не разбудят? Уточнения же небыло что это сон с отключением тактового генератора.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Потому что в 90% случаях режим сна используется для экономии энергопотребления в мобильных устройствах, а это PowerDown…
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добрый день, у меня похожая ситуация с кнопкой.
Решил испробовать прерывание PCINT у Attiny13A, и написал простенькую программу с кнопкой (с PB3 на общий, и подтяжка 47К сверху) и светодиод с PB0 на общий.
Поскольку, PCINT это прерывание по смене состояния вывода, решил сделать так. Для борьбы с дребезгом, при в ходе в прерывание запрещаются прерывания, и запускается задержка на 50 мс, пока кнопка дребезжит. Далее, проверяется состояние кнопки, и если кнопка нажата (PB3 = 0), происходит выход, и возврат в главный цикл. Когда кнопка отпускается, происходит новое прерывание, но так как кнопка отжата (PB3=1), происходит переход на выполнение команд смены состояния выхода.
Выглядит все красиво, но на практике не работает. Точнее, работает еще хуже, чем если вообще никак не бороться с дребезгом. Однако, если "нажимать кнопку" от источника без дребезга (генератор на другом МК), то все работает идеально, и в связи с этим подозреваю что, либо по каким-то причинам не отрабатывает задержка, либо при нажатии или отпускании кнопки происходит больше чем одно прерывание, которое МК откладывает "на потом". Об этом говорит то, что если сделать большую задержку (1сек), то при нажатии на кнопку, светодиод загорается на секунду и гаснет.
Никак не могу понять что с этим делать, помогите разобраться. Может, просто элементарно ступил где-то.
Решил испробовать прерывание PCINT у Attiny13A, и написал простенькую программу с кнопкой (с PB3 на общий, и подтяжка 47К сверху) и светодиод с PB0 на общий.
Поскольку, PCINT это прерывание по смене состояния вывода, решил сделать так. Для борьбы с дребезгом, при в ходе в прерывание запрещаются прерывания, и запускается задержка на 50 мс, пока кнопка дребезжит. Далее, проверяется состояние кнопки, и если кнопка нажата (PB3 = 0), происходит выход, и возврат в главный цикл. Когда кнопка отпускается, происходит новое прерывание, но так как кнопка отжата (PB3=1), происходит переход на выполнение команд смены состояния выхода.
Выглядит все красиво, но на практике не работает. Точнее, работает еще хуже, чем если вообще никак не бороться с дребезгом. Однако, если "нажимать кнопку" от источника без дребезга (генератор на другом МК), то все работает идеально, и в связи с этим подозреваю что, либо по каким-то причинам не отрабатывает задержка, либо при нажатии или отпускании кнопки происходит больше чем одно прерывание, которое МК откладывает "на потом". Об этом говорит то, что если сделать большую задержку (1сек), то при нажатии на кнопку, светодиод загорается на секунду и гаснет.
Никак не могу понять что с этим делать, помогите разобраться. Может, просто элементарно ступил где-то.
- Вложения
-
- PCINT_check.asm
- (1.55 КБ) 236 скачиваний
Трудное детство, стальные игрушки.