роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (3): « 1 [2] 3 »   

> Описание: Помогите составить функцию
Artem
Отправлено: 07 Августа, 2012 - 20:27:12
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





А зачем использлвать ещё таймеры ведь они должны генерировать частоту только для светодиода и можно просто поставить транзисторный ключ и подключить больше диодов.
 
 Top
anar
Отправлено: 07 Августа, 2012 - 20:38:57
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
А зачем использлвать ещё таймеры ведь они должны генерировать частоту только для светодиода и можно просто поставить транзисторный ключ и подключить больше диодов.

Извиняюсь я не так вас понял Смущение .Ну, а зачем вы тогда задали вопрос если сами знаете ответ?
 
 Top
Artem
Отправлено: 08 Августа, 2012 - 11:30:06
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Так ведь я спросил:
Может ли таймер работать параллельно с выполняемой программой?
 
 Top
anar
Отправлено: 08 Августа, 2012 - 11:39:25
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
Может ли таймер работать параллельно с выполняемой программой?

Конечно.
 
 Top
Artem
Отправлено: 12 Августа, 2012 - 16:34:39
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





anar, можно ещё вопрос по поводу вашего кода: я залил его в мк, но я не совсем понимаю что он должен делать, я подключил к выходу B1 светодиод, я так понимаю B1 это физический выход таймера, подключил кнопку к C1 но ничего не происходит.
Не могли бо вы по подробнее рассказать о том как функционирует код.
 
 Top
anar
Отправлено: 12 Августа, 2012 - 20:19:02
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
anar, можно ещё вопрос по поводу вашего кода: я залил его в мк, но я не совсем понимаю что он должен делать, я подключил к выходу B1 светодиод, я так понимаю B1 это физический выход таймера, подключил кнопку к C1 но ничего не происходит.
Не могли бо вы по подробнее рассказать о том как функционирует код.

Все очень просто.Таймер 1 в режиме counter(счетчика), то есть он считает импульсы приходящие на вход T1, когда значение счетчика достигнет 1, то есть он посчитает 2 импульса, логический уровень на выхоте OC1A изменится на противоположный.Соберите все по схеме, что я привел внизу.Возможно у вас возникнут проблемы с дребезгом, тогда значение compar1a придется увеличить.Этот код я привел, чтобы вы лучше поняли работу таймера.
CODE:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.1 = Output
Config PINC.1 = Input
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle , Clear Timer = 1



Do
Compare1a = 1
Loop

(Отредактировано автором: 17 Августа, 2012 - 12:47:33)

 
 Top
Anar2
Отправлено: 14 Августа, 2012 - 11:33:15
Post Id


Рядовой


Сообщений всего: 2
Дата рег-ции: Авг. 2012  





Artem
У вас все получилось?
 
 Top
Artem
Отправлено: 15 Августа, 2012 - 18:20:06
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Да у меня всё получилось, но не сразу. С начала я пренебрёг дребезгом контактов и не поставил резистор, в сочетании с микропереключателем с лапкой это дало не понятный эффект: программа вроде бы работала, но светодиод постоянно мерцал, и срабатывания были не уверенными, затем я попытался изменить значение Comparea1 в большую сторону тогда задержкки между миганием светодиода становились больше, а кнопка почти не влияла на работу, затем я поставил значение 0.5, компилятор не выдал ошибки и я загрузил код, светодиод перестал светиться, но и всё программа перестала работать.
Затем я всё таки поставил резистор, предохраняющий от дребезга, дела пошли лучше, хаотичное мерцание и ложные срабатывания прекратились, однако всё равно в некоторые моменты срабатывание не происходит, но это как я понимаю из-за самого переключателя, надо будет поставить простую кнопку.
Сейчас попробую увеличить значение Comparea1 посмотрим что будет.
И огромное вам спасибо Улыбка
 
 Top
anar
Отправлено: 15 Августа, 2012 - 20:29:03
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
Затем я всё таки поставил резистор, предохраняющий от дребезга

Я вас поправлю резистор не защищает от дребезга,он, так сказать выдает 100% низкий логический уровень на входе мк.Не понятно Улыбка?Тогда объясню подробно.Например если использовать транзистор, как ключ, то его базу надо подтянуть на землю резистором,этот резистор запирает транзистор при отсуствие сигнала.
 
 Top
Artem
Отправлено: 16 Августа, 2012 - 09:51:45
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





Всё понятно, кода, я только начанал работать с электроникой, в одной из книг был описан транзисторный ключ, я никак не мог его собрать, провёл кучу экспериментов, и затем мне удалось, но я всё же не понимал зачем подтягивать базу к земле, теперь всё ясно, спасибо. Улыбка
 
 Top
cjAndrews
Отправлено: 17 Августа, 2012 - 01:45:30
Post Id



Лейтенант


Сообщений всего: 25
Дата рег-ции: Авг. 2012  





от дребезга кнопки он не защищает, он увеличивает ширину (или долготу?) сигнала приходящего на базу, уменьшая его потенциал (каждый сталкивался с этим в метро)(а чтобы не уменьшить? 5вольт для открытия транзистора много).
и если ширина увеличится в три раза, то три дребезга база примет за один.
 
 Top
Artem
Отправлено: 17 Августа, 2012 - 12:41:00
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





А нельзя ли как-то справиться с дребезгом программно, а то резистор не всегда спасает
 
 Top
anar
Отправлено: 17 Августа, 2012 - 12:44:04
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
А нельзя ли как-то справиться с дребезгом программно, а то резистор не всегда спасает

Обычно добавляют паузы, но в вашем случае лучше увеличить значение compare1a.
(Добавление)

Когда инициализируете порты, как входы, пишите PINC.X = INPUT, а когда инициализуруете,как выходы,то пишите PORTC.X = OUTPUT
 
 Top
Artem
Отправлено: 19 Августа, 2012 - 09:22:20
Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  





anar, я до сих пор не понимаю что отвечает за количество нажатий на кнопку, то есть как сделать так что бы для включения светодиода нужно было нажать на кнопку дважды. Это задаётся в настройках таймера или нужен дополнительный код?
 
 Top
anar
Отправлено: 19 Августа, 2012 - 10:01:17
Post Id



Главнокомандующий


Сообщений всего: 441
Дата рег-ции: Июнь 2011  





Artem пишет:
что отвечает за количество нажатий на кнопку

Значение compare1a.Неужели вас так заинтересовал мой код?Я привел его в пример, чтобы вы лучше поняли процесс.Эту задачу лучше решить, используя циклы и IF, так легче будет избавиться от дребезга программно.

(Отредактировано автором: 19 Августа, 2012 - 11:21:54)

 
 Top
Страниц (3): « 1 [2] 3 »
« Делимся опытом »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown