问题标签 [winavr]

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 回答
607 浏览

c - 如果未定义宏,如何闪烁错误?

如果程序本身没有定义它,我希望我的程序闪现编译时错误,如“LCD_PORT 未定义”。为此,我像这样修改了头文件

但即使在定义 LCD_PORT 之后(如以下程序中),它也会闪烁错误。

0 投票
1 回答
76 浏览

winavr - ICCV7-AVR 的代码在文本编辑器中显示乱码?

我为 Atmega64 编写了代码,带有“ICCV7 for AVR”(Atmel AVR 的 C 交叉编译器),

我也可以用 sourceInsight 打开和编辑它,

但是当我用文本编辑器(Windows上最常见的)打开它时,它都是乱码。

我能做些什么 ?

提前非常感谢。

0 投票
1 回答
1506 浏览

c - 来自小型 AVR 程序的大 hex 文件

我现在正在教我的朋友如何对 AVR 微控制器进行编程。我们编写了这个小程序,它发送简单的类似莫尔斯电码。

问题是,在用 AVR-GCC 和 WinAVR 编译之后,a.out 文件几乎是 30KB,而 hex 文件是 11KB,所以它不适合 attiny2313 闪存。

WinAVR 命令:avr-gcc -mmcu=attiny2313 -Os -g main.c

avr-objcopy:avr-objcopy -O ihex a.out a.hex

这是代码:

0 投票
1 回答
1524 浏览

avr - AVRDUDE 不写闪存

我遇到了AVRDUDE的问题。它甚至不尝试将十六进制文件写入 AVR。在WinAVR中没有问题。(我不能使用 WinAVR,因为我只有 hex 文件。)

avrdude.exe、avrdude.conf 和 main.hex 文件位于同一文件夹中。

SAJAT 是我的 DASA 编程器版本(不同的引脚分配),这很好用。目标是具有外部 12 MHz 时钟的ATtiny2313 。我在 Windows 7 64 位上使用 AVRDUDE 6.1。

写入保险丝位有效。

这里有什么问题?

0 投票
2 回答
8090 浏览

visual-studio-2013 - 使用 Visual Studio 为 AVR 编写代码

我正在使用 Visual Studio 2013 为 AVR 编写代码。我一直在关注教程。

在编写代码时,我注意到 Visual Studio 一直在强调诸如DDRB或之类的内容,PORTB并且我不断收到诸如 之类的错误Error: identifier "PORTB" is undefined,但是,程序可以正确编译。

有趣的是,按下alt- F12Visual 会找到许多定义它们的文件。

0 投票
2 回答
1542 浏览

embedded - 取回 Arduino 闪存的内容

我在 Arduino uno 上烧了一个代码,我想取回这个代码的十六进制文件?!

我怎么能做到这一点?!

0 投票
1 回答
1925 浏览

embedded - 如何使用 USB 转串口编程器对 ATmega32 进行编程

我在主机为 ubuntu 的虚拟机中使用 winxp。连接到主机的 USB 编程器被路由到来宾。我使用使用 avrdude 的 WinAVR;makefile 中的相关字段为处理器的 Atmega32,USB 的端口和 stk200 的编程器。它仍然说找不到设备“usb”。请帮忙。

0 投票
1 回答
650 浏览

eclipse - 来自 winavr 的贪婪不适用于 USB jtagice3

我正在使用带有 Eclipse 的 win-avr 使用 ATxmega256a3bu devie 构建和调试我的项目。当我尝试使用以下命令使用贪婪调试代码时:

它显示以下错误

如何在 Windows 中使用贪婪检测 jtagice3?

0 投票
1 回答
1430 浏览

c - How to convince avr-gcc, that the memory position of a global byte array is a constant

I writing a fast "8 bit reverse"-routine for an avr-project with an ATmega2560 processor. I'm using

  • GNU C (WinAVR 20100110) version 4.3.3 (avr) / compiled by GNU C version 3.4.5 (mingw-vista special r3), GMP version 4.2.3, MPFR version 2.4.1.

First I created a global lookup-table of reversed bytes (size: 0x100):

This works as expected. That is the macro I intend to use, which should cost me only 5 cylces:

The code to get it compiled (or not).

That's the error I get from the compiler:

I guess the problem is here:

From my point of view BitReverseTable is the memory position of the array, which is fixed and known at compile time. Therefor it is constant. Maybe I need to cast BitReverseTable into something (i tried anything I could think of). Maybe I need another constraint ("g" was my last test). I'm sure I used anything possible and impossible. I coded an assembler version, which works fine, but instead of being an inline assembly code, this is a proper function which adds another 6 cycles (for call and ret).

Any advice or suggestions are very welcome!

Full source of bitreverse.c on pastebin. Verbose compiler output also on pastebin

0 投票
1 回答
510 浏览

c - lpm rd,Z 在 gcc-avr 的内联汇编中始终转换为 lpm rd,Z+

这是对此的后续问题。我正在__AVR_HAVE_LPMX__使用为处理器(avr25)编写代码

  • GNU C (WinAVR 20100110) 版本 4.3.3 (avr) / 由 GNU C 版本 3.4.5 (mingw-vista special r3)、GMP 版本 4.2.3、MPFR 版本 2.4.1 编译。

当我在内lpm rd, Z联汇编中使用时,编译器总是将其转换为lpm rd,Z+(摘自 lss 文件):

这很糟糕,如果它用于连续访问查找表。查找值可能是0xff,因此这会不必要地增加ZH( r31) 从而破坏此解决方案

有什么建议可以规避这种行为吗?