问题标签 [avr]

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 投票
5 回答
40893 浏览

hardware - AVR 和 Arduino 之间有什么区别/关系?

最近对硬件编程很感兴趣,但是还没有开始。

我做了一些搜索工作,并有一个模糊的想法:

Arduino 是芯片和面包板的组合。

AVR 是单芯片,需要购买面包板才能上手。

这种说法是真的还是假的?

0 投票
3 回答
5964 浏览

avr - 我的 AVR 闪存是否因太大的程序而溢出?

我有一个项目,其中一个 ATtiny2313V 正在控制一个 7x5 LED 矩阵来显示滚动文本。为了显示文本,我构建了一个字体,它与程序的其余部分一起存储在闪存中。

整个程序,包括整个字体,占用了 1106 个字节。但是当我将它加载到芯片中时,它似乎没有运行;相反,它只是点亮了几个 LED,仅此而已。

但是,当我删除大部分字体并仅使用字母 A 到 J 进行编译时,程序大小为 878 字节,并且运行良好。

这是因为 AVR 闪存的某种溢出吗?

ATtiny2313V 的数据表说它有 2KByte 的闪存!1106字节怎么会太多呢?

更新:为了清楚起见,我使用的工具链是 AVR Studio(用于编译代码),然后 AVRDude 将其上传到微控制器。据我所知,AVR Studio 使用一个版本的 avr-gcc 来编译代码。

0 投票
6 回答
14681 浏览

c - 8位枚举,C语言

我必须存储指令,我将通过串行接收的命令。命令的长度为 8 位。

我需要保持命令名称及其值之间的透明度。以避免必须将串行接收的 8 位数字转换为任何类型。

我想在我的代码中使用枚举来处理它们。在这个平台上,只有一个枚举对应一个 16 位整数。

该平台是 AVR ATmega169V 微控制器,在Butterfly 演示板上。它是一个 8 位系统,对 16 位操作的支持有限。它不是一个快速的系统,并且有大约 1KB 的 RAM。它没有文件 I/O 或操作系统之类的奢侈品。

那么关于我应该使用什么类型来存储 8 位命令有什么建议吗?
必须有比#defines 的大量标题更好的东西。

0 投票
9 回答
15005 浏览

list - 在嵌入式系统上使用动态数据结构有多糟糕?

因此,在我明年将在大学学习的嵌入式系统单元中,我们将了解到动态数据结构在嵌入式系统程序中是一件坏事。但是讲义没有说明原因。

现在我正在研究一个中等规模的嵌入式系统\“LURC”控制器,主要是利用 AVR169MEGA 的“蝴蝶”演示板的外围设备。产生4个PWM信号来控制伺服和ESC。并提供 9 段 LCD 屏幕。

现在我想不出比队列更好的方式来存储指令,因为它们是通过 USART 串​​行接收的。尤其是对于我需要等到收到未知数​​量的数据的事情:例如要在 LCD 屏幕上显示的字符串。

那么为什么不在嵌入式系统的微控制器上使用动态数据结构呢?仅仅是您处于内存严重受限的环境中,并且必须确保您的 malloc 成功吗?

0 投票
4 回答
6625 浏览

programming-languages - 移植到 AVR 架构?

自从我听说谷歌的新语言 Go 后,我就想用它来进行微控制器编程。特别是 Atmel AVR 微控制器,如 Atmega 系列。这种架构有 Go 端口吗?

0 投票
2 回答
2602 浏览

assembly - 如何使用 AVR 的 gnu 汇编程序相对于 PC 跳转?

我有一个使用 avr-objcopy 反汇编的二进制文件。中断向量表如下所示:

我想通过一些修改重新组装这个文件。我通过删除前 2 列对其进行了重新格式化,使其成为常规程序集文件。IE:

但是,当我跑步时

然后反汇编生成的文件。(使用 objcopy -S a.out)输出如下:

那么我怎样才能让 avr-as 尊重 PC 相关的跳跃呢?

0 投票
4 回答
37223 浏览

usb - 使用 USB 设备打开 PC

我希望能够使用通过 USB 连接到 PC 的 IR 远程传感器打开和关闭我的 PC。该传感器是使用 AVR 微处理器和 V-USB 软件 USB 实现实现的定制 PCB。

现在,用软件关掉电脑是没有问题的,但是有没有办法用USB打开电脑呢?

(请注意,我不是在谈论从 USB 记忆棒或 USB 电源启动...)

0 投票
9 回答
727 浏览

linux - 我想继续进行 µC 编程,但我完全不知道从哪里开始

我一直在考虑“继续”进行 MCU 编程,但问题是我从未使用过任何微控制器或类似产品。有人告诉我,AVR 和 PIC 是业余爱好者中最常见的微控制器,显然大多数人建议像我这样的新手使用 AVR,因为它的“C 友好架构”(不管这意味着什么)、它的 C 编译器和它的大型爱好者社区。AVR 或 PIC 或其他任何东西,对我来说并不重要,我只想能够在 Linux 上用一个好的编译器编写 C 代码,并最终能够在我的 MCU 上添加一个 LCD 屏幕(只是为了输出基本的 ASCII 字符,也许在这里和那里画几个像素,单色,没什么大不了的)。我不需要任何复杂或极快甚至大量的内存,因为我喜欢有限(但不是太有限)的东西,你需要一点创造力来实现目标。我在互联网上四处查看,但我发现的大多数页面都有几十年的历史和/或没有建议我可以购买任何好的“包装”(这将支持上面提到的东西)。这就是我问你的原因,希望你能帮助我一点。:)

谢谢,霍法。

0 投票
7 回答
9772 浏览

iphone - 无线通信:基于 AVR 的嵌入式系统和 iPhone

在嵌入式系统(基于 AVR 控制器)和 iPhone 之间实现无线通信的最佳方式是什么?我认为只有两种选择:WiFi 或蓝牙。范围并不是真正的问题,因为两个设备都应该放在同一个房间里。

我不知道,如果有任何有用的 WiFi 板可以连接到基于 AVR 的微控制器系统(或任何小型微控制器),任何提示都将受到高度欢迎。

我想更好的解决方案是蓝牙,但也有一个问题:哪个蓝牙板最适合连接到 AVR 系统,是否可以使用 iPhone 蓝牙堆栈通过蓝牙与 AVR 设备进行(串行)通信.

我希望有人已经实现了这样的系统并可以提供一些有用的提示......

0 投票
3 回答
2658 浏览

c - 函数指针位置未通过

我有一些针对 AVR 的 C 代码。代码是用 avr-gcc 编译的,基本上是带有正确后端的 gnu 编译器。

我想要做的是在我的一个事件/中断驱动库中创建一个回调机制,但我似乎在保持函数指针的值时遇到了一些麻烦。

首先,我有一个静态库。它有一个头文件 ( twi_master_driver.h),如下所示:

现在是 C 文件 ( twi_driver.c):

然后我将这两个文件构建到一个静态库 (.a) 中并构建我的主程序 ( main.c) #include #include #include #include #include "twi_master_driver.h"

我小心地触发导致中断触发的事件并调用适当的处理程序。使用一些 fprintfs,我可以看出函数中分配的位置twi->slave.slave_callbacktwi_init函数中的位置不同twi_slave_interrupt_handler

虽然数字没有意义,twi_init但值是 0x13b,twi_slave_interrupt_handler打印时值是 0x100。

通过在中添加注释的解决方法行twi_driver.c

问题消失了,但这显然是一个神奇且不受欢迎的解决方案。我究竟做错了什么?

据我所知,我已经标记了适当的 variables volatile,并且我尝试将其他部分标记为 volatile 并删除 volatile 标记。fprintf当我注意到在赋值后删除语句twi_init导致稍后以不同方式读取值时,我想出了解决方法。

问题似乎在于我如何传递函数指针——尤其是访问指针值的程序部分(函数本身?)在技术上位于不同的线程中。

有任何想法吗?

编辑:

  • 解决了代码中的拼写错误。

  • 链接到实际文件:http : //straymark.com/code/ [test.c|twi_driver.c|twi_driver.h]

  • fwiw:编译器选项:-Wall -Os -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -mmcu=atxmega128a1 -DF_CPU=2000000UL

  • 我已经尝试过直接包含的相同代码(而不是通过库),但我遇到了同样的问题。

编辑(第 2 轮):

  • 我删除了所有优化,没有我的“解决方法”,代码按预期工作。添加回 -Os 会导致错误。为什么 -Os 会破坏我的代码?