问题标签 [gpio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
51503 浏览

python - Raspberry Pi - Python 中的 GPIO 事件

我使用 Raspberry Pi 上的 GPIO 引脚和 PIR 传感器来检测运动。当传感器检测到运动时,我想将软件移动到其他功能上。

目前,为了检测运动,我的程序在等待检测运动时不断循环运行。虽然这目前有效,但对于将来的使用来说,这将是非常低效的,我希望通过将其分配给一个事件来改进这一点。

有什么方法可以将我的 GPIO 输入绑定到程序检测到的事件,而无需手动运行循环。

这是我当前用于检测运动的循环:

计数器和多次检测运动用于减少传感器拾取的误报数量。

0 投票
1 回答
531 浏览

asynchronous - 如何在 Xenomai 中读取 GPIO 时钟信号?

我在 ARM PC(Xenomai 2.5.6 - Linux Kernel 2.6.35.9)中安装了 Xenomai,我需要读取 10 kHz 时钟信号。该信号与我的一个 GPIO 电连接,该 GPIO 映射到系统文件。如果我在用户空间创建一个任务并在测量时间时打开-读取-关闭文件,我会得到 650 µs 的平均延迟(即,这是一个完整的打开-读取-关闭周期的时间)。这产生了约 1.5 kHz 的采样率。

输出:

我在 Internet 上的某个地方读到,强制我的任务在内核空间而不是用户空间中运行可以使其执行速度更快,但我不确定这是否足够,也不知道我正在尝试什么在这里做是完全正确的。

我来自电子工程背景,我一直被告知不要异步处理同步信号(如时钟信号),并使用可能会根据 CPU/系统引入抖动的周期性任务读取文件(即我的同步信号)加载,看起来不是一个好方法。有更好的方法吗?

谢谢!

0 投票
2 回答
1618 浏览

linux - 如何从 linux 内核内部生成稳定的 37kHz GPIO 触发器?

我目前有一个负责红外 TX 载波生成的微控制器,但我开始想知道我是否可以处理它,并在 linux 端完成这项工作——从而降低我的嵌入式系统的成本。

我在飞思卡尔 i.mx233 (454MHz ARM9) 上运行,如果我直接通过 访问注册表/dev/mem,我可以实现相当稳定的 5MHz 触发到 GPIO 引脚。

因为我需要 37kHz,所以我开始寻找减慢它的方法,但似乎至少nanowait()对于这个目的来说太粗糙了。我找到了一种在 for 循环中调用 rand() 的解决方案,我似乎能够很好地生成 38.4kHz 信号,但是根据示波器有时会出现一些不可接受的抖动。(我知道这样比较浪费资源,但是需要TX的时候,系统真的没有其他任务了)

我的问题:飞思卡尔内核代码(3.8 分支)没有 CONFIG_PREEMPT_RT 补丁,所以这是我应该研究的一件事,但在此之前:

  • 我可以通过编写内核模块从内核内部驱动 GPIO 来获得更准确的性能吗?我确实需要从用户空间读取一些数据(要发送的数据),但除此之外,我只需要在 GPIO 末尾以指定频率触发 LED,因此驱动程序应该非常简单。

  • 我可以强制我的驱动程序的优先级,以便其他任务不会中断这个 gpio 触发吗?(数据发送目前大约需要 400ms,而且很少完成)

  • 有没有更好的方法可以每隔 37kHz 创建一个中断,这样我就不会因为 SW 停止系统?

微控制器非常适合此类任务,但如果可能的话,最好避免这种成本开销......

0 投票
1 回答
301 浏览

php - ajax/php 无法编辑文件

我正在开发一个网页,该网页应该读取和更改服务器上特定文件的内容。

这些文件只有两个值:1 或 0。读取/更改内容将通过带有OnChange. 基本上,这个想法是通过通用输入/输出 (GPIO) 来控制电器。电子部分已经完成,我只需要完成网络编程部分并卡在上面。

我完全没有编程经验,但是通过到处找到一些片段,我能够使用 AJAX/PHP 实现其中的一部分。

到目前为止,我能够读取这些值,但即使我正在使用“escapeshellarg”构建正确的命令,也无法更改它。

另外,我希望页面中有两个交互区域,但只有原始区域在工作。

谁能指出我正确的方向?欢迎任何帮助/建议/评论。


pqp6.php



获取信息.php:



0 投票
3 回答
7394 浏览

php - PHP 中的 awk 等价物

我正在尝试让我的 php 脚本读取配置文件。我可以使用 file 命令打开文件并将其每一行加载到每个数组位置。但是,现在我需要分析每一行但找不到读取每个字段的方法,比如 awk 等价物。

配置文件是这样的:

我的 php 脚本是这样的:

我需要的是类似 awk '{print $1}',但能够读取 PHP 数组...

有什么想法/建议吗?

0 投票
6 回答
36118 浏览

beagleboard - 配置引脚模式 Beaglebone

在 beagleboard 或 beaglebone 中有不同的模式来工作 pin。对于以前的内核,它们位于 /sys/kernel/debug/omap_mux 中。你知道最后一个内核这些文件在哪里吗?

0 投票
2 回答
1145 浏览

linux-kernel - 端口 B GPIO ep93xx/gpio.c 中断问题

我遇到了 gpio 中断问题。根据 ep93xx 端口 A、B、F 的文档,可以配置为生成中断。引用:

19 条 GPIO 线中的任何一条都可以配置为生成中断

然而,arch/arm/march-ep93xx/gpio.c 只处理来自端口 A 的中断。并且不对端口 B 和 F 做出反应。

我知道 printk 在 irq_handlers 中很糟糕。

我正在通过 sysfs 配置 iterrupts。

如果发布很重要,GPIO 0,8 与端口 F 连接。此外,在未配置端口 A 的情况下在端口 B 上启用中断时,我会收到以下警告:

我正在使用带有 linux-2.6.34-ts7200_matt-6.tar.gz 补丁的内核版本 2.6.34.14(但是它似乎不包含 gpio.c 或 gpiolib.c 的补丁)交叉版本:

我还浏览了 gpio.c 和 gpiolib.c 的更改历史记录,但没有找到与此问题相关的任何内容。

有人可以就这个问题给我和建议吗?我想要所有端口(A,B,F)的中断,而不仅仅是 A。

0 投票
1 回答
691 浏览

python - Python 如何从我的电子邮件收件箱切换 GPIO

所以我已经开始着手编程一些东西,每当我收到一封电子邮件时,它会切换 GPIO 以打开 LED,有人可以帮我弄清楚如何在我的 Raspberry Pi 上切换 GPIO。这是我到目前为止所拥有的

0 投票
1 回答
2354 浏览

assembly - 访问树莓派的 gpio 地址时出现分段错误

我一直在关注本教程 http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok01.html 并且因为我想在不更换操作系统的情况下控制 gpio,所以我只想编译汇编代码,然后像程序一样运行它,

我改变了程序的开始,

然后在 Pi 上做这些

但是当我这样做时

我遇到了分段错误

当我这样做的时候

没有分段错误,但它什么也不做,它假设永远点亮 LED 然后循环,请帮助我将不胜感激有关如何使用 ARM 程序集访问 gpio 而无需替换 kernel.img。

0 投票
3 回答
9472 浏览

python - 使用树莓派的 gpio 引脚控制风扇

我想知道是否可以通过 GPIO 引脚控制我的风扇(连接到树莓派板上)。

基本上,我想要一个脚本来监控芯片的温度并在超过 45'C 时打开风扇。我的风扇用 12v AC 外部供电。

是否可以将 GPIO 引脚用作开关。