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

c - 如何让用户在我的库中提供自己的功能?

我正在为 AVR MCU 编写一个静态库。我正在使用 avr-gcc 和 AVR Libc。一些库函数使用 SPI 与设备通信。然而,SPI 通信在所有 AVR MCU 上的完成方式不同(并非所有 AVR MCU 都具有相同的相关寄存器)。它甚至可以通过大爆炸来完成。因此,我希望用户为其特定应用程序提供自己的 SPI 例程。

我怎样才能做到这一点?所有库函数都应该将回调函数作为附加参数吗?我应该在库中使用一个全局变量作为 SPI 处理程序吗?我应该将函数设为外部(使用extern)吗?

谢谢,

0 投票
2 回答
369 浏览

c99 - lufa 中的设备描述符...这是什么结构(内部)?我认为这没什么特别的,只是对 C/C++ 程序员的一个问题

我正在将LUFA用于一个项目,在阅读了一些示例后,我看到了其中一些构造。这些是宏吗?我知道 AVR 设备并且知道 PROGMEM 是其中之一?但是什么是 .Header 以及为什么它以“.”开头。

有人可以向我解释如何创建这样的结构或告诉我在 LUFA 文档中可以在哪里找到它们吗?

0 投票
8 回答
39858 浏览

microcontroller - 爱特梅尔 AVR 反汇编程序

有人可以建议我使用 Atmel AVR 8 位微控制器的反汇编程序吗?有开源项目吗?

谢谢。

0 投票
1 回答
294 浏览

avr - 遇到“启动失败,因为找不到二进制文件”

在 AVR32 Studio (2.6) 中,我正在尝试调试 AVR 项目,但收到错误消息“启动失败,因为找不到二进制文件”。

我可以在控制台中看到构建完成(一个可执行的 .elf 文件在构建文件夹中)并且我已经清理了我的项目,创建了一个新的构建配置,但我似乎仍然无法启动(和/或对芯片进行编程) ) 调试器。

0 投票
2 回答
1230 浏览

avr - 如何更换 ATMEGA88 的引导加载程序

我有一块带有 ATMEGA88 芯片的电路板,它的引导加载程序位于地址 0x1800,固件位于地址 0x0000。两者都可以访问 USB。引导加载程序可以编写新固件,但现在我需要编写新的引导加载程序。

当然,这在使用 AVR 编程器时没有问题,但是否也可以通过 USB 执行此操作?我的想法是通过旧的引导加载程序刷新一个特殊的固件,然后可以编写一个新的引导加载程序。那可能吗?如果是,如何?

我目前的尝试没有成功。所有命令(boot_page_erase、boot_page_fill 和 boot_page_write)都以与引导加载程序相同的方式成功执行(唯一的区别是它从索引 0x1800 而不是 0x0000 开始写入)但是当我重新启动设备时,旧的引导加载程序仍然存在所以没有真正写入闪存。

0 投票
1 回答
536 浏览

usb - 通过 USB OTG 连接对等点

我的问题是用支持 OTG 的 USB 接口连接两个相同的设备。这是一个简单的赠品,还是我必须使用任意时序模式手动启动和停止主机和设备模式,以便最终在另一个是 OTG 主机时在设备模式下命中?通过浏览几个 USB 堆栈生产商的 API,我不清楚对称连接是否可能。

问候,斯拉蒂

PS:设备是AVR32

0 投票
1 回答
328 浏览

arrays - 打印时为空数组

我正在为 AVR MCU 编写一些 C/asm 程序。我仍在学习,所以我希望我在代码中犯了某种错误。

volatile unsigned char suart_0_rx_buffer[SUART_0_BUF_SIZE+1];我在我的 asm 代码中访问的 C 代码中有一个缓冲区,如下所示。我要做的就是在缓冲区中存储一个字节并每次s0_Rxbyte递增指针。s0_index's0_Rxbyte` 始终是一个非零值。

如果我尝试在我的 C 代码中循环打印内容,我将一无所获。

我不想在这里附上所有东西,因为它会很混乱。

那么有人看到上面的 asm 代码有什么问题吗?

0 投票
5 回答
32373 浏览

linux - AVRISP MKII 不适用于 Linux 上的 AVRDUDE

当我插拔它时,系统看到有东西插入:

AVRISP MKII 应该依赖 cdc-acm:

所以它应该能够很好地看到它,但我无法写信给它。

退货

0 投票
1 回答
1199 浏览

assembly - 在 Arduino RTOS 上创建初始任务

我正在为学校的一门课程编写一个实时操作系统。我在获取初始进程的上下文切换(从操作系统到进程的切换)时遇到了很多问题,所以我简化了问题,试图找出我在哪里犯了错误。

在下面的代码中,我试图完成的是将 test_func 地址放在堆栈指针上,然后返回,从而将该函数的地址加载到程序计数器中。发生的事情是开发板正在重新调用 Arduino setup() 方法,该方法重复了整个过程。

这是按照此处的 FreeRTOS 项目指南(pdf) 中的示例完成的。我在 Arduino IDE 中将其编写为 C 文件。非常感谢您的任何意见。

编辑:

尝试另一个更简单的例子。我正在查看 Bertos 的实现:http ://dev.bertos.org/wiki/ArduinoHowto 。我从一个新的草图开始:

0 投票
1 回答
1348 浏览

sleep - Failed TWI transaction after sleep on Xmega

we've had some troubles with TWI/I2C after waking up from sleep with the Atmel Xmega256A3. Instead of digging into the details of TWI/I2C we've decided to use the supplied twi_master_driver from Atmel attached to AVR1308 application note.

The problem is one or a few failed TWI transactions just after waking up from sleep. On the I2C-bus connected to the XMega we have a few potentiometers, a thermometer and an RTC. The XMega acts as the only master on the bus.

We use the sleep functions found in AVRLIBC:

The XMega as woken from sleep by the RTC which sets a pin high. After the XMega is woken from sleep, we want to set a value on one of the potentiometers, but this fails. For some reason, the TWI-transaction result is TWIM_RESULT_NACK_RECEIVED instead of TWIM_RESULT_OK in the first transaction. After that everything seems to work again.

Have we missed anything here? Is there any known issues with the XMega, sleep and TWI? Do we need to reset the TWI of clear any flags after waking from sleep?

Best regards Fredrik