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

c++ - 链接静态库时未定义的引用

我有几个使用 avr-ar 创建的库。每个都包含一些对象。

library1 中的对象需要 library2 中对象的符号。问题是,当我尝试编译整个东西时,我遇到undefined reference了问题。

这就是失败的地方,$(INCLUDE) $(CFLAGS) $(LIBS)

我正在运行 Ubuntu 12.04 和

如果我从库中提取对象并将所有内容放入库中,一切都会顺利进行。

我想把它们分开,有没有办法做到这一点?

0 投票
1 回答
420 浏览

avr-gcc - 无法在 avr-gcc 中使用自身更改变量?

我对微控制器的一些 C 代码有疑问。这似乎是语言或编译器问题,但程序编译得很好。然而,当在微控制器上运行时,问题就显现出来了。

(这是针对 Atmel AVR AtTiny26 的。)

我正在从模数转换器读取一个值并将其乘以 10:

这不能正常工作。我认为在计算中尝试从 ADC 读取是问题所在,所以我尝试了:

这也不起作用,导致微观不稳定。(只要模拟值低,它就可以工作,但是一旦达到某个值,就永远不会再次从 ADC 获得值,直到复位。)

这似乎有效:

引入另一个变量可以解决问题,但似乎令人困惑。这是怎么回事?

关于 EE 的相关问题:https ://electronics.stackexchange.com/q/38404/2028

编辑:

这可能与编译优化有关。当我在编译时在命令行上指定 -Os 与 -O2 或 -O3 时,会得到不同的结果。优化能否改变这种变量分配的工作方式?

0 投票
1 回答
272 浏览

c++ - avr-gcc 上的自动释放

对 8 位 AVR 微控制器进行编程时,我遇到了如下代码所示的行为:

SYSTEM_DISPLAY_FREE_RAM() 计算可用 RAM,如 http://jeelabs.org/2011/05/22/atmega-memory-use/中所述。当执行到达 SomeClass::start() 我得到以下输出:

尽管classA在 内部创建和销毁了对象while,但内存似乎是在 的乞求时分配的debugMethod(),并且一直保留到方法结束。我希望仅在一段时间内分配内存,因此使用Free Ram: 2458.

对发生的事情有任何解释吗?

有没有办法在while不使用new关键字的情况下强制在 内部进行分配?

使用的编译器:avr-gcc (WinAVR 20100110) 4.3.3

0 投票
4 回答
4581 浏览

avr - 如何读取 atmega 32 签名行?

我试图读取 atmega32 的签名行,boot_signature_byte_get(0);但出现此错误:'SIGRD' undeclared (first use in this function)这似乎是因为我们只能使用 SPMCR 中具有 SIGRD 位的 AVR 读取签名(我想!)。
这是正确的吗?那么我该如何以另一种方式阅读签名行?

0 投票
2 回答
138 浏览

c - 无法保持某些 LED 指示灯:ON ,闪烁其他 LED 时

我使用AVR作为微控制器,使用ATMEGA8作为处理器(在微控制器内部)。带有微控制器的电路板有 4 个 LED。我能够烧录程序并点亮 LED。但我无法实现特定的目标。

这些是 4 个 LED。第一轮每个 LED 间隔 3 秒后亮起。最后一个 LED (L4) 在第一轮后保持亮起。第三轮开始时,每个 LED 间隔 3 秒亮起,L3 保持亮起,同时 L4 也亮照明,它继续......直到L1。

但我无法做到这一点。因为当我将一个 LED 设置为 ON 时,其他 LED 会熄灭。我什至尝试添加一个 10 毫秒的小时间间隔。我该怎么做呢 ?这是我到目前为止所拥有的:

0 投票
2 回答
17352 浏览

embedded - 使用 Fritzing 运行 Arduino 草图

我正在尝试学习硬件编程,并为此订购了Arduino。当我等待它交付时,我开始四处寻找并遇到了Fritzing。我可以将 LED 连接到微控制器。我的问题是这样的:

Fritzing 附带一个 IDE,可用于为 Arduino 和PICAXE微控制器编写代码。编写了使 Arduino 上的 LED 闪烁的代码后,我无法编译它并将其附加到我制作的原理图上。我怎么做?页面实验程序窗口并没有真正的帮助。

0 投票
1 回答
1222 浏览

c - 查看代码以读取外部 adc 值

我刚开始使用 AVR 微控制器。我正在使用 ATmega32-A 微控制器。我已经连接了一个外部 ADC(AD7798)。我想使用 SPI 通信读取外部 ADC 值。我尝试了很多,但我无法获得 ADC 值。我的项目是我必须使用带有可编程波形发生器的微控制器生成波形。我成功地做到了这一点并将这个信号传递给传感器。我想从 ADC 读取传感器输出。我在下面附上了简单的电路图。我写了这样的代码

我在另一个文件中写了所有函数

我已经阅读了数百次数据表,但我仍然能够读取 ADC 值。我很困惑我在做什么错误。我检查了每个引脚,并使用示波器检查了 ADC 输入引脚,我得到 0.6V 输入信号。请帮我解决这个问题。Tommarow 是这个项目的最后期限。请任何人帮助我读取ADC值。

提前致谢

0 投票
1 回答
340 浏览

c - 使用微控制器改变信号的相位值

我正在尝试使用带有 ATmega32-A 微控制器的可编程波形发生器 AD9833 生成正弦波。(MCLK = 8MHz 时钟频率)。我正在使用 USART 通信,所以如果我在超级终端中改变频率或相位,那么波形频率和相位必须改变。我为此编写了小代码,如下所示。

但从上面的代码我正在生成正弦波。如果我输入频率,那么波形频率也会完全改变,但我试图改变相位,那么这就是问题所在。如果我进入相位为 90,那么它会改变 10 度,它不会改变 90。我不知道它为什么会这样产生以及我犯了什么错误?我错过了什么吗?仅相位问题。

提前致谢。

如果我想输入相位的浮点值,例如 2.5 度,我必须改变什么。在函数中将“无符号整数阶段”转换为“浮点阶段”。如果我这样尝试,“<<”与浮点数不兼容。如果我想以 35.8 度进入相位,我必须做什么。请建议我。

提前致谢。

0 投票
1 回答
5055 浏览

c++ - 包含位域 C++ 的数组 + 联合 + 结构

我只是在玩比特场,遇到了一些我无法弄清楚如何解决的问题。

(关于平台的注意事项:int 的大小 = 2bytes,long = 4bytes,long long = 8bytes - 值得一提,因为我知道它可能会有所不同。“byte”类型也被定义为“unsigned char”)

我希望能够创建一个包含两个 36 位变量的数组,并将它们放入一个具有 9 个字节数组的联合中。这就是我想出的:

我正在研究编译器会意识到应该有两个位域作为匿名结构的一部分并将它们放在一起进入 9 个字节的空间的理论。然而事实证明,它们在字节边界处对齐,因此联合占用 10 个字节而不是 9 个字节,这非常有意义。

那么问题来了,有没有办法像这样创建一个由两个位字段组成的数组?我考虑了“打包”属性,但编译器只是忽略了它。

虽然这按预期工作(sizeof() 返回 9):

最好将其作为数组访问。


编辑:感谢 cdhowie 解释了为什么这不起作用。

幸运的是,我想到了一种方法来实现我想要的:

0 投票
2 回答
9946 浏览

c++ - 宏传递了 2 个参数,但只需要 1 个

我的代码没有成功构建此错误消息:

它发生在这一行:

这是对 hton_us 的引用

我读了一些类似的问题,告诉使用typedef但它对我没有帮助。