使用cron启动时的Beaglebone Black pwm保持高位(python)

时间:2015-12-22 05:37:40

标签: python cron beagleboneblack

我正在尝试在启动时使我的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/)并且我正好与上述相同的问题。

2 个答案:

答案 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秒的延迟,现在它在启动时完美运行:)