Форум myROBOT.ru » Лаборатория » Микроконтроллеры » Самодельный регулятор мощности для импортных комлектов ДУ

Страниц (1): [1]
 

1. s13 - 30 Августа, 2009 - 14:55:35 - перейти к сообщению
Доброго времени суток, наткнулся на следующую проблему.
Есть управляющий сигнал цикл которого 10 миллисекунд, управляющие импульсы от 0.8 до 1.2 мс, остальное время отводится на управление двигателем.

1мс - стоп
1.2мс - полный вперёд
0.8 - полный назад


но сегодня вычитал более современный вариант сигнала
1.5мс - стоп
2мс - полный вперёд
1мс - полный назад

Научился считать длительность между импульсами и решил измерить импульс 1мс (длительность импульса равна длительности паузы поэтому так и так 1 мс),
но как-то криво получилось:
таймером насчитал 256 импульсов (в протеусе)
1024/4,000,000*256 = 0,065536 сек - много как-то Улыбка

Но если измерять время между импульсами и из этого вытянуть длительность, то не останется промежутка на управление двигателем.

Помогите плиз измерить длительность импульса.
Заранее благодарен.

P.S. ЖКИ только в протеусе для индикации результата, ШИМ сделаю потом
Главное измерить длительность импульса.


CODE:

$regfile = "2313def.dat"
$crystal = 4000000
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Timer1 = Timer , Prescale = 1024 , Capture Edge = Falling

Dim Wtime As Byte
Dim Timercounter As Word

On Capture1 Captmr

Wtime = 100
Timercounter = 0

Enable Interrupts
Enable Capture1

Do
Waitms Wtime
Cls
Lcd "pwidth: " ; " " ; Capture1
Loop

Captmr:
Timercounter = Capture1
Timer1 = 0
Return

End