Доброго времени суток, наткнулся на следующую проблему.
Есть управляющий сигнал цикл которого 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
|