我正在尝试在启动时使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频率下也有同样的问题。我还尝试将"sudo"放在cron文件中的"@reboot"one_answers"python"之间,但这并没有改变任何内容。有什么想法吗?
编辑:我还尝试编写一个脚本来运行我的python程序,并将其放在/etc/init.d中(就像本教程中所做的那样:http://www.pietervanos.net/knowledge/start-python-script-from-init-d/)我遇到了和上面完全相同的问题。
好吧,我想明白了。事实证明,我正在运行的代码需要一些在启动时运行代码时没有初始化的东西。我在python代码开始时添加了10秒的延迟,现在它在启动时可以完美工作:)
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***根cd/&;运行部件--报告/etc/cron.hourly
25 6***根测试-x/usr/sbin/anacron||(cd/&&run parts--report/etc/cron.daily)
476**7根测试-x/usr/sbin/anacron||(cd/&&运行部分--report/etc/cron.weekly)
52 6 1**根测试-x/usr/sbin/anacron||(cd/&&运行部件--报告/etc/cron.monthly)#
所以我认为像这样的命令会起作用
* * * * * root python /root/exo_code/fes_control.py