출처 : http://stackoverflow.com/questions/29369616/beaglebone-black-pwm-using-c
비글보드의 PWM이나 GPIO를 컨트롤 하기 위해서는 특정 파일을 접근하여 조작한다.
아래 예제 소스에서는 내 보드와 파일 이름이 달라(OS 버전별로 조금 다른가보다) 작동하지 않을 수 있지만 일단 프로그래밍 기법 참고용으로 저장한다.
내 보드에 맞는 파일은 예제 소스 아래에 기록한다.
내 보드에 맞는 파일 이름 및 PWM 컨트롤 순서
cape 등록 echo cape-universaln > /sys/devices/bone_capemgr.*/slots
핀설정 조회 config-pin -l P9.16
PWM 설정 config-pin P9.16 pwm
echo pwm > /sys/devices/ocp.*/P9_16_pinmux.*/state
pinmux 상태 확인 cat /sys/devices/ocp.*/P9_16_pinmux.*/state
export echo 4 > /sys/class/pwm/export
export pin
number, name, pins
0 EHRPWM0A P9.22,P9.31
1 EHRPWM0B P9.21,P9.29
2 ECAPPWM0 P9.42
3 EHRPWM1A P9.14,P8.36
4 EHRPWM1B P9.16,P8.34
5 EHRPWM2A P8.19,P8.45
6 EHRPWM2B P8.13,P8.46
7 ECAPPWM2 P9.28
echo 500000 > /sys/class/pwm/pwm4/duty_ns
echo 1000000 > /sys/class/pwm/pwm4/period_ns
echo 1 > /sys/class/pwm/pwm4/polarity
echo 1 > /sys/class/pwm/pwm4/run
run이 1인 상태에서 polarity 값을 바꿀 수 없다.
참고사항
cape 해제 : echo -cape번호 > /sys/devices/bone_capemgr.*/slots
부팅시 cape 등록 : uEnv.txt에 적으면 되지 않을까?????
비글보드의 PWM이나 GPIO를 컨트롤 하기 위해서는 특정 파일을 접근하여 조작한다.
아래 예제 소스에서는 내 보드와 파일 이름이 달라(OS 버전별로 조금 다른가보다) 작동하지 않을 수 있지만 일단 프로그래밍 기법 참고용으로 저장한다.
내 보드에 맞는 파일은 예제 소스 아래에 기록한다.
내 보드에 맞는 파일 이름 및 PWM 컨트롤 순서
cape 등록 echo cape-universaln > /sys/devices/bone_capemgr.*/slots
핀설정 조회 config-pin -l P9.16
PWM 설정 config-pin P9.16 pwm
echo pwm > /sys/devices/ocp.*/P9_16_pinmux.*/state
pinmux 상태 확인 cat /sys/devices/ocp.*/P9_16_pinmux.*/state
export echo 4 > /sys/class/pwm/export
export pin
number, name, pins
0 EHRPWM0A P9.22,P9.31
1 EHRPWM0B P9.21,P9.29
2 ECAPPWM0 P9.42
3 EHRPWM1A P9.14,P8.36
4 EHRPWM1B P9.16,P8.34
5 EHRPWM2A P8.19,P8.45
6 EHRPWM2B P8.13,P8.46
7 ECAPPWM2 P9.28
echo 500000 > /sys/class/pwm/pwm4/duty_ns
echo 1000000 > /sys/class/pwm/pwm4/period_ns
echo 1 > /sys/class/pwm/pwm4/polarity
echo 1 > /sys/class/pwm/pwm4/run
run이 1인 상태에서 polarity 값을 바꿀 수 없다.
참고사항
cape 해제 : echo -cape번호 > /sys/devices/bone_capemgr.*/slots
부팅시 cape 등록 : uEnv.txt에 적으면 되지 않을까?????