Мелкие вопросы по МК и ПЛИС.
Re: Различные мелкие вопросы
-Или только можно перейти к метке в начало программы, как бы сброс.
В этом случае никакого сброса не будет; будет простой переход на заданный адрес PC
-вся периферия останется инициализированной
-Или ногой, подключенной к RESET из программы дернуть на массу?
так, наверно, можно; но, мне лично, эта идея не нравится. В одном из приборов нужен был переход на совершенно другой участок программы; воспользовался тем, что имелась кнопка "ON/OFF" подключенная к INT0 и, при удержании ее во время выключения более 7 секунд, прибор переходил на новый участок программы. при этом не нужно инициализировать снова всю периферию, а ведь сейчас эта процедура занимает довольно много времени.
В этом случае никакого сброса не будет; будет простой переход на заданный адрес PC
-вся периферия останется инициализированной
-Или ногой, подключенной к RESET из программы дернуть на массу?
так, наверно, можно; но, мне лично, эта идея не нравится. В одном из приборов нужен был переход на совершенно другой участок программы; воспользовался тем, что имелась кнопка "ON/OFF" подключенная к INT0 и, при удержании ее во время выключения более 7 секунд, прибор переходил на новый участок программы. при этом не нужно инициализировать снова всю периферию, а ведь сейчас эта процедура занимает довольно много времени.
Re: Различные мелкие вопросы
Обработка кнопки (тактовой).
Как известно, при нажатии на тактовую кнопку, соприкасаются 2 пластины, при этом, может возникнуть так называемый дребезг, это когда пластины отпружинились, отскочили, и опять соприкоснулись.
МК работает настолько быстро, что может уловить эти "дребезги" и принять эти "ненужные" включения как условия.
От дребезга можно избавиться как аппаратно, например, с помощью одновибратора или RS-триггера, так и программно.
Но программно как это реализовать на ассемблере?
Вообще, сколько хватает, чтобы пластины кнопки успокоились и приняли однозначное положение?
Допустим, 50мс.
Тогда это будет выглядеть следующим образом, верно?
; ///уже нажали на кнопку
rcall delay_50mc ; идем в обработчик задержки
SBRS... проверяем регистр.
и т.д...
Или как? приведите пример с комментариями к каждой строчке, пожалуйста...
Как известно, при нажатии на тактовую кнопку, соприкасаются 2 пластины, при этом, может возникнуть так называемый дребезг, это когда пластины отпружинились, отскочили, и опять соприкоснулись.
МК работает настолько быстро, что может уловить эти "дребезги" и принять эти "ненужные" включения как условия.
От дребезга можно избавиться как аппаратно, например, с помощью одновибратора или RS-триггера, так и программно.
Но программно как это реализовать на ассемблере?
Вообще, сколько хватает, чтобы пластины кнопки успокоились и приняли однозначное положение?
Допустим, 50мс.
Тогда это будет выглядеть следующим образом, верно?
; ///уже нажали на кнопку
rcall delay_50mc ; идем в обработчик задержки
SBRS... проверяем регистр.
и т.д...
Или как? приведите пример с комментариями к каждой строчке, пожалуйста...
Не умеешь - не берись, но не взявшись не научишься...
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Различные мелкие вопросы
Конечно можно сделать и так, но тогда на время обработки паузы МК ничем другим заниматься не сможет.
На мой взгляд опрос лучше всетаки делать в прерывании.
Допустим таймер работает с отсечкой в 5..10 мс (очень часто используется для динамической индикации) тогда в прерывании пока нажата кнопка делаем накопление в каком-нибудь регистре, и как будет превышен порог - принимаем решение, что кнопка нажата/отпущена, а процик в это время занимается полезной работой.
зы: Жень еще рекомендую книжку Ю.Ревич "Практическое программирование микропроцессоров ATMEL AVR на языке ассемблера",
это если хочешь на асме писать, оч.полезная книжечка.
На мой взгляд опрос лучше всетаки делать в прерывании.
Допустим таймер работает с отсечкой в 5..10 мс (очень часто используется для динамической индикации) тогда в прерывании пока нажата кнопка делаем накопление в каком-нибудь регистре, и как будет превышен порог - принимаем решение, что кнопка нажата/отпущена, а процик в это время занимается полезной работой.
зы: Жень еще рекомендую книжку Ю.Ревич "Практическое программирование микропроцессоров ATMEL AVR на языке ассемблера",
это если хочешь на асме писать, оч.полезная книжечка.
Re: Различные мелкие вопросы
Не читатели мы?
А вы?
Я же написал вроде
Но программно как это реализовать на ассемблере?
зы: Жень еще рекомендую книжку Ю.Ревич "Практическое программирование микропроцессоров ATMEL AVR на языке ассемблера",
это если хочешь на асме писать, оч.полезная книжечка.
Да, эту тоже заказать хочу, только пока что не сейчас. Когда сестра в Москву поедет (а это через месяц где-то).
Действительно, программы писать буду исключительно на ассемблере, т.к. из языков высокого уровня мало что выкачаешь...
Не умеешь - не берись, но не взявшись не научишься...
Re: Различные мелкие вопросы
Alexeus писал(а):Кто в курсе, на МЕГЕ8 и др. АВРках в программе можно сброс сделать (reset) -какой командой.
-Или только можно перейти к метке в начало программы, как бы сброс.
-Или ногой, подключенной к RESET из программы дернуть на массу?
хочу сделать, что бы если держать кнопку более 3х секунд, происходил полный сброс контроллера...
Можно после того как контроллер поймет, что кнопка нажата более 3 секунд включить собаку (watchdog) и войти в вечный цикл, в котором не должно быть команды сброса собаки. Тогда по истечении некоторого времени (периода собаки) произойдет честный аппаратный сброс.
Если пытаться ногой дергать пин сброса, то возможны неприятные эффекты - есть вариант что контроллер "недобросится". Если подобный подход и применять, то ногой нужно запускать какой-либо буферный элемент, который после запуска продержит низкий уровень на ноге сброса в течение времени, необходимого для гарантированного сброса контроллера.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Различные мелкие вопросы
Ну, замечу я вам, "часовая собака" не совсем на ресет перейдет, но вот только зачем такие заморочки я не пойму 

Re: Различные мелкие вопросы
с собачкой и циклом хорошо придумано
запишемс...
зачем? -нужен мне бывает сброс мк, в отладке, и когда доступа к мк нет, зато есть кнопка.
GP1- а на что же перейдет собачка, почему "не совсем на ресет"? вроде в даташите как раз указаны несколько вариантов сброса, один из них- собачка.
запишемс...зачем? -нужен мне бывает сброс мк, в отладке, и когда доступа к мк нет, зато есть кнопка.
GP1- а на что же перейдет собачка, почему "не совсем на ресет"? вроде в даташите как раз указаны несколько вариантов сброса, один из них- собачка.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Различные мелкие вопросы
доступа нет, а кнопка есть.
а к чему тогда она прикошечена, кнопака-то?
Re: Различные мелкие вопросы
сам мк у меня в автомобиле, распаян в блоке внутри торпедо, что бы к нему подлезть, нужно разобрать консоль, а это неудобно.
в автомобиле редко, но случается нарушение контакта (потому что я уже разбил разъем постоянным подсоединением/отсоединением мк) из-за этого некоторые функции нарушаются, что бы исправить нужно сделать сброс, а один из выводов мк у меня посажен на штатную кнопку в автомобиле (получается двойное действие- если кратковременно нажимать кнопку, она выполняет свое предназначение, если удерживать более 3х сек., то выполняет заложенную мной функцию -сброс мк)
в общем вопрос то не в том что за кнопка, да где... а в том, как организовать сброс мк )
в автомобиле редко, но случается нарушение контакта (потому что я уже разбил разъем постоянным подсоединением/отсоединением мк) из-за этого некоторые функции нарушаются, что бы исправить нужно сделать сброс, а один из выводов мк у меня посажен на штатную кнопку в автомобиле (получается двойное действие- если кратковременно нажимать кнопку, она выполняет свое предназначение, если удерживать более 3х сек., то выполняет заложенную мной функцию -сброс мк)
в общем вопрос то не в том что за кнопка, да где... а в том, как организовать сброс мк )
Re: Различные мелкие вопросы
дело в том, что мк не виснет, он продолжает обрабатывать, но сигнал смещается и сбивается индикация. Это меня просили сделать декорации в фильме "Хищник", а именно -часы на его руке
В общем спасибо за ответы. Думаю мне переход в бесконечный цикл с собачкой подойдет.
В общем спасибо за ответы. Думаю мне переход в бесконечный цикл с собачкой подойдет.
Re: Различные мелкие вопросы
Здравствуйте, нужна помощь бывалых котов советом. Использую мк Atiny2313 программирую на C в CodeVisionAVR
1. Есть 25 датчиков с которых необходимо снимать сигнал. Слышал что для этих целей используется шифратор. Где можно найти информацию для начинающих о применении шифратора для этих целей?
2. Как сделать "глобальную паузу" по кнопке. Поясню выполняется программа, если я нажимаю кнопку она становится на паузу и возобновляется с места остановки при повторном нажатии.
1. Есть 25 датчиков с которых необходимо снимать сигнал. Слышал что для этих целей используется шифратор. Где можно найти информацию для начинающих о применении шифратора для этих целей?
2. Как сделать "глобальную паузу" по кнопке. Поясню выполняется программа, если я нажимаю кнопку она становится на паузу и возобновляется с места остановки при повторном нажатии.
Re: Различные мелкие вопросы
1. что за датчики? (цифровые, общаются по шине, может и не нужен шифратор?)
2. реализация паузы видится во входе в прерывание по нажатию кнопки и зацикливании там ожидая повторное нажатие кнопки.
2. реализация паузы видится во входе в прерывание по нажатию кнопки и зацикливании там ожидая повторное нажатие кнопки.
Re: Различные мелкие вопросы
Alexeus писал(а):1. что за датчики? (цифровые, общаются по шине, может и не нужен шифратор?)
2. реализация паузы видится во входе в прерывание по нажатию кнопки и зацикливании там ожидая повторное нажатие кнопки.
Индукционные датчики положения
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Различные мелкие вопросы
Для Alexeus, не надо висеть в прерываниях как лемуры на ветках.
Veidimadr
Тыщи раз описано как делать паузы и обработки.
Если необходимо обрабатывать событие только 1 раз в неопределенное время (по кнопке) то:
1) выделяем переменную под флаг-признак срабатывания
2) в основном цикле вызываем подпрограмму (ПП) если срабатывание было. В ПП перед выходом сбрасываем признак.
3) в обработке прерывания ставим признак срабатывания.
Процесс зациклен и будет работать.
Дайте ссылку на датчики или марку их приведите.
_noise, поправил дабы было видно кому чего куда
Veidimadr
Тыщи раз описано как делать паузы и обработки.
Если необходимо обрабатывать событие только 1 раз в неопределенное время (по кнопке) то:
1) выделяем переменную под флаг-признак срабатывания
2) в основном цикле вызываем подпрограмму (ПП) если срабатывание было. В ПП перед выходом сбрасываем признак.
3) в обработке прерывания ставим признак срабатывания.
Процесс зациклен и будет работать.
Дайте ссылку на датчики или марку их приведите.
_noise, поправил дабы было видно кому чего куда
Последний раз редактировалось Meteor Пн апр 26, 2010 11:17:22, всего редактировалось 1 раз.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Различные мелкие вопросы
про паузы: каков вопрос, таков ответ... я понимаю, что основное правило- делать обработку в прерываниях как можно скорее и выходить. Просто посоветовал все же зациклиться в прерывании, если нужна мгновенная пауза, останавливающая весь мк. Конечно с флагами корректнее, но пока дело дойдет до проверки флага, могут выполниться другие инструкции по ходу программы. так что прошу не пинать меня лемурами ) Автор сам решит, глобально мк вешать или программа допускает обработку флагов.
про сброс мк: безусловно нужно укреплять алгоритм, но так ща лениво... поюзаю пока кнопочку сброса, к тому же мк не часто лагает...
noise- хищник это ж классика! со шварцем неггером
про сброс мк: безусловно нужно укреплять алгоритм, но так ща лениво... поюзаю пока кнопочку сброса, к тому же мк не часто лагает...
noise- хищник это ж классика! со шварцем неггером
Re: Различные мелкие вопросы
ну умницы, умницы... всегда приятно поиздеваться над кем нибудь... 

Re: Различные мелкие вопросы
Подскажите, если мк управляет базой транзистора типа BC850, BC847... -нужно базу к мк через резистор подключать?
Я так прикинул, если Hfe=140, то 1/140= 0.007мА ток базы. Напряжение 5в, значит 5/0.007= 714 Ом. получается что резистор на 500-700 Ом нужен (10-7мА).
-верно, или что то напутал?
Я так прикинул, если Hfe=140, то 1/140= 0.007мА ток базы. Напряжение 5в, значит 5/0.007= 714 Ом. получается что резистор на 500-700 Ом нужен (10-7мА).
-верно, или что то напутал?
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Различные мелкие вопросы
Резистор нужен по-любому - иначе кердык
R=(Voh-Vbesat)*h21e/2Ik
R=(Voh-Vbesat)*h21e/2Ik
Re: Различные мелкие вопросы
дружище, поясни пожалуйста формулу, а то не все понятно.
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Различные мелкие вопросы
То что резистор нужен это однозначно, иначе получается вывод контроллера практически на земле (мы ведь схему с ОЭ рассматриваем?). Но вот номинал наверно не 500-700, а десятки килоом.
Ib=U/Rb=5/700=7мА, Ik=Ib*h21e=7мА*150=1А
Такой Ik нужен, тогда да, 700ом?
Ib=U/Rb=5/700=7мА, Ik=Ib*h21e=7мА*150=1А
Такой Ik нужен, тогда да, 700ом?
