TS-7180 PWM: Difference between revisions

From embeddedTS Manuals
(Created page with "{{Warning|This is still in development, requiring an FPGA upgrade}} The TS-7180 provides a single PWM channel, available on DIO_1.")
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{Warning|This is still in development, requiring an FPGA upgrade}}
{{Warning|This requires FPGA Rev 11 or later}}


The TS-7180 provides a single PWM channel, available on DIO_1.
The TS-7180 provides a single PWM channel, available on DIO_1 (pin #1 of P3-A). Because DIO_1 is a general-purpose IO, to use it as a PWM output it is first necessary to enable such usage by writing to address 309 in the FPGA, as follows:
 
<source lang=bash>
tshwctl -a 309 -w 1
</source>
 
PWM devices are available though the sysfs filesystem, they will appear at "/sys/class/pwm/pwmchipX/" where X is the PWM channel number.  Due to the layout of the PWM controller, each PWM channel is on a separate chip.  Normally a single PWM chip can support multiple PWM devices through linux, however in this case each chip only has a single device; pwm0.  This device is not enabled by default and must be turned on manually: can be used to control the PWM.
<source lang=bash>
# Each PWM controller has "1" PWM device which will be PWM channel 0
echo 0 > /sys/class/pwm/pwmchipX/export
</source>
 
This will create a pwm0/ directory under each pwmchipX/ directory which will contain the following relevant files.:
{| class=wikitable
|-
| period
| Total period, inactive and active time in the PWM cycle specified in nanoseconds.
|-
| duty_cycle
| Active time of the PWM signal specified in nanoseconds.  Must be less than the period.
|-
| enable
| Write 1 to enable, 0 to disable
|}
 
As an example, this will set a 50khz signal with 50 percent duty cycle on PWM channel 4:
<source lang=bash>
# 20us is the period for 50khz
echo 20000 > /sys/class/pwm/pwmchip4/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable
</source>
 
 
{{Note|The DIO pins on the TS-7180 have a 1.5k pull-up, which means that the rise-time on these outputs is relatively slow.  Therefore, you might need to add an off-board pull-up to get a faster rise-time.}}

Latest revision as of 11:00, 17 July 2018

WARNING: This requires FPGA Rev 11 or later

The TS-7180 provides a single PWM channel, available on DIO_1 (pin #1 of P3-A). Because DIO_1 is a general-purpose IO, to use it as a PWM output it is first necessary to enable such usage by writing to address 309 in the FPGA, as follows:

tshwctl -a 309 -w 1

PWM devices are available though the sysfs filesystem, they will appear at "/sys/class/pwm/pwmchipX/" where X is the PWM channel number. Due to the layout of the PWM controller, each PWM channel is on a separate chip. Normally a single PWM chip can support multiple PWM devices through linux, however in this case each chip only has a single device; pwm0. This device is not enabled by default and must be turned on manually: can be used to control the PWM.

# Each PWM controller has "1" PWM device which will be PWM channel 0
echo 0 > /sys/class/pwm/pwmchipX/export

This will create a pwm0/ directory under each pwmchipX/ directory which will contain the following relevant files.:

period Total period, inactive and active time in the PWM cycle specified in nanoseconds.
duty_cycle Active time of the PWM signal specified in nanoseconds. Must be less than the period.
enable Write 1 to enable, 0 to disable

As an example, this will set a 50khz signal with 50 percent duty cycle on PWM channel 4:

# 20us is the period for 50khz
echo 20000 > /sys/class/pwm/pwmchip4/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable


Note: The DIO pins on the TS-7180 have a 1.5k pull-up, which means that the rise-time on these outputs is relatively slow. Therefore, you might need to add an off-board pull-up to get a faster rise-time.