роботы робототехника микроконтроллеры


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

> Описание: Помогите составить функцию
Artem Post Id


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


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



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



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


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



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

Извиняюсь я не так вас понял Смущение .Ну, а зачем вы тогда задали вопрос если сами знаете ответ?
 
 Top
Artem Post Id


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


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



Так ведь я спросил:
Может ли таймер работать параллельно с выполняемой программой?
 
 Top
anar Post Id



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


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



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

Конечно.
 
 Top
Artem Post Id


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


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



anar, можно ещё вопрос по поводу вашего кода: я залил его в мк, но я не совсем понимаю что он должен делать, я подключил к выходу B1 светодиод, я так понимаю B1 это физический выход таймера, подключил кнопку к C1 но ничего не происходит.
Не могли бо вы по подробнее рассказать о том как функционирует код.
 
 Top
anar 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 Post Id


Рядовой


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



Artem
У вас все получилось?
 
 Top
Artem Post Id


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


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



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



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


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



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

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


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


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



Всё понятно, кода, я только начанал работать с электроникой, в одной из книг был описан транзисторный ключ, я никак не мог его собрать, провёл кучу экспериментов, и затем мне удалось, но я всё же не понимал зачем подтягивать базу к земле, теперь всё ясно, спасибо. Улыбка
 
 Top
cjAndrews Post Id



Лейтенант


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



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


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


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



А нельзя ли как-то справиться с дребезгом программно, а то резистор не всегда спасает
 
 Top
anar Post Id



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


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



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

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

Когда инициализируете порты, как входы, пишите PINC.X = INPUT, а когда инициализуруете,как выходы,то пишите PORTC.X = OUTPUT
 
 Top
Artem Post Id


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


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



anar, я до сих пор не понимаю что отвечает за количество нажатий на кнопку, то есть как сделать так что бы для включения светодиода нужно было нажать на кнопку дважды. Это задаётся в настройках таймера или нужен дополнительный код?
 
 Top
anar 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
  Яндекс.Метрика   Рейтинг@Mail.ru