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

i2c - Atmega64 引脚问题。SCL/SDA 和 TXD/RDX 一样吗?

无论如何,我都不是 Atmega 专业人士。事实上,从未与他们合作过。我正在尝试将使用 i2c 接口的外部 eeprom 添加到使用 Atmega64 控制器的设备中。从数据表中,我看到引脚 25 和 26 标记为 PD0/PD1,是 i2c 的 SCL/SDA。这很好,花花公子。所以然后我去董事会并开始追踪。我看到那些带有一些我还没有仔细研究过的简单电路的摇臂开关,但我认为它与 i2c 兼容。但是后来我突然意识到这个设备有两个这样的摇杆,所以我希望将另一个摇杆追溯到相同的两个引脚(因为 i2c 是一个可以有多个从站的总线)。相反,他们追溯到标记为 PD2/PD3 和 RXD1/TXD1 的两个相邻引脚 27 和 28。好吧,现在这让我很困惑。

我希望我可以在 SCL/SDA 线上并行添加内存,但是我现在认为我发现的任何一个都意味着:

  1. SCL/SDA 可与 RXD1/RXD2 互换或
  2. 我对 SCL/SDA 的工作原理感到困惑,它不是总线还是可以用作简单的输入?

可悲的是,我不确定我在问什么。有人可以对此有所了解吗?我是否仍然可以将内存添加到 SCL/SDA 或可能不可以?

谢谢。

史蒂夫

0 投票
1 回答
713 浏览

timer - AVR 来自定时器中断的长时间运行代码

我有一些代码需要每 2 分钟运行一次,这看起来很简单。问题似乎是从计时器内触发长时间运行的进程会导致计时器摇摆不定?有什么建议么。

我的 C 知识不是那么好,所以请帮助我一些基本的想法。MCU 是 Atmel Mega128L

长时间运行的进程是通过 Telit GSM 设备(通过 UART1)的 http 调用,这本身就很好用,但需要在主循环之外运行,因为它需要监视其他进程。

0 投票
9 回答
6192 浏览

c++ - 在 AVR 中,逻辑右移 2 的幂是否更快?

我想知道按 2 的幂移动时执行逻辑右移是否更快

例如,是

任何快于

我很感激每个人的第一反应是告诉我,人们不应该担心这样的小事情,它使用正确的算法和集合来减少数量级的重要性。我完全同意你的观点,但我真的想尽我所能从嵌入式芯片(ATMega328)中挤出来——我刚刚获得了值得“哇哦!”的性能转变。通过用位移来代替除法,所以我向你保证,这确实很重要。

0 投票
1 回答
11820 浏览

arduino - ATmega328 + SPI 闪存

前言:这个问题是关于我正在与我大学的一位教授合作的一个项目。这不是为了成绩,但我在这位教授中的声誉确实很重要。因此,虽然我在这个项目上的成功对我来说很重要,但我并不认为向 Stack Overflow 寻求帮助是不公平的。

也就是说,这是我的项目的高级概述。我有一个 ATmega328 微控制器。我有一个 Microchip SST 64 Mbit 闪存卡。ATmega 具有 SPI 的硬件实现。闪存具有 SPI 的硬件实现。

我的目标是在 SPI 主模式下使用 ATmega 从闪存芯片读取数据并将数据写入闪存芯片。内存被组织在一个多重覆盖结构中,这很适合擦除,但就我的目的而言,它基本上只有 32,768 页,每页 256 字节。

写数据的基本思想是我发送一个指令字节,然后是起始地址,然后是数据。读取数据的基本思想是我发送一个指令字节,然后是起始地址,然后是一个虚拟字节,然后它开始向我发送数据。

以下是数据表:

微控制器:http: //www.atmel.com/dyn/resources/prod_documents/doc8271.pdf

闪存:http ://www.sst.com/dotAsset/40498.pdf

代码:

所以这应该是一个测试程序,它将 1 个字节编程到闪存上,然后将其读回并在我拥有的 LED 阵列上显示该字节。如果您对 LED 阵列感兴趣,可以在这里找到:http ://evilmadscience.com/tinykitlist/157

我相信我的读取功能有效,因为我第一次运行它时,所有 8 个 LED 都亮了。这将向我表明它在闪存处于全 1 的出厂状态时读取了闪存。现在显然我把写作搞砸了,因为点亮的字节与我试图编程的字节根本不对应。

我还应该注意我正在为 Arduinos 使用默认的 SPI 库,并且帧缓冲区功能正常工作。当我这样做frame1.WriteRow(toDisp)时,它工作正常并且已经过广泛测试。

如果有人有时间或耐心找出我做错了什么,那将是非常棒的。

编辑:帮助调试:
LED 由也使用 SPI 接口的驱动芯片驱动。我没有写那部分代码。在示波器上,我可以看到 SCK 线是由那部分代码驱动的。但是,我在 MOSI 引脚上也有一个探针,如果我不点亮任何灯,它似乎永远不会变高。对我来说,这意味着我没有正确发送信息。又名...也许我SPI.transfer()需要一个启用功能或什么?

0 投票
2 回答
2777 浏览

android - Android 上的蓝牙控制信号(DTR、DSR、RTS、CTS)

我想通过蓝牙 SPP 通过 Android 远程重新编程我的 Arduino。第一步是重置 ATMEGA 微控制器。这是通过切换 DTR 线在 Arduino 上完成的。是否有任何 API 可以从 Android 环境控制蓝牙 SPP 控制线?

0 投票
1 回答
594 浏览

arm - ARM处理器系列上的uipv6

我需要将 u(read mu)ipv6 堆栈从 atmega 平台移植到 arm 平台,特别是移植到 STM32F103Rx,所以我需要该处理器的库。但我不知道在哪里可以找到它们。谁能指出我正确的方向?

0 投票
2 回答
313 浏览

c++ - 如何为 ATmega8 微控制器实现自己的闪存软件

有没有人有一些文档如何为 atmega8-microcontroller 实现自己的闪烁程序?

搜索时,我只找到了有关如何使用普通刷机软件(在大多数情况下是 atmels 翻转)刷机自定义软件的教程,但我没有找到任何文档,您将如何在自己的软件中实现它。例如。什么是命令,哪些时间和来自微控制器的响应。

所以,提前谢谢你

0 投票
2 回答
1230 浏览

avr - 如何更换 ATMEGA88 的引导加载程序

我有一块带有 ATMEGA88 芯片的电路板,它的引导加载程序位于地址 0x1800,固件位于地址 0x0000。两者都可以访问 USB。引导加载程序可以编写新固件,但现在我需要编写新的引导加载程序。

当然,这在使用 AVR 编程器时没有问题,但是否也可以通过 USB 执行此操作?我的想法是通过旧的引导加载程序刷新一个特殊的固件,然后可以编写一个新的引导加载程序。那可能吗?如果是,如何?

我目前的尝试没有成功。所有命令(boot_page_erase、boot_page_fill 和 boot_page_write)都以与引导加载程序相同的方式成功执行(唯一的区别是它从索引 0x1800 而不是 0x0000 开始写入)但是当我重新启动设备时,旧的引导加载程序仍然存在所以没有真正写入闪存。

0 投票
1 回答
996 浏览

atmega - 循环 ATMEGA8515 中的 LED

我想读取 LED 旁边的开关,并将 LED 从 0 循环到按下的任何开关,如果没有按下任何开关,则延迟循环通过所有开关。为此,我使用了 timer0。因为我在 atmega8515 上工作。我用的是INT0。这是我的实现:

但是在 ISR 中使用延迟循环是一种不好的编程习惯。如何使用相同的计时器而不是延迟?

0 投票
3 回答
5961 浏览

c++ - AVR - 中断向量和全局变量

我正在使用 ATmega32 每 32 毫秒中断一次以做一些任意的事情,这目前并不重要。
我正在使用 timer0 的定时器溢出来中断,它的工作原理是可预测的和完美的。

我的问题是我有一个全局变量:

volatile int isSampling;

那没有被写入中断向量中。我读到整数需要volatile消除编译器优化的可能性,但我将其声明为volatile它仍然无法正常工作。

好的,我找到了导致问题的有问题的代码,但我不确定它为什么会导致它。当我loadValue(studentID[i])从主 while 循环中删除时,代码按预期工作。但是当我把它放回去时,它又坏了。