Страница 93 из 628

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

Добавлено: Вс апр 25, 2010 15:19:01
akl
-Или только можно перейти к метке в начало программы, как бы сброс.
В этом случае никакого сброса не будет; будет простой переход на заданный адрес PC
-вся периферия останется инициализированной
-Или ногой, подключенной к RESET из программы дернуть на массу?
так, наверно, можно; но, мне лично, эта идея не нравится. В одном из приборов нужен был переход на совершенно другой участок программы; воспользовался тем, что имелась кнопка "ON/OFF" подключенная к INT0 и, при удержании ее во время выключения более 7 секунд, прибор переходил на новый участок программы. при этом не нужно инициализировать снова всю периферию, а ведь сейчас эта процедура занимает довольно много времени.

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

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

; ///уже нажали на кнопку
rcall delay_50mc ; идем в обработчик задержки
SBRS... проверяем регистр.
и т.д...
Или как? приведите пример с комментариями к каждой строчке, пожалуйста...

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

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

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

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

Добавлено: Вс апр 25, 2010 18:25:39
Arlleex
Не читатели мы?
А вы?
Я же написал вроде

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

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

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

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

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

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

Добавлено: Вс апр 25, 2010 21:15:31
GP1
Ну, замечу я вам, "часовая собака" не совсем на ресет перейдет, но вот только зачем такие заморочки я не пойму :dont_know:

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

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

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

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

Добавлено: Вс апр 25, 2010 22:58:45
GP1
:shock:
доступа нет, а кнопка есть.
а к чему тогда она прикошечена, кнопака-то?

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

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

в общем вопрос то не в том что за кнопка, да где... а в том, как организовать сброс мк )

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

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

В общем спасибо за ответы. Думаю мне переход в бесконечный цикл с собачкой подойдет.

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

Добавлено: Пн апр 26, 2010 08:10:06
Veidimadr
Здравствуйте, нужна помощь бывалых котов советом. Использую мк Atiny2313 программирую на C в CodeVisionAVR

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

2. Как сделать "глобальную паузу" по кнопке. Поясню выполняется программа, если я нажимаю кнопку она становится на паузу и возобновляется с места остановки при повторном нажатии.

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

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

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

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

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

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

_noise, поправил дабы было видно кому чего куда

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

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

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

noise- хищник это ж классика! со шварцем неггером :)

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

Добавлено: Вт апр 27, 2010 17:51:22
Alexeus
ну умницы, умницы... всегда приятно поиздеваться над кем нибудь... :music:

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

Добавлено: Ср апр 28, 2010 12:57:13
Alexeus
Подскажите, если мк управляет базой транзистора типа BC850, BC847... -нужно базу к мк через резистор подключать?

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

-верно, или что то напутал?

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

Добавлено: Ср апр 28, 2010 13:17:08
GP1
Резистор нужен по-любому - иначе кердык
R=(Voh-Vbesat)*h21e/2Ik

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

Добавлено: Ср апр 28, 2010 13:44:05
Alexeus
дружище, поясни пожалуйста формулу, а то не все понятно.

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

Добавлено: Ср апр 28, 2010 15:56:52
Engineer_Keen
То что резистор нужен это однозначно, иначе получается вывод контроллера практически на земле (мы ведь схему с ОЭ рассматриваем?). Но вот номинал наверно не 500-700, а десятки килоом.

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

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