Прерывания от кнопки.

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Jeka-starik
Открыл глаза
Сообщения: 48
Зарегистрирован: Чт апр 07, 2011 11:57:18
Откуда: Санкт-Петербург

Прерывания от кнопки.

Сообщение Jeka-starik »

Продолжаю осваивать ассемблер. Хочу сделать так чтоб данные из ОЗУ МК при нажатии кнопки через USART (Atmega 8) кидались на компьютер (программа соответствующая есть - через com порт). Так вот итересует Как прерывание от кнопки инициализировать. Просто полазил по просторвм инета - с кнопками не нашёл ничего. Может у кого какие программы с кнопками имеются в качестве примеров.
Я так понял - кнопку надо посадить с одной стороны на землю, а с другой на вывод МК и запрограммировать этот вывод на вход. Там резюк подтягивающий организовать. И в общем при нажатии кнопки напряжение до 0 падает с 5 вольт. А вот как программно описать это прерывание что-то понять не могу - туплю. И вообще к какому виду это прерывание отнести в векторах... к внешнему?
Помогите если не сложно...
[color=#FF0000]Хачу фсё знать!!![/color]
Реклама
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Re: Прерывания от кнопки.

Сообщение sergeys »

Погодите, чего то не очень понятно.

Если просто про то как надо использовать кнопку, то вот:
чтобы избавиться от дребезга (любое нажатие кнопки человеком МК воспримет как пачку импульсов) лучше реагировать на отпускание кнопки, то есть на появление низкого уровня на ноге. Те. алгоритм таков: отслеживаем состояние кнопки, если было нажатие (не было по новой) то устраиваем задержку и отслеживаем отпускание, есть отпускание что-то делаем.
Ко мне можно на "ты", так даже лучше!
Реклама
Jeka-starik
Открыл глаза
Сообщения: 48
Зарегистрирован: Чт апр 07, 2011 11:57:18
Откуда: Санкт-Петербург

Re: Прерывания от кнопки.

Сообщение Jeka-starik »

Ладно - про дребезг понял - а вот как с самой программой по кнопке. Есть мысль - не знаю наскока она верна - сделать так: инициализировать таймер какой-нить, и чтоб он там каждый цикл состояние вывода на кнопку опрашивал и по получению нужного (зажатия кнопки) отправлял программу уже обрабатывать это событие (с учётом дребезга) и, в конечном итоге передача данных. Вот - на словах красиво и легко... А это реально осуществить можно??? Или лучше как-то по-другому.
Ещё раз прошу - если у кого-нить есть примеры прог с кнопками поделитесь (если не оч секретно :))) ) Проста не нашёл нигде... (- нашёл тока на си - с учётом дребезга - но в си я совсем не разбираюсь) Вот и приходится импровизацией заниматься...
[color=#FF0000]Хачу фсё знать!!![/color]
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Re: Прерывания от кнопки.

Сообщение sergeys »

Код: Выделить всё

pink: ;отслеживание кнопки, действ. по отпусканию
sbic PinX, (нужный бит); если нажата пропуск след. команды
rjmp pink;иначе обратно
;нажата пауза хватит 0.2 сек любым способом
pink0:;ловим отпускание
sbis PinX, (нужный бит);пропустить если отпущена
rjmp pink ;если нажата обратно
;делаем че надо
;пауза 0,5
rjmp pink


Вот в моей книжке такое есть, разбирайтесь, подождите умных котов, может я тут бред накатал какой
Ко мне можно на "ты", так даже лучше!
Реклама
Эиком - электронные компоненты и радиодетали
Jeka-starik
Открыл глаза
Сообщения: 48
Зарегистрирован: Чт апр 07, 2011 11:57:18
Откуда: Санкт-Петербург

Re: Прерывания от кнопки.

Сообщение Jeka-starik »

Ага - спасибо. Всё в общем понятно - тока я забыл дописать (извини уж) - это мне надо чтобы в ходе выполнения моей программы (она как раз записывает данные в ОЗУ) в любой момент можно было нажать и отобразить данные. По моему там должно быть что-то посложнее. Хотя вот этот твой кусок можно наверно как раз вставить в прерывание таймера.
[color=#FF0000]Хачу фсё знать!!![/color]
Реклама
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Re: Прерывания от кнопки.

Сообщение sergeys »

Jeka-starik писал(а):Ага - спасибо. Всё в общем понятно - тока я забыл дописать (извини уж) - это мне надо чтобы в ходе выполнения моей программы (она как раз записывает данные в ОЗУ) в любой момент можно было нажать и отобразить данные. По моему там должно быть что-то посложнее. Хотя вот этот твой кусок можно наверно как раз вставить в прерывание таймера.


Погодите. А в основном цикле нельзя отслеживать состояние кнопки? И как только то писать в ОЗУ?

А, понял. Ваша прога пишет в ОЗУ, а вам надо в любой момент это прервать? (НЕ культорно вроде как-то), ну тогда инициализируете прерывание например INTO или как там тчно-то, и в любой момент он переходить к обработчику.
Ко мне можно на "ты", так даже лучше!
Реклама
Jeka-starik
Открыл глаза
Сообщения: 48
Зарегистрирован: Чт апр 07, 2011 11:57:18
Откуда: Санкт-Петербург

Re: Прерывания от кнопки.

Сообщение Jeka-starik »

А, понял. Ваша прога пишет в ОЗУ, а вам надо в любой момент это прервать?

в общем - да. Если заметил - у меня тут в этом же разделе ранее тема была - про TWI. Ну вот это как раз та программа. Мега читает с датчика данные и пишет в ОЗУ (в моём случае значения ёмкости аккумулятора). Параллельно с этим текущее значение ёмкости отображается на индикаторе и мы - видя что батарея разряжена (почти) - жмём кнопку и всё отрубается. Это в проекте.
Пока же нужно проследить зависимость ёмкости от времени работы - и поэтому данные и ОЗУ надо выдать на комп (но не сразу - а опять же с кнопки). Вот как-то так.
ну тогда инициализируете прерывание например INTO или как там тчно-то

Я ассемблер ещё тока осваиваю - и можешь пояснить что за прерывание INTO? Не то что я имел в виду?
[color=#FF0000]Хачу фсё знать!!![/color]
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Re: Прерывания от кнопки.

Сообщение sergeys »

Так это там бы и продолжали , там ploop :)))

Ну я сказал как на порт (!) кнопку посадить и ее использовать.
Ток подождите может кто из умных котов заглянет, может я че не то сказал.

Jeka-starik писал(а):Я ассемблер ещё тока осваиваю - и можешь пояснить что за прерывание INTO? Не то что я имел в виду?


Посмотрите в даташите табличку векторов прерываний :) :wink:
Ко мне можно на "ты", так даже лучше!
Jeka-starik
Открыл глаза
Сообщения: 48
Зарегистрирован: Чт апр 07, 2011 11:57:18
Откуда: Санкт-Петербург

Re: Прерывания от кнопки.

Сообщение Jeka-starik »

А - понял - внешнее прерывание. Ну, а то что если что-то не так получится - исправить то программу не сложно.
[color=#FF0000]Хачу фсё знать!!![/color]
Аватара пользователя
sergeys
Поставщик валерьянки для Кота
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Re: Прерывания от кнопки.

Сообщение sergeys »

Jeka-starik писал(а):А - понял - внешнее прерывание. Ну, а то что если что-то не так получится - исправить то программу не сложно.

:beer:
Вот и я кому-то помог :) надеюсь....
Ко мне можно на "ты", так даже лучше!
Ответить

Вернуться в «Теория»