问题标签 [atmega]

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

avr - 如何在 atmega128 中配置看门狗定时器 10 秒延迟

我正在使用ATMEGA128 16AC。所以我想使用看门狗定时器至少在 10 秒后重置 AVR。对于在 10 秒内未按下前键盘键,控制器应重新启动。

我尝试使用 wdt_enable(value); 之类的库函数;也尝试配置 WDTCR reg,但未能获得 10 秒的延迟。

请帮我解决这个问题。

提前致谢。

0 投票
1 回答
327 浏览

c - 虚拟端口在 atmega MCU 中运行,可能吗?

因为我在我的设计中找不到整个端口,但我希望我的程序变得统一(当我更改引脚时,我只需要更改这个数组),所以我想通过在数组中定义它们来创建一个虚拟端口。操作时,我想将每个虚拟引脚设置为循环。这就像下面的那些宏代码(当然我可以为端口和引脚分别定义 2 个数组)。数组(引脚)的长度在编译之前是可变的(可能是 2/3/4 引脚),但这并不重要。

如果这可能?使用函数还是宏?还是指向指针操作的指针?

0 投票
1 回答
545 浏览

arduino - 使用 AVR TWI 接口的问题

我正在尝试使用 atmega2560 访问 HMC5883L 模块。我编写了一个类 (I2C),其中包含 I2C 通信所必需的基本方法。

首先,我将解释问题。这就是我所做的。

(考虑术语有它们的普通含义。SLAW = SLA+W(从地址+写入)...)

一切顺利,直到进入 while 循环。在循环中,它似乎被困在i2c.stop()

i2c.stop()是这样实现的;

我做错了什么吗?我该如何解决这个问题?

(所有其他功能都按照数据表示例中的方式简单实现。)

0 投票
1 回答
2511 浏览

assembly - 按位运算,汇编

我的任务是更改位位置

开始位7 | 位6 | 位5 | 位4 | 位3 | 位2 | 位1 | 位0

最终位3' | 位2' | 位7 | 位6 | 位1 | 位0 | 位5' | 位4'

使用按位和移位/滚动指令。

我不知道如何以不同于移动和滚动的方式移动它们。我应该只使用一个还是多个寄存器来做到这一点?

0 投票
1 回答
6517 浏览

c - 错误:尝试使用中毒的“SIG_OUTPUT_COMPARE0A”

我正在为 atmega168a 编写 C 代码。编译下面的代码时出现attempt to use poisoned "SIG_OUTPUT_COMPARE0A错误。但是我在http://www.protostack.com/blog/2010/09/timer-interrupts-on-an-atmega168/attempt to use poisoned "SIG_OUTPUT_COMPARE0B上看到了类似的ISR函数用法,如果有人能告诉我我做错了什么,我将不胜感激?我正在使用 atmel studio 6.0 及其 gcc 在 Windows 7 pc 上编译代码。

0 投票
1 回答
1771 浏览

gcc - Makefile循环依赖+没有这样的文件错误

我一直在尝试使用模板为我的 avr gcc 项目编写一个生成文件。这是我第一次写一个(到目前为止,我一直在使用 AVR Studio 4 中的默认内置 makefile)

当我尝试编译时出现错误

这是我的makefile

任何帮助我在这里做错了什么?

谢谢!

0 投票
1 回答
12715 浏览

c - 如何在 AVR 编程中激活 16 位定时器

我有一个 atmega168a 芯片。我使用通过使用和中断子例程Counter 0来切换。我想激活条件为真时。所以,我使用,但是这条线立即调用中断,我希望 16 位定时器只有在计数器值时才被中断。如何在运行时激活 16 位定时器而不引起即时中断?PORTCISR(TIMER0_COMPA_vect)ISR(TIMERB_COMPA_vect)16-bit timerifTIMSK1 = (1<<OCIE1A)ISR(TIMER1_COMPA_vect)reachesOCR1A

这是我的代码:

这是一个示波器输出,它显示了为什么我不希望立即设置中断,因为它立即将信号设置为 0。 在此处输入图像描述

0 投票
1 回答
938 浏览

c++ - Arduino 内联 ASM 无法按预期工作

我正在尝试构建一个时钟,所以我正在使用 ASM 和一个 arduino。对于大多数部分来说,纯 C 就可以了,但是为了准备输出到 BCD 到十进制转换器的时间,我决定使用 ASM。我在 8086 C++/ASM 中编写了以下代码,它在我的计算机上运行良好:

但是,当我修改它以在 Arduino 上运行时,事情完全停止工作:

8086 代码给出了您期望的输出:

0:0000
1:0001
2:0010
3:0011
...
13:1101
14:1110
15:1111

但是在 Arduino 上运行的代码给出了不同的输出:

0:5000
1:0000
2:0000
3:0000
...(零继续)
13:0000
14:0000
15:0000

正如你可以想象的那样,如果代码返回...... 五。而且我不知道当源中没有任何东西接近 5 时它如何返回 5。我不知道在这里做什么,所以我真的可以使用一些帮助。

我正在使用具有 ATMega32U 处理器的 Arduino Leonardo。我试过反汇编由 Arduino 软件生成的可执行文件(它用 AVR-GCC 编译它),但我似乎无法找到我输入的代码。

感谢您的时间,堆栈溢出。

0 投票
5 回答
6803 浏览

assembly - 如何反转一个字节

我正在处理一个项目,碰巧我必须颠倒一个字节的顺序。我目前正在使用 AVR Studio Mega32 微控制器。

例如:

首先,我有这个:

反转字节以使 r20 变为 01101000 的最简单方法是什么?

0 投票
0 回答
432 浏览

embedded - Register access in ATMEGA32 & Debugging of Serial Communication Atmel Studio

I am working upon ATMEGA32 and programming it with the help of Atmel Studio 6.0.............

In ATMEGA32, there are 32 general purpose registers starting from R00 to R31........but how can i use those registers directly in c language in Atmel Studio 6.0.......

R00 = x; instruction does not work...................so i am forced to use integer variables, but i want to use inbuilt registers so i can easily debug it how can i do it??????

My 2nd question is i am using USB to serial asynchronous communication, so while debugging i want that some value should be passes virtually via serial communication so that i can check my code...................how can i do that in Atmel Studio 6.0??????