Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Hardware PWM on Orange Pi Zero H2+ updates very slowly with script

Featured Replies

I'm running the latest 5.10.21-sunxi kernel. I figured out how to use the PWM pin with the help of this post.

 

I have an LED connected to the PWM pin and when I run for example:

sudo sh -c "echo 250 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle"

the LED updates instantly. But when I try to fade the LED with a script, the LED always takes 6 seconds to update.

 

This is the script:

#!/bin/bash

#Export PWM channel for user control.
sh -c "echo 0 > /sys/class/pwm/pwmchip0/export"

#Select the period of PWM signal. Value is in nanoseconds.
sh -c "echo 500 > /sys/class/pwm/pwmchip0/pwm0/period"

#Change the polarity of the PWM signal.
#The polarity can only be changed if the PWM is not enabled.
sh -c "echo "normal" > /sys/class/pwm/pwmchip0/pwm0/polarity"

#Enable the PWM signal.
sh -c "echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable"

for i in {0..500}
do
        sh -c "echo $i > /sys/class/pwm/pwmchip0/pwm0/duty_cycle"
        cat /sys/class/pwm/pwmchip0/pwm0/duty_cycle #Just for debugging
        sleep 0.1
done

#Disable the PWM signal.
sh -c "echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable"

#UnExport PWM channel for user control.
sh -c "echo 0 > /sys/class/pwm/pwmchip0/unexport"

 

I hope someone can help me. It's so hard to find any resources for this sort of thing.

Solved by Zeko9381

  • Author
  • Solution

Ok, this was a pretty dumb post. This example that I found seems to be incorrect. The value for the period isn't in nanoseconds, but in picoseconds, so the correct value would actually be 500000. 500 picosecond period would mean a frequency of 2 MHz, which is way too high. The problem wasn't that the LED took too long to update, but that the resolution at this frequency was way too low.

Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.