Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
19.03.2010, 20:12
|
#91
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Детектор нуля и Tiny13
а библиотечных функций разве нету типа delay_ms()?
|
|
|
|
19.03.2010, 22:37
|
#92
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Детектор нуля и Tiny13
pve70, есть но там только число.. а мне надо переменную - да в общем то разобрался, таймер же работает на увеличение!!! а я чет сразу не учел этого... как твое устройство -заработало?
|
|
|
|
20.03.2010, 00:23
|
#93
|
Гражданин KAZUS.RU
Регистрация: 24.06.2005
Сообщений: 535
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
|
Re: Детектор нуля и Tiny13
В CodeVision в функции delay_ms() можно использовать переменную, в функции delay_us() - константу.
|
|
|
|
20.03.2010, 01:00
|
#94
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Детектор нуля и Tiny13
я сейчас немного скорректировал программу прерывания - сделал 50 циклов таймера и при совпадении с заданными числами включаю лампы их у меня две а выключаю и останавливаю таймер при нулевом значении цикла... но что то дисплей начал всякую гадость выводить. Я пишу на mikroBasic
|
|
|
|
20.03.2010, 07:56
|
#95
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Детектор нуля и Tiny13
Цитата:
|
как твое устройство -заработало
|
Вчера только посылка пришла с оптопарами, в воскресенье планирую потестировать предложенные решения
|
|
|
|
20.03.2010, 21:34
|
#96
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Детектор нуля и Tiny13
pve70, смотрел даташит по симисторам bt137 импульс открывания 2 мс так что учти... я уже прогу сделал - на 2 лампы отдельно регулирует скважность , около 60 шагов регулирования
|
|
|
|
21.03.2010, 15:57
|
#97
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Детектор нуля и Tiny13
Цитата:
|
около 60 шагов регулирования
|
А откуда 60 шагов-то? Полный период 1/50=20мс или ты микросекундах прибавляешь?
|
|
|
|
21.03.2010, 20:18
|
#98
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Детектор нуля и Tiny13
Вот наконец пришли оптопары и я начал следовать советам со страницы 1.
Результат: конденсаторы C2 и C3 убрать однозначно, резисторы R9 и R10 можно оставить на месте - все работает. В приложении график, когда от 0 отступаем 7мс и даем импульс 1мс. Как видно - РАБОТАЕТ!!!
|
|
|
|
21.03.2010, 20:23
|
#99
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Детектор нуля и Tiny13
Сейчас попробовал открывающий импульс дать с 200мкс - тоже работает
|
|
|
|
21.03.2010, 23:38
|
#100
|
Гражданин KAZUS.RU
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
|
Re: Детектор нуля и Tiny13
pve70, я в прерывании таймер запускаю 8 -битный, при 10мгц - 58 раз надо запустить таймер чтобы закончился период синусоиды
sub procedure interrupt '
if INTCON.INT0IF = 1 then
TempTMR0 = 0 'обнуление счетчика
INTCON.INT0IF = 0 'сброс флага int
INTCON.TMR0IF = 0 'сброс флага таймера - так на всяк случай
T0CON.TMR0ON = 1 'старт таймера
else
'прерывание по таймеру
if INTCON.TMR0IF = 1 then
INTCON.TMR0IF = 0 'сброс флага
TMR0L = 0
if (TempTMR0 › TMRLamp1) and (TempTMR0 › TMRLamp2) then
T0CON.TMR0ON = 0 ' остановка таймера если т.к. включены лампы и нет надобности ждать окончания периода синусоиды (вот счас твоори в программе все что хочешь!!!)
PORTC.1 = 0 'порт первой лампы
PORTC.0 = 0 'порт второй лампы
end if
if TempTMR0 = 58 then
T0CON.TMR0ON = 0 'это окончание счетчика и остановка таймера (вообще то можно уже и убрать!! это кусок проги был раньше окончанием работы таймера)
PORTC.1 = 0 '
PORTC.0 = 0 '
else
TempTMR0 = TempTMR0 + 1
end if
'включение дампы при совпадении счетчика таймера с заданной выдержкой включения лампы
if TempTMR0 = TMRLamp1 then
PORTC.0 = 1 'вкл. лампу 1
end if
if TempTMR0 = TMRLamp2 then
PORTC.1 = 1 'вкл. лампу 2
end if
INTCON.TMR0IF = 0 'обнуление флага прерывания таймера
end if
end if
end sub
я ж на PIC собираю блок управления, а ты как организовал прерывание? дело в том что мне надо сделать несколько зон управления лампами так вот я на один МК все вешаю а чтобы включать каждую отдельно я организовал в прерывании постоянный цикл работы таймера со счетчиком вся синусоида разбита на 58 кусочков , а каждая лампа имеет свою задержку ... так вот в прерывании проверяется совпадение задержки включения лампы с счетчиком и если совпало на порт идет "1" .как только все лампы включились таймер можно остановить до окончания периода синусоиды и снять "1" с порта -симистор закроется сам....
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:45.
|
|