Beaglebone Black pwm 在启动时使用 cron 保持高电平 (python)
Beaglebone Black pwm at startup using cron just stays high (python)
我试图在启动时使我的 Beaglebone Black (BBB) 输出 pwm。从命令行启动时程序 运行s 正确。但是,当我尝试在启动时(使用 cron)将程序设置为 运行 时,引脚的输出就很高。
这是我的代码 运行ning:
#!/usr/bin/python
import Adafruit_BBIO.GPIO as GPIO #import GPIO library
import Adafruit_BBIO.PWM as PWM #import PWM library
#Boost Converter Control
boost_frequency = 1000000 #in Hz, 1000000 = 1MHz
boost_duty_cycle = 50 #in % (0-100)
PWM.start("P8_13", boost_duty_cycle, boost_frequency)
我在 /root/exo_code
中将其保存为 fes_control.py
当我使用以下命令从命令行 运行 它时,我在输出中得到正确的 pwm:
python fes_control.py
我希望能够在启动时运行这个。
我在命令行中输入了以下内容:
sudo crontab -e
这会打开一个文件,我在底部添加了以下行:
@reboot python /root/exo_code/fes_control.py &
然后我保存退出。
然而,当我重新启动 BBB 时,引脚的输出一直处于高电平。我在 1kHz pwm 频率下有同样的问题。我还尝试将 "sudo" 放在 cron 文件中的“@reboot”和 "python" 之间,但这并没有改变任何东西。知道会发生什么吗?
编辑:我还尝试为 运行 我的 python 程序编写一个脚本并将其放入 /etc/init.d(就像本教程中所做的一样:http://www.pietervanos.net/knowledge/start-python-script-from-init-d/) 我遇到了与上述完全相同的问题。
crontab 一般用于指定任务执行的时间 运行
您的命令缺少时间说明符
$nano /etc/crontab
将向您展示一些示例。这是我的
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * 根测试-x
/usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47
6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts
--report /etc/cron.weekly )
52 6 1 * * 根测试-x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
所以我认为这样的命令可以工作
* * * * * root python /root/exo_code/fes_control.py
好的,我明白了。事实证明,我 运行ning 的代码需要一些在代码 运行 启动时没有初始化的东西。我在 python 代码的开头添加了 10 秒的延迟,现在它在启动时完美运行:)
我试图在启动时使我的 Beaglebone Black (BBB) 输出 pwm。从命令行启动时程序 运行s 正确。但是,当我尝试在启动时(使用 cron)将程序设置为 运行 时,引脚的输出就很高。
这是我的代码 运行ning:
#!/usr/bin/python
import Adafruit_BBIO.GPIO as GPIO #import GPIO library
import Adafruit_BBIO.PWM as PWM #import PWM library
#Boost Converter Control
boost_frequency = 1000000 #in Hz, 1000000 = 1MHz
boost_duty_cycle = 50 #in % (0-100)
PWM.start("P8_13", boost_duty_cycle, boost_frequency)
我在 /root/exo_code
中将其保存为 fes_control.py当我使用以下命令从命令行 运行 它时,我在输出中得到正确的 pwm:
python fes_control.py
我希望能够在启动时运行这个。
我在命令行中输入了以下内容:
sudo crontab -e
这会打开一个文件,我在底部添加了以下行:
@reboot python /root/exo_code/fes_control.py &
然后我保存退出。
然而,当我重新启动 BBB 时,引脚的输出一直处于高电平。我在 1kHz pwm 频率下有同样的问题。我还尝试将 "sudo" 放在 cron 文件中的“@reboot”和 "python" 之间,但这并没有改变任何东西。知道会发生什么吗?
编辑:我还尝试为 运行 我的 python 程序编写一个脚本并将其放入 /etc/init.d(就像本教程中所做的一样:http://www.pietervanos.net/knowledge/start-python-script-from-init-d/) 我遇到了与上述完全相同的问题。
crontab 一般用于指定任务执行的时间 运行
您的命令缺少时间说明符
$nano /etc/crontab
将向您展示一些示例。这是我的
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * 根测试-x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * 根测试-x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
所以我认为这样的命令可以工作
* * * * * root python /root/exo_code/fes_control.py
好的,我明白了。事实证明,我 运行ning 的代码需要一些在代码 运行 启动时没有初始化的东西。我在 python 代码的开头添加了 10 秒的延迟,现在它在启动时完美运行:)