Questions tagged «atmega»

ATMega是Atmel微控制器AVR系列的一个家族。这是Arduino原型平台的主要微控制器。请在您的问题中指定特定的零件号。

7
如何找到免费的UART线来发送数据
我有几个与Rs485通讯的板。他们有ATMega系列微控制器,例如atmega168p或atmega8。每个板卡都可以随时自由发送数据,而且我有一定的局限性,导致无法使用Modbus。板子的数量可以从5到10。 我的问题是:电路板如何找到UART线是否可以自由发送数据,并且如果它检测到总线繁忙,请等到总线空闲后再发送自己的数据? 是否有可以自动或手动更改它的特殊标志或寄存器,并让另一块板发现线路忙?
8 atmega  uart  rs485  bus 

1
AVR:超频ADC
这是来自ATmega32数据表的报价: By default, the successive approximation circuitry requires an input clock frequency between 50kHz and 200kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200kHz to get a higher sample rate. 我打算使用8位ADC。问题是:我能走到200kHz以上多少?我在数据表中找不到有关此的任何信息。是否可以使用64或32的预分频器,从而在uC以16MHz运行时分别以250kHz或500kHz运行ADC而没有转换错误?超出规范的ADC可能带来什么后果?

2
SPI设备阻止ISP编程
我有一个连接了诺基亚LCD 5510的ATmega8。一切都在面包板上运行良好,而我的下一步是将其移至更永久的板上。我的问题是在连接LCD的情况下无法编程ATmega8。我认为这是因为它们使用相同的SPI引脚,并且LCD某种程度上干扰了编程。我该如何做些不同,以便我可以通过ISP刷新ATmega,而无需断开LCD 的电源?
8 atmega  spi  lcd  isp 

2
AVR中断服务例程的执行速度未达到预期的速度(指令开销?)
我正在开发一个具有7个输入的小型逻辑分析仪。我的目标设备是ATmega168时钟频率为20MHz的设备。为了检测逻辑更改,我使用了引脚更改中断。现在,我试图找出可以检测到这些引脚变化的最低采样率。我确定的最小值为5.6 µs(178.5 kHz)。低于此速率的每个信号我都无法正确捕获。 我的代码是用C(avr-gcc)编写的。我的例程如下所示: ISR() { pinc = PINC; // char timestamp_ll = TCNT1L; // char timestamp_lh = TCNT1H; // char timestamp_h = timerh; // 2 byte integer stack_counter++; } 我捕获的信号变化位于pinc。为了对其进行本地化,我有一个4字节长的时间戳值。 在数据表中,我读到了中断服务程序需要5个时钟周期才能进入,而5个时钟周期则可以返回主程序。我假设我的每个命令ISR()要花1个时钟来执行;因此总而言之,应该有5 + 5 + 5 = 15时钟的开销。一个时钟的持续时间应根据20MHz的时钟速率而定1/20000000 = 0.00000005 = 50 ns。那么,以秒为单位的总开销应为:15 * 50 ns = 750 ns = …

3
检查RTC上的备用电压会耗尽备用电池吗?
我正在开发一个ATMega项目,该项目将节省时间,因此我正在尝试使它具有软件时间(基于millis()),DS1307或DS3231(ChronoDot)RTC的选项。 最基本的说,我想做的是提供一个可焊接的ChronoDot头,然后用某种方式在软件中检测是否已连接ChronoDot并切换为使用它。通常,检查DS1307或DS3231是否存在(因为它们使用相同的I2C寄存器)通常很容易,但是在进行最初的检查后,它们之间确实确实有些偏离,并且后者具有更多功能。所以我仍然想确定连接了哪个。通常,我计划直接在板上放置一个作为默认选项的DS1307焊料,而DS3231支持将仅通过双4引脚接头连接器提供完整的ChronoDot。ChronoDot本质上适合DS1307正常运行的地方(在这种情况下不会填充)。我特别关注ChronoDot的主要原因是它 它很流行,易于获取,并且对于最终用户不需要SMD焊接(如果是套件的话)。所以,这就是我在想... DS1307和DS3231的芯片上都有一条Vbat线,但实际上并不需要任何东西。但是,ChronoDot的分线板上有一个实际的VBat引脚。我可能只能连接ChronoDot接头连接器上的Vbat,而不连接DS1307,并将其连接到我ATMega上的数字输入引脚。但是该输入引脚是否已通过电阻下拉至地(不确定该值是多少……也许是4.7k?)。如果我的EE理论是正确的,那么我可以读取该引脚,如果我的电平低,则没有计时码字;但是如果我的电平高,则存在。 像这样: 模拟此电路 –使用CircuitLab创建的原理图 我的主要问题是,这样做是否会耗尽RTC上的备用电池?通常,在提供5V主电源时,不会从备用电池汲取电流,但是将其连接到数字输入是否会一直从电池获取电能?或者,可以说,有一种我需要在从引脚读取后将其插入以使其“断开连接”的模式吗?我知道我可以将其更改为输出,但是我相信,如果将其设置为输出并且设置为低电平,则基本上可以将电池接地。 无论如何,我的EE课程是很久以前的。在此理论上的任何帮助将不胜感激。

1
如何在无奇怪行为的情况下为ATMEGA缓冲毫秒级的电源中断?
我有一个ATMEGA328p-pu arduino,带有通过SPI连接的LED +移位寄存器带状电路。打开时,它会增加EEPROM中的变量以推进显示模式。 我们将掉电检测器设置为1级(2.7V)。 有一个1500 uf电容器与电源线并联,希望能防止arduino在物理撞击下改变模式,因为电池端子可能会在毫秒(?)左右略微断开连接。 盖子的正极引线上有一个二极管,以防止盖子放电到LED中,因此它仅缓冲arduino。 由于帽上保持有电压,因此在帽上还并联有一个1000欧姆的电阻以将其排放,这是我们认为这是芯片有时在启动时无法点亮LED电路的问题所在。 arduino pro mini和strip的额定电压为5v,但我们通常以3.7v的电压运行它们,因此它们可以由单个锂离子电池供电。 有时坐10或15秒钟后,电路不会点亮。有时在断开电池并连续重新连接几次后,它会亮起。 有人可以推荐一种更好的方法来为ATMEGA提供功率缓冲器(但不能为LED灯条提供功率缓冲)吗?我们在大多数情况下都做得正确吗? 图表(抱歉,如果混乱,如果不清楚,我可以让我的朋友在Illustrator中重做):

2
创建USB HID设备的最简单方法
我正在研究如何入侵自己拥有的RC遥控器。我打算做的就是将其打开,然后接入电位计。我想读取电位计提供的模拟值,并将信号发送到我的PC。本质上,我想将其重新用作HID USB接口的操纵杆。当然,HID接口不是必需的,但是我相信这是实现此目的的最佳方法。 我对AVR微控制器系列非常熟悉,因此尽管起初我可以尝试使用ATMega8进行V-USB之类的尝试。同时,我开始认为这可能变得不必要地困难。有没有更简单的方法来实现这种连接而又不花钱?
8 usb  avr  atmega 

1
运行时可以读取ATmega或ATtiny设备签名吗?
在对ATtiny或ATmega进行编程时,avrdude会打印设备签名,在此示例中,它是ATtiny。 avrdude: Device signature = 0x1e910a 我可以使用C ++代码(avr-gcc)在运行的设备上读取此签名吗?对于ATmega1280,有一章29.6.10对此进行了编写,但是我对如何用C ++编写代码感到有些困惑。 我希望能够使设备将其设备ID发送回控制PC,以便PC可以做出决定。
8 arduino  atmega  linux  attiny  c++ 

2
ATmega328的实际最大电流?
我读到的一切都说ATmega328每个引脚可以提供40mA电流。但是,当我测量一个引脚提供的实际电流时,它显示为80mA。我测试的每个引脚都相同。其他人注意到了吗?还是仅针对此特定对象? RM:ATMega328数据表

3
将Arduino Duemilanove从ATMega168升级到ATMega328
我已经从SparkFun 购买了带有预编程的Arduino引导程序的ATMega328。我打算替换我目前在Duemilanove中使用的ATMega168。这就像交换芯片一样简单,还是我需要采取任何其他措施?回想一下,我目前在Arduino 13上,但计划在交换零件的同时升级到17(当前版本)。
8 arduino  atmega 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.