问题标签 [avr-gcc]

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 投票
6 回答
37673 浏览

c - 将两个 ASCII 十六进制字符(两个 ASCII 字节)转换为一个字节

我想将两个 ASCII 字节转换为一个十六进制字节。例如。

0x30 0x43 => 0x0C , 0x34 0x46 => 0x4F...

ASCII 字节是介于 and 之间的数字或介于 and0之间9的字母(仅限大写字母),因此介于...和...AF0x300x390x410x46

我知道如何用0x4F数字“构建”0x340x46 : 0x4F = 0x34 * 0x10 + 0x46

所以,事实上,我会将一个 ASCII 字节转换为十六进制值。

为此,我可以构建和排列以将十六进制值分配给 ASCII 字符:

但是,也许它有一个最“正确”的解决方案。

该程序将在 AVR µC 上运行并使用 编译avr-gcc,因此scanf()/printf()解决方案不适合。

你有想法吗?谢谢

0 投票
2 回答
3098 浏览

gcc - GCC 内联汇编:让编译器决定使用哪个寄存器来存储临时值

我需要加载 18h 并将其输出到端口 60h,以下工作(在 asm("") 内)。

我不在乎寄存器 r1 或任何其他是否用于此目的。有没有一种简单的方法让编译器决定使用哪个寄存器?

我可以使用外部 r/w 变量,但它会产生一些不必要的开销:

这适用于 AVR atmega(8 位)处理器。使用 GCC 4.3.2

0 投票
2 回答
1809 浏览

eclipse - Xcode 4 的 AVR?

有没有人成功使用 xcode 4 作为 AVR 微控制器的 IDE?是否可以与 eclipse 的插件具有相同数量的集成?

0 投票
2 回答
826 浏览

gcc - GCC (AVR) 汇编:减去标签地址

我正在努力完成:

我需要从寄存器中减去标签的地址。我怎么做?

0 投票
1 回答
4050 浏览

timer - Avr-gcc:定时器/计数器中断与 UART 冲突?

请考虑以下示例(在 Arduino IDE 0022、Ubuntu 11.04、Arduino AtMEGA 2560 上尝试过),我正在尝试启动定时器/计数器中断并同时使用 ArduinoSerial类:

例如,通过串行打印输出将是:

...然后所有处理都将停止(由 LED 引脚 13 和 34 都没有动作表示);我想,这就是你在芯片世界中所说的 BSOD :) 从表面上看,一旦 ISR 例程第一次启动,就会停止。

如果您取出“寄存器更新部分”,则串行打印输出会按预期永远运行 - 而且(如预期),没有 ISR 正在运行。然而,如果“寄存器更新部分”被留下,而两条“ Serial.println(...”行被注释了——那么程序只打印“Hello from setup”——但中断确实运行(如引脚 34 上的脉冲所证明的那样)。

这似乎告诉我,你不能同时在 ATMega2560 上运行定时器 ISR 和 UART——这很愚蠢,因为我之前曾成功地在 ATMega328 上使用过同样的方法。

所以,我想知道我想要做的事情(串行打印输出和引脚脉冲)在这种架构下是否根本不可能 - 或者我只是在设置中遗漏了一些东西?

提前感谢您的任何答案,干杯!

(只是想注意这个 Serial 类实际上是在 Arduino IDE 包中 HardwareSerial.cpp 中的一个类定义上运行的;并且这个类定义了接收 USART 中断例程;认为这可能是问题所在 - 但我再次使用了相同的方法在 ATMega328 中,我看到它工作的地方..)

编辑:在Avr-gcc 上重新发布:定时器/计数器中断与 UART 冲突?- Arduino 论坛

0 投票
4 回答
37322 浏览

c - 将 unsigned char * (uint8_t *) 转换为 const char *

我有一个带有 uint8_t * 参数的函数:

我将此功能用于:

但在这种情况下,我的编译器(avr-gcc)返回一个警告:

main.c|89|警告:传递 'strlen' 的参数 1 的指针目标在符号上不同 /usr/include/string.h|399|注意:预期的 'const char *' 但参数的类型是 'uint8_t *'

因此,我通过类型转换数据 var 找到了解决方案:

警告消失了,但我想知道这个解决方案是否安全。

有没有更好的办法 ?

谢谢

0 投票
4 回答
60615 浏览

c++ - 对“操作员删除(void *)”的未定义引用

我是 C++ 编程的新手,但已经在 C 和 Java 领域工作了很长时间。我正在尝试在我正在处理的一些串行协议中做一个类似接口的层次结构,并不断收到错误:

(简化)代码如下:

PacketWriter.h:

字符串编写器.h:

构造函数和 nextByte 函数在 StringWriter.cpp 中实现,但仅此而已。我需要能够从指向 PacketWriter 的指针中删除 StringWriter,如果我为 StringWriter 定义了一个析构函数,无论是否虚拟,我都会遇到各种其他类似的错误。我确信这是一个简单的问题,我作为新手忽略了。

另外,我正在为 AVR 芯片编写这个,在 Windows 上使用 avr-g++。

谢谢

0 投票
9 回答
66894 浏览

c - 如何防止 GCC 优化繁忙的等待循环?

我想为 Atmel AVR 微控制器编写 C 代码固件。我将使用 GCC 编译它。另外,我想启用编译器优化(-Os-O2),因为我认为没有理由不启用它们,而且它们可能会比手动编写汇编更快地生成更好的汇编方式。

但我想要一小段未优化的代码。我想将函数的执行延迟一段时间,因此我想编写一个无操作循环只是为了浪费一些时间。不需要太精确,稍等片刻。

由于 AVR 中的内存访问要慢得多,因此我希望i并将j其保存在 CPU 寄存器中。


更新:我刚刚从AVR Libc找到了util/delay.hutil/delay_basic.h。尽管大多数时候使用这些函数可能是一个更好的主意,但这个问题仍然有效且有趣。


相关问题:

0 投票
2 回答
286 浏览

c - Is it a good practice to include all files in one .h file and include that file everywhere for AVR?

Can I do like this

And include this includeAll.h file everywhere. Everywhere means in all the project files.

Similar macro like #define INCLUDEALL_H_ 1 has been used in all the other files.

I see that in compile time it takes very long.

0 投票
1 回答
457 浏览

bootloader - 恢复 AVR 微控制器 AT32UC3A0512 上的保险丝设置

目前我正在研究 AT32UC3A0512 微控制器。我必须为此开发以太网引导加载程序。由于引导加载程序编程需要更改保险丝设置,任何人都可以建议我如何在出现任何问题时恢复我的保险丝设置?

我使用 AVR Studio 5 作为 IDE,使用 AVR Dragon 作为调试器。

有人知道如何在 AVR Studio 5 中查看当前的保险丝设置吗?