问题标签 [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.
avr - 如何在 atmega128 中配置看门狗定时器 10 秒延迟
我正在使用ATMEGA128 16AC。所以我想使用看门狗定时器至少在 10 秒后重置 AVR。对于在 10 秒内未按下前键盘键,控制器应重新启动。
我尝试使用 wdt_enable(value); 之类的库函数;也尝试配置 WDTCR reg,但未能获得 10 秒的延迟。
请帮我解决这个问题。
提前致谢。
c - 虚拟端口在 atmega MCU 中运行,可能吗?
因为我在我的设计中找不到整个端口,但我希望我的程序变得统一(当我更改引脚时,我只需要更改这个数组),所以我想通过在数组中定义它们来创建一个虚拟端口。操作时,我想将每个虚拟引脚设置为循环。这就像下面的那些宏代码(当然我可以为端口和引脚分别定义 2 个数组)。数组(引脚)的长度在编译之前是可变的(可能是 2/3/4 引脚),但这并不重要。
如果这可能?使用函数还是宏?还是指向指针操作的指针?
arduino - 使用 AVR TWI 接口的问题
我正在尝试使用 atmega2560 访问 HMC5883L 模块。我编写了一个类 (I2C),其中包含 I2C 通信所必需的基本方法。
首先,我将解释问题。这就是我所做的。
(考虑术语有它们的普通含义。SLAW = SLA+W(从地址+写入)...)
一切顺利,直到进入 while 循环。在循环中,它似乎被困在i2c.stop()
i2c.stop()
是这样实现的;
我做错了什么吗?我该如何解决这个问题?
(所有其他功能都按照数据表示例中的方式简单实现。)
assembly - 按位运算,汇编
我的任务是更改位位置
开始位7 | 位6 | 位5 | 位4 | 位3 | 位2 | 位1 | 位0
最终位3' | 位2' | 位7 | 位6 | 位1 | 位0 | 位5' | 位4'
使用按位和移位/滚动指令。
我不知道如何以不同于移动和滚动的方式移动它们。我应该只使用一个还是多个寄存器来做到这一点?
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 上编译代码。
gcc - Makefile循环依赖+没有这样的文件错误
我一直在尝试使用模板为我的 avr gcc 项目编写一个生成文件。这是我第一次写一个(到目前为止,我一直在使用 AVR Studio 4 中的默认内置 makefile)
当我尝试编译时出现错误
这是我的makefile
任何帮助我在这里做错了什么?
谢谢!
c - 如何在 AVR 编程中激活 16 位定时器
我有一个 atmega168a 芯片。我使用通过使用和中断子例程Counter 0
来切换。我想激活条件为真时。所以,我使用,但是这条线立即调用中断,我希望 16 位定时器只有在计数器值时才被中断。如何在运行时激活 16 位定时器而不引起即时中断?PORTC
ISR(TIMER0_COMPA_vect)
ISR(TIMERB_COMPA_vect)
16-bit timer
if
TIMSK1 = (1<<OCIE1A)
ISR(TIMER1_COMPA_vect)
reaches
OCR1A
这是我的代码:
这是一个示波器输出,它显示了为什么我不希望立即设置中断,因为它立即将信号设置为 0。
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 编译它),但我似乎无法找到我输入的代码。
感谢您的时间,堆栈溢出。
assembly - 如何反转一个字节
我正在处理一个项目,碰巧我必须颠倒一个字节的顺序。我目前正在使用 AVR Studio Mega32 微控制器。
例如:
首先,我有这个:
反转字节以使 r20 变为 01101000 的最简单方法是什么?
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??????