\section{PWM Unit} The \gls{PWM} unit uses a timer/counter to generate a \gls{PWM} (pulse train) signal. There are four outputs with a common frequency and independent duty cycles. Each channel can be individually enabled or disabled. This unit is intended for applications such as light dimming, heater regulation, or the control of H-bridges. \subsection{PWM Configuration} \begin{inicode} [PWMDIM:pwm@12] # Default pulse frequency (Hz) frequency=1000 # Pin mapping - 0=disabled # Channel1 - 1:PA6, 2:PB4, 3:PC6 ch1_pin=1 # Channel2 - 1:PA7, 2:PB5, 3:PC7 ch2_pin=0 # Channel3 - 1:PB0, 2:PC8 ch3_pin=0 # Channel4 - 1:PB1, 2:PC9 ch4_pin=0 \end{inicode} \subsection{PWM Commands} \begin{cmdlist} 0 & \cname{SET\_FREQUENCY} Set the PWM frequency & \begin{cmdreq} \cfield{u32} frequency in Hz \end{cmdreq} \\ 1 & \cname{SET\_DUTY} Set the duty cycle of one or more channels & \begin{cmdreq} \item Repeat 1--4 times: \begin{pldlist} \cfield{u8} channel number 0--3 \cfield{u16} duty cycle 0--1000 \end{pldlist} \end{cmdreq} \\ 2 & \cname{STOP} Stop the hardware timer. Outputs enter low level. & \\ 3 & \cname{START} Start the hardware timer. & \\ \end{cmdlist}