http://wiki.linuxcnc.org/cgi-bin/wiki.p ... CycleTimer
Основная суть - делаем pwmgen с частотой 1 (кстати, вместо pwm наверняка можно использовать siggen), добавляем энкодер, который будет считать тики pwm и выводим значение encoder.counts в pyvcp - получаем количество секунд с начала обработки
hal:
Код: Выделить всё
loadrt pwmgen output_type=0 # This creates a 1Hz signal
loadrt encoder num_chan=1 # This will count the 1Hz signals
loadrt edge count=1 # and this looks for a change in program.is-running to reset the timer
addf pwmgen.make-pulses base-thread
addf encoder.update-counters base-thread # If you don't have a base-thread then put it in the servo-thread
addf pwmgen.update servo-thread
addf encoder.capture-position servo-thread
addf edge.0 servo-thread
setp pwmgen.0.pwm-freq 1
setp pwmgen.0.scale 1
setp pwmgen.0.offset 0
setp pwmgen.0.value 0.5
setp encoder.0.counter-mode 1
setp edge.0.in-edge false
net run-timer halui.program.is-running => pwmgen.0.enable edge.0.in
net OneHzPulse pwmgen.0.pwm => encoder.0.phase-A
net timer-reset edge.0.out => encoder.0.resetКод: Выделить всё
<pyvcp>
<number>
<halpin>"timer"</halpin>
<format>"4.0f"</format>
</number>
</pyvcp>
Код: Выделить всё
net timer-display encoder.0.position => pyvcp.timer

