diff options
Diffstat (limited to 'ldmicro/sample/var-timer.ld')
-rw-r--r-- | ldmicro/sample/var-timer.ld | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ldmicro/sample/var-timer.ld b/ldmicro/sample/var-timer.ld new file mode 100644 index 0000000..a7b28fb --- /dev/null +++ b/ldmicro/sample/var-timer.ld @@ -0,0 +1,63 @@ +LDmicro0.1 +CYCLE=10000 +CRYSTAL=4000000 +BAUD=2400 + +IO LIST + Xin at 0 + Yout at 0 + Apot at 0 +END + +PROGRAM +RUNG + COMMENT This is the actual variable-delay TOF timer. When Rdel_input goes high, Rdel_output goes high \r\nt_max cycle times later. When Rdel_input goes low, Rdel_output goes low immediately. +END +RUNG + CONTACTS Rdel_input 0 + LEQ t_count t_max + ADD t_count t_count 1 +END +RUNG + CONTACTS Rdel_input 1 + MOVE t_count 0 +END +RUNG + COMMENT The extra branch is to make a delay of 0 cycles work correctly. +END +RUNG + PARALLEL + GRT t_count t_max + SERIES + CONTACTS Rdel_input 0 + EQU t_max 0 + END + END + COIL Rdel_output 0 0 0 +END +RUNG + COMMENT \r\n +END +RUNG + COMMENT This is just an example of how to use the timer. The voltage attached to Apot (which goes\r\nfrom 0 V to Vdd) sets the delay between when Xin goes high and when Yout goes high. +END +RUNG + READ_ADC Apot +END +RUNG + COMMENT This only works with a cycle time of 10 ms. If we want the delay to be between 0 s and 5 s,\r\nthen it should be 0 to 500 cycle times; the ADC goes from 0 to 1023, so (roughly) divide by 2. +END +RUNG + DIV t_max Apot 2 +END +RUNG + COMMENT Then just hook up the input and the output of the timer to pins. Of course\r\nthat could drive more complicated logic, not just a pin on the processor. +END +RUNG + CONTACTS Xin 0 + COIL Rdel_input 0 0 0 +END +RUNG + CONTACTS Rdel_output 0 + COIL Yout 0 0 0 +END |