Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Различные мелкие вопросы

Сообщение akl »

-Или только можно перейти к метке в начало программы, как бы сброс.
В этом случае никакого сброса не будет; будет простой переход на заданный адрес PC
-вся периферия останется инициализированной
-Или ногой, подключенной к RESET из программы дернуть на массу?
так, наверно, можно; но, мне лично, эта идея не нравится. В одном из приборов нужен был переход на совершенно другой участок программы; воспользовался тем, что имелась кнопка "ON/OFF" подключенная к INT0 и, при удержании ее во время выключения более 7 секунд, прибор переходил на новый участок программы. при этом не нужно инициализировать снова всю периферию, а ведь сейчас эта процедура занимает довольно много времени.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Различные мелкие вопросы

Сообщение Arlleex »

Обработка кнопки (тактовой).
Как известно, при нажатии на тактовую кнопку, соприкасаются 2 пластины, при этом, может возникнуть так называемый дребезг, это когда пластины отпружинились, отскочили, и опять соприкоснулись.
МК работает настолько быстро, что может уловить эти "дребезги" и принять эти "ненужные" включения как условия.
От дребезга можно избавиться как аппаратно, например, с помощью одновибратора или RS-триггера, так и программно.
Но программно как это реализовать на ассемблере?
Вообще, сколько хватает, чтобы пластины кнопки успокоились и приняли однозначное положение?
Допустим, 50мс.
Тогда это будет выглядеть следующим образом, верно?

; ///уже нажали на кнопку
rcall delay_50mc ; идем в обработчик задержки
SBRS... проверяем регистр.
и т.д...
Или как? приведите пример с комментариями к каждой строчке, пожалуйста...
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Различные мелкие вопросы

Сообщение GP1 »

Конечно можно сделать и так, но тогда на время обработки паузы МК ничем другим заниматься не сможет.
На мой взгляд опрос лучше всетаки делать в прерывании.
Допустим таймер работает с отсечкой в 5..10 мс (очень часто используется для динамической индикации) тогда в прерывании пока нажата кнопка делаем накопление в каком-нибудь регистре, и как будет превышен порог - принимаем решение, что кнопка нажата/отпущена, а процик в это время занимается полезной работой.

зы: Жень еще рекомендую книжку Ю.Ревич "Практическое программирование микропроцессоров ATMEL AVR на языке ассемблера",
это если хочешь на асме писать, оч.полезная книжечка.
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Различные мелкие вопросы

Сообщение Arlleex »

Не читатели мы?

А вы?
Я же написал вроде


Но программно как это реализовать на ассемблере?


зы: Жень еще рекомендую книжку Ю.Ревич "Практическое программирование микропроцессоров ATMEL AVR на языке ассемблера",
это если хочешь на асме писать, оч.полезная книжечка.

Да, эту тоже заказать хочу, только пока что не сейчас. Когда сестра в Москву поедет (а это через месяц где-то).
Действительно, программы писать буду исключительно на ассемблере, т.к. из языков высокого уровня мало что выкачаешь...
Не умеешь - не берись, но не взявшись не научишься...
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Re: Различные мелкие вопросы

Сообщение smac »

Alexeus писал(а):Кто в курсе, на МЕГЕ8 и др. АВРках в программе можно сброс сделать (reset) -какой командой.

-Или только можно перейти к метке в начало программы, как бы сброс.
-Или ногой, подключенной к RESET из программы дернуть на массу?

хочу сделать, что бы если держать кнопку более 3х секунд, происходил полный сброс контроллера...

Можно после того как контроллер поймет, что кнопка нажата более 3 секунд включить собаку (watchdog) и войти в вечный цикл, в котором не должно быть команды сброса собаки. Тогда по истечении некоторого времени (периода собаки) произойдет честный аппаратный сброс.
Если пытаться ногой дергать пин сброса, то возможны неприятные эффекты - есть вариант что контроллер "недобросится". Если подобный подход и применять, то ногой нужно запускать какой-либо буферный элемент, который после запуска продержит низкий уровень на ноге сброса в течение времени, необходимого для гарантированного сброса контроллера.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Различные мелкие вопросы

Сообщение GP1 »

Ну, замечу я вам, "часовая собака" не совсем на ресет перейдет, но вот только зачем такие заморочки я не пойму :dont_know:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

с собачкой и циклом хорошо придумано :write: запишемс...
зачем? -нужен мне бывает сброс мк, в отладке, и когда доступа к мк нет, зато есть кнопка.

GP1- а на что же перейдет собачка, почему "не совсем на ресет"? вроде в даташите как раз указаны несколько вариантов сброса, один из них- собачка.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Различные мелкие вопросы

Сообщение GP1 »

:shock:
доступа нет, а кнопка есть.
а к чему тогда она прикошечена, кнопака-то?
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

сам мк у меня в автомобиле, распаян в блоке внутри торпедо, что бы к нему подлезть, нужно разобрать консоль, а это неудобно.
в автомобиле редко, но случается нарушение контакта (потому что я уже разбил разъем постоянным подсоединением/отсоединением мк) из-за этого некоторые функции нарушаются, что бы исправить нужно сделать сброс, а один из выводов мк у меня посажен на штатную кнопку в автомобиле (получается двойное действие- если кратковременно нажимать кнопку, она выполняет свое предназначение, если удерживать более 3х сек., то выполняет заложенную мной функцию -сброс мк)

в общем вопрос то не в том что за кнопка, да где... а в том, как организовать сброс мк )
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

дело в том, что мк не виснет, он продолжает обрабатывать, но сигнал смещается и сбивается индикация. Это меня просили сделать декорации в фильме "Хищник", а именно -часы на его руке :))

В общем спасибо за ответы. Думаю мне переход в бесконечный цикл с собачкой подойдет.
Veidimadr
Родился
Сообщения: 8
Зарегистрирован: Чт ноя 05, 2009 08:23:56

Re: Различные мелкие вопросы

Сообщение Veidimadr »

Здравствуйте, нужна помощь бывалых котов советом. Использую мк Atiny2313 программирую на C в CodeVisionAVR

1. Есть 25 датчиков с которых необходимо снимать сигнал. Слышал что для этих целей используется шифратор. Где можно найти информацию для начинающих о применении шифратора для этих целей?

2. Как сделать "глобальную паузу" по кнопке. Поясню выполняется программа, если я нажимаю кнопку она становится на паузу и возобновляется с места остановки при повторном нажатии.
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

1. что за датчики? (цифровые, общаются по шине, может и не нужен шифратор?)
2. реализация паузы видится во входе в прерывание по нажатию кнопки и зацикливании там ожидая повторное нажатие кнопки.
Veidimadr
Родился
Сообщения: 8
Зарегистрирован: Чт ноя 05, 2009 08:23:56

Re: Различные мелкие вопросы

Сообщение Veidimadr »

Alexeus писал(а):1. что за датчики? (цифровые, общаются по шине, может и не нужен шифратор?)
2. реализация паузы видится во входе в прерывание по нажатию кнопки и зацикливании там ожидая повторное нажатие кнопки.


Индукционные датчики положения
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Различные мелкие вопросы

Сообщение Meteor »

Для Alexeus, не надо висеть в прерываниях как лемуры на ветках.
Veidimadr
Тыщи раз описано как делать паузы и обработки.
Если необходимо обрабатывать событие только 1 раз в неопределенное время (по кнопке) то:
1) выделяем переменную под флаг-признак срабатывания
2) в основном цикле вызываем подпрограмму (ПП) если срабатывание было. В ПП перед выходом сбрасываем признак.
3) в обработке прерывания ставим признак срабатывания.
Процесс зациклен и будет работать.
Дайте ссылку на датчики или марку их приведите.

_noise, поправил дабы было видно кому чего куда
Последний раз редактировалось Meteor Пн апр 26, 2010 11:17:22, всего редактировалось 1 раз.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

про паузы: каков вопрос, таков ответ... я понимаю, что основное правило- делать обработку в прерываниях как можно скорее и выходить. Просто посоветовал все же зациклиться в прерывании, если нужна мгновенная пауза, останавливающая весь мк. Конечно с флагами корректнее, но пока дело дойдет до проверки флага, могут выполниться другие инструкции по ходу программы. так что прошу не пинать меня лемурами ) Автор сам решит, глобально мк вешать или программа допускает обработку флагов.

про сброс мк: безусловно нужно укреплять алгоритм, но так ща лениво... поюзаю пока кнопочку сброса, к тому же мк не часто лагает...

noise- хищник это ж классика! со шварцем неггером :)
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

ну умницы, умницы... всегда приятно поиздеваться над кем нибудь... :music:
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

Подскажите, если мк управляет базой транзистора типа BC850, BC847... -нужно базу к мк через резистор подключать?

Я так прикинул, если Hfe=140, то 1/140= 0.007мА ток базы. Напряжение 5в, значит 5/0.007= 714 Ом. получается что резистор на 500-700 Ом нужен (10-7мА).

-верно, или что то напутал?
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Различные мелкие вопросы

Сообщение GP1 »

Резистор нужен по-любому - иначе кердык
R=(Voh-Vbesat)*h21e/2Ik
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Re: Различные мелкие вопросы

Сообщение Alexeus »

дружище, поясни пожалуйста формулу, а то не все понятно.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Различные мелкие вопросы

Сообщение Engineer_Keen »

То что резистор нужен это однозначно, иначе получается вывод контроллера практически на земле (мы ведь схему с ОЭ рассматриваем?). Но вот номинал наверно не 500-700, а десятки килоом.

Ib=U/Rb=5/700=7мА, Ik=Ib*h21e=7мА*150=1А

Такой Ik нужен, тогда да, 700ом?
Ответить

Вернуться в «Разные вопросы по МК»