PWM C Library for H3/H2+ Sunxi SoC
PWM Library for H3/H2+ Sunxi SoC
The Mainline Kernel provides a PWM driver as an Overlay driver. Mainline Kernel no longer requires this library.
Mainline KernelOverlay driverPWMhCo[B Mainline Kernelc[svB
CuOrangePiNanoPiAH3/H2+x[X{[hn[hEFAPWMgCuB {[hmFB OrangePi PC(H3) OrangePi ZERO(H2+) NanoPi M1(H3)
CughCo[LKvLB https://github.com/iboguslavsky/pwm-sunxi-opi0
vOSG90}CNT[{[^ 0 -90 +90 0 B cc -o pwmt pwmt.c pwm.c -lwiringPi sudo ./pwmt
T[{[^gASpXActivepXB void pwm_begin(float period) period : SpX(mSec)
void pwm_active(float period) period : ActivepX(mSec)
T[ovZXobNOEhNAR}hCT[{[^B
cc -o pwmd pwmd.c pwm.c -lwiringPi su ./pwmd & exit
cc -o pwmc pwmc.c ./pwmc 20.0 1.45 ./pwmc 20.0 2.35 ./pwmc 20.0 0.625
This is the library to use hardware PWM by a board of H3/H2+ base such as OrangePi and NanoPi. It works by the following board. OrangePi PC(H3) OrangePi ZERO(H2+) NanoPi M1(H3)
You have to make the following driver effective to use this library. https://github.com/iboguslavsky/pwm-sunxi-opi0
SG90 micro servomotor (http://akizukidenshi.com/download/ds/towerpro/SG90.pdf) works by the following program.
SG90 | Opi | |
---|---|---|
Vcc | -- | 5V |
Gnd | -- | GND |
PWM | -- | UART0_RX |
cc -o pwmt pwmt.c pwm.c -lwiringPi sudo ./pwmt
When using a servomotor, you can control with entire pulse width and active pulse width.
void pwm_begin(float period) period : entire pulse width(mSec)
void pwm_active(float period) period : active pulse width(mSec)
You can control servomotor from command-line with background server process like pigpio.
cc -o pwmd pwmd.c pwm.c -lwiringPi su ./pwmd & exit
cc -o pwmc pwmc.c ./pwmc 20.0 1.45 ./pwmc 20.0 2.35 ./pwmc 20.0 0.625
pwmc don't need delay time.