问题标签 [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 投票
2 回答
392 浏览

c++ - c++ 类构造函数自动将对象映射到事件处理程序

我目前正在为我的 beaglebone 做一个小项目。本质上,目标是创建一个框架,它提供了 c++ 的全部功能,而不是 beaglebone 的股票 javaScript 框架,但也像 arduino 框架一样易于开发人员使用。

我构建的其中一件事是针对不同类型的简单 GPIO 中断(如按钮、旋转编码器等)的预制类,因此开发人员只需定义一个按钮,并告诉它它连接的 beaglebone 上的哪个 GPIO 引脚。

现在我必须手动将中断对象的 pollInterupt() 函数添加到主循环中,以便程序可以反复检查中断 GPIO 引脚的状态。

问题来了:我想在按钮的类构造函数中添加代码,定义后会自动将自身传递给后台的中断处理程序,以重复运行新对象的 pollInterupt() 函数,因此开发人员永远不必这样做比定义按钮更复杂的事情。

不过,我似乎正在撞墙。试图让最终用户的框架变得简单,这意味着幕后的代码变得非常复杂。我能想到的自动处理定义的中断对象的最好方法是链接列表。这就是原型代码目前的样子。

系统似乎正在工作,interuptButton 构造函数成功地将新创建的对象传递给 interuptHandler 的链接列表,然后它可以在 run() 函数中打印内存地址并输出:

问题是当我取消注释 run() 中的任何其他行时,我尝试访问指针对象的变量或函数,g++ 开始抛出错误。

前两行返回:

第三行返回:

任何有关如何通过指针访问这些对象变量和函数的建议都将不胜感激。

更好的是,如果有人有更好的方法来自动将对象发送到幕后事件处理程序,我会全力以赴。

0 投票
1 回答
2486 浏览

linux - 通过 GPIO 信号启用从睡眠模式唤醒

我需要通过 GPIO 信号将运行 Angstrom OS 的 BeagleBone 设备从睡眠模式唤醒。

我读到使用/sys/class/gpio/gpioXX/power/wakeup是方法。问题是电源目录下没有任何“唤醒”文件。那么,我应该如何进行激活呢?有没有不重新编译内核的解决方案?

我可以从 GPIO 值中很好地读取,所以 GPIO sysfs 正在工作。

0 投票
1 回答
1660 浏览

microcontroller - 发送UART中断

我需要与需要 UART 在其 RXD 引脚(我的 TXD)上中断 1 秒的芯片交谈。

我使用 ZW0301 控制器,它的 UART 控制器支持中断命令。是否可以模拟break 命令?禁用 UART 控制器(将引脚置于 GPIO 模式)并将 TXD 置于低电平可能就足够了。或者这行不通?

一个好的描述的链接表示赞赏。

0 投票
3 回答
1248 浏览

embedded - 使用起重机板中的 GPIO 点亮 LED

我想使用 GPIO 打开起重机板(ARM 处理器)中的 LED。我对嵌入式编程很陌生。但是,我很擅长C。我参考了一些网站并了解了GPIO相关命令。我写了一个代码,但我不太确定如何将它集成到起重机板的 u-boot 编码中。我不知道从哪里开始。请指导我。

0 投票
4 回答
154 浏览

c - 错误:结构未正确定义

我正在用 beaglebone 做一些 GPIO,目前在我的代码中有这个:

其中 gpio#, 都定义为整数。GPIOF_DIR_OUT 和 GPIOF_DIR_LOW 是“linux/gpio.h”中的函数。

该结构未在函数内部声明。我相信这是我的问题,但我不确定它是如何被宣布为错误的。我已经看到了其他线程,但对我的问题没有任何帮助。我认为问题在于我正在从我的结构中调用一个函数。如果有人可以验证或帮助我解决这个问题,那就太好了。

0 投票
2 回答
2304 浏览

linux-kernel - 用于暂停/恢复的 GPIO?

尽管我阅读了一些关于GPIOs的文档,但我仍然无法理解GPIOs顶级多路复用。

从代码中,我看到在该特定驱动程序的挂起/*resume* 回调期间,专用设备的少数GPIO(如IntReset Pins )被多路复用。我想知道这个gpio多路复用究竟做了什么以及它如何影响系统的挂起/*resume*?

0 投票
2 回答
9173 浏览

linux - 启用上拉 GPIO

我正在使用具有 4 个 PIO 控制器的 AT91SAM9G25 板,可管理多达 32 条可编程 I/O 线。每个引脚可配置为仅通用 I/O 线或多路复用至两个外围 I/O 的 I/O 线。因此,例如,根据文档(SAM9G25,第 14 页),信号 PC0 可以多路复用,例如通用 I/O 线或 VIDEO_ATMEL_ISI(图像传感器接口的 ISI)的 ISI_D0 线。

所有 GPIO 线的复位状态为方向 IN 和上拉使能。当我通过 sysfs 使用 GPIOLIB 时,由于上拉,我在几个 GPIO 中读取了一个“1”值作为 INPUT。这是 GPIO(带上拉电阻的输入)在多个板中复位时的正常安全状态,当它们可以与其他外设复用时?我看不到如何使用 GPIOLIB 通过用户空间禁用上拉。例如,我看到当内核启动时,它会检查图像传感器外设是否在内核或作为模块启用,如果是,它将 PC0 设置为外设 B。这是在 /arch/arm/mach 的内核源代码中-at91/at91sam9x5_devices.c

然后,如果我不在内核中启用 ISI 支持,我可以将 PC0 信号用作 GPIO 线。这是 /sys/kernel/debug/gpio:

这是 /sys/kernel/debug/at91_gpio

上面的输出表明 PIOA0 多路复用到外设 A(TXD0 UART 线),例如 PIOC20 被清除,但文档说所有处于复位状态的 GPIO 线都是带上拉的输入,我找不到内核或 u-boot 禁用的位置这个 GPIO 的上拉(如果没有人接触他的寄存器,也许 GPIO 会保持它们的状态?)

但他的主要问题是,我怎样才能清除 GPIO 线的上拉寄存器?我在内核源代码中发现 /arch/arm/mach-at91/at91sam9x5_devices.c 使用了在 linux-2.6.39/arch/arm/mach-at91/gpio.c 中实现的这个函数。

头文件arch/arm/mach-at91/include/mach/gpio.h

如何在我的工具链中使用这些功能,或者我应该制作一个内核模块?

谢谢

PD:对不起,我的英语有任何错误,我知道我需要改进它。

0 投票
1 回答
1488 浏览

linux-kernel - Beaglebone 中的 do_gettimeofday() 给出了错误的时间

我正在尝试在运行 Angstrom OS 的 Beaglebone 上测量方波的时间段。我编写了一个内核驱动程序来注册一个 ISR,我在其中对脉冲进行计时。一切正常,但测量的时间间隔完全错误。我正在使用 do_gettimeofday() 函数来测量时间。当我在用户空间程序中使用 poll() 函数执行相同操作时,我能够获得正确的值(对于 1000us 波它显示大约 1007us),但是当我使用驱动程序测量脉冲时,我得到的间隔为1923 年。我不知道为什么内核中的时间间隔高于用户空间中的时间间隔。我在下面附上了我的代码。如果有人能在我的程序中找到错误,我将不胜感激。

内核 ISR:

用户空间编:

0 投票
0 回答
277 浏览

python - Use python to parse a log file and print to LCD using GPIO on Raspberry Pi

I am new to python so please forgive me in advance ;-) I am trying parse a log file for a name that always occurs after a known word and print that name to an LCD using the GPIO library. I have the LCD working and can print a given message but not sure how to use python to grep the log file and output that information to the LCD. Any help would be great, thanks...

0 投票
1 回答
1689 浏览

python - 使用 tkinter 延迟的 Python 建议

我使用 tkinter 创建了 GUI,它将在 RaspberryPi 上运行并执行各种操作,例如点亮 LED。我遇到的问题是使用 root 来打开和关闭 LED。在调度之后,就像我使用 time.sleep() 一样,GUI 将在此睡眠时冻结。这是我的代码,下面我想用大约 500 毫秒的某种延迟替换 time.sleep()。

谢谢

这是一种解决方案,但看起来很混乱: