问题标签 [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 回答
29050 浏览

width - AVR Studio 上的脉冲宽度调制 (PWM)

我正在尝试将 PWM 用于 ATmega8 上的 LED,端口 B 的任何引脚。设置定时器一直很烦人,我不知道如何处理我的 OCR1A。这是我的代码,我希望得到一些反馈。

我只是想弄清楚如何使用PWM。我知道这个概念,OCR1A 应该是我想要脉冲的整个计数器时间的一部分。

0 投票
2 回答
1987 浏览

arduino - 使用 Sparkfun 的 MP3 播放器扩展板和 Arduino Ethernet Pro - SPI 问题

我正在使用 Sparkfun 的 Arduino Ethernet Pro 板和 MP3 播放器扩展板(http://www.sparkfun.com/products/10536 和http://www.sparkfun.com/products/10628

我尝试使用 Sparkfun 提供的示例,但我一直遇到相同的错误,我已经确定初始化 SD 卡(我使用的是 SdFat)。

为了确定核心问题,我尝试从 SdFat 库运行“SdInfo”示例。这是我的输出:

SdFat 版本:20111205

输入任何字符开始

card.init 失败

SD错误代码:0X1

SD错误数据:0X0

如果我按照 Sparkfun 说明(http://www.sparkfun.com/tutorials/295)将 Sd2PinMap.h 中的 SS_PIN 从 9 更改为 10,则 sdcard.init(...) 方法将挂起。

我认为这个问题是因为 W5100 以太网芯片和 MP3 播放器屏蔽之间的冲突。

有没有我不知道的冲突端口?还是我需要禁用 W5100 芯片?

0 投票
1 回答
6436 浏览

arduino - 定时多次调用analogRead()

我希望将捕获波形的功能添加到基于 ATmega 328 的产品中,但我一直无法找到有关 ATmega 328 在进行 A/D 转换时的响应速度的详细信息。该代码正在 Arduino 上进行原型设计,但完成后将迁移到定制板。

我的计划是有一个总周期(通常为 16 到 20 毫秒,基于本地 AC 线路频率)并在该时间间隔内对单个引脚采样 50 到 100 次。ATmega 328 能否可靠地连续执行那么多转换?每次转换的最小间隔为 16ms / 100 = 160us。

如果有人必须查看代码,我可以添加一个代码示例,但现在我更关心的是多次连续 A/D 转换之间的最短时间。

0 投票
2 回答
329 浏览

c - 如何找到芯片保留地址和魔术位的官方信息?

我如何从芯片制造商那里找到几个芯片的幻地址列表?对它所支持的价值观进行了体面的解释?

我什至无法弄清楚调用/搜索它的术语。

刚开始嵌入式编程。我必须为各种事情设置大量的魔法位。

通常我会遇到一些事情:

或者

有时会有评论解释他们在做什么。我主要记下我在示例代码中找到的所有内容。msp430 启动板的那些通常是由有很多评论的好详细的人写的,我什至可以在芯片系列笔记上找到一些地址映射,但很难理解的列表。在 Arduinos 上更常见的芯片在试图完全理解这一点时更加需要。(当然,我仍然不确定如何搜索它:)

到目前为止,我发现的最好的地方是我正在使用的芯片的头文件......但即便如此,举这个例子:

现在头文件:

没有对各个位的解释,也没有与最常见的位进行现成的组合。

奖金咆哮问题

既然它总是在功能强大、大部分空闲的个人计算机上编译,为什么所有编译器/IDE 都选择模仿裸机的用户友好性?是不是有很多更好的格式可以做到这一点?如果我不会在性能上发疯,我是否必须知道普通编码设置地址 0x0120 的值为 0x5A80 会停止看门狗定时器?头文件/IDE 不能watch_dog_timer( STOP );让我使用吗?

0 投票
3 回答
2988 浏览

codeblocks - AVR、CodeBlocks 和 Proteus 中的 CPU 频率

好吧,我使用 Code::Blocks 作为 IDE,并使用 Win AVR 作为编译器。F_CPU 选择为 8000000UL。我正在为 Atmega32 编写代码。但是当我在 Proteus 设计套件 (ISIS) 中运行我的书面代码(*.hex 文件)时,_delay_ms(1000)不会延迟 1 秒。不知道是写还是错,我在编辑组件中选择了CKSEL保险丝(0100)Int.RC 8MHz 。怎么了?请....

0 投票
1 回答
2952 浏览

arduino - 在 Arduino 中使用计时器引入延迟

我正在 Arduino 中进行寄存器级编程。目标是使用计时器编写我自己的延迟逻辑。这是代码:

上面的程序是让Arduino在不使用延迟功能的情况下引入延迟并且它工作正常。但是看看下面的代码。

当我这样写时,程序正在编译,但 Arduino 中没有闪烁。与上述代码类似的代码运行正常时可能会出现什么问题?

0 投票
3 回答
808 浏览

avr - ATMega2560 上的 vsnprintf

我正在使用一个工具包在 ATMega2560 上做一些椭圆曲线密码学。尝试使用工具包中的打印功能时,我得到一个空字符串。我知道打印功能可以正常工作,因为 x86 版本可以毫无问题地打印变量。我对 ATMega 没有经验,并且希望在这件事上提供任何帮助。打印代码包含在下面。

打印大数字的代码(它本身称为 util_print)

实际打印大数字变量的代码:

编辑:我确实初始化了 UART,并且可以将 printf 语句输出到控制台。

0 投票
1 回答
1258 浏览

assembly - 什么会导致 LPM 指令总是失败?

我有一个自修改程序,它写入程序闪存区域(它不会中断程序流程,因为我写入了另一个闪存扇区,而不是我的程序正在运行的闪存扇区 - 它在受保护的引导加载程序部分运行)。

复杂的部分,写入闪存,工作正常。我可以在调试器中检查它,我发送的值已成功写入闪存。

但是,当我尝试使用LPM指令检查内容时,它总是显示为零。

LPM无法阅读时,我确定了以下原因:

  1. 当锁定位被设置时,禁止读取闪存。这里不是这种情况,因为没有设置锁定位。
  2. 由于先前的写指令,闪存的读取被锁定。这里不是这种情况,因为我设置RWWSRE并等到绿灯亮起while (SPMCSR & 0b01000000) {}
  3. 我算错了地址(Z 指针的分段可能很棘手)。这里不是这种情况,因为我也用第一个单词(地址 0)尝试了它,但它仍然不起作用。

我使用以下代码进行测试,读取闪存的前两个字节(写入指令成功完成,因为该位置的程序内存不为零,用调试器检查)

在此之前,我将Z指针设置为零,并使用调试器检查它是否真的为零(r30r31)。

但是,无论闪存中的内容如何,​​都将始终为零r2r3

是否还有其他LPM无法阅读的情况?

0 投票
3 回答
2535 浏览

avr - 尝试使用 AVR Dragon 调试 ATmega88 时出错

我正在尝试使用 AVR Dragon 和 AVR Studio 6 调试 ATmega88。该程序是用 C++ 编写的。每次我尝试调试程序时,都会出现一个消息框,说

“开始调试”:“AVR Dragon (00A2000006C63) 上的 ISP 不支持调试。设备仅被编程。使用 Start without Debugging 来避免此消息。”`

我认为 Dragon 支持通过 ISP 进行调试,因为我可以在 AVR Studio 4 中调试用汇编程序编写的程序。程序是:

但这不应该是问题。该程序本身有效。

0 投票
4 回答
4393 浏览

arduino - 在 ADK2012 中使用非 5v 模拟参考电压

我有一个 ADK2012 类似 arduino 的设备。我正在使用 google 的 arduino 软件副本,我可以毫无困难地编译和运行各种草图。

我有一个连接到模拟输入的 LM35。默认情况下,参考电压为 5 伏。这似乎工作正常,但我想使用不同的模拟参考值,如此处所述:

http://arduino.cc/en/Reference/AnalogReference

不幸的是,我遇到了一些麻烦。当我使用DEFAULTEXTERNAL喜欢这样:

我编译时得到这个:

如果我尝试将其设置为INTERNALINTERNAL1V1INTERNAL2V56,我会收到如下错误:

我在这里有点死胡同。我对 Arduino 或 Wiring 不够熟悉,不知道这是否是所提供设备配置的问题,或者物理硬件的实际限制,或者内部的错误或不兼容。

不幸的是,我使用的硬件比较少见,而且似乎没有太多的文档。我很感激有关从哪里开始寻找解决此问题的建议。