我正在尝试在启动时使我的Beaglebone Black(BBB)输出pwm。从命令行启动时,程序正确运行。但是,当我尝试让程序在启动时运行(使用cron)时,引脚的输出很高。
以下是我正在运行的代码:
#!/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频率下也有同样的问题。我也尝试在“@reboot”和“python”之间将“sudo”放在cron文件中,但这并没有改变任何东西。可能会发生什么想法?
编辑:我也尝试编写一个脚本来运行我的python程序并将其放在/etc/init.d中(就像在本教程中所做的那样:http://www.pietervanos.net/knowledge/start-python-script-from-init-d/)并且我正好与上述相同的问题。
答案 0 :(得分:0)
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 * * * root test -x / usr / sbin / anacron || (cd /&& run-parts --report /etc/cron.daily)
47 6 * * 7根测试-x / usr / sbin / anacron || (cd /&& run-parts --report /etc/cron.weekly)
52 6 1 * * root test -x / usr / sbin / anacron || (cd /&& run-parts --report /etc/cron.monthly) #
所以我认为像这样的命令会起作用
* * * * * root python /root/exo_code/fes_control.py
答案 1 :(得分:0)
好吧我明白了。事实证明,我正在运行的代码需要一些在启动时运行代码时没有启动的东西。我在python代码的开头添加了10秒的延迟,现在它在启动时完美运行:)