如何使用NANO作为Arduino Nano ISP:没有AVR程序员我想要编写ATMEga328P以供使用
作为一个裸露的arduino,一个方便的方式是使用
Arduino Board作为ISP:在系统程序员中。
使用程序员的目的是放回引导加载程序,
所有Arduino Boards都需要使用之前上传程序 arduino. IDE.
您可能会购买一个未编程的芯片,需要一个引导加载程序
让它与IDE一起使用,在这种情况下,您可以使用此方法
重新编程设备(当然您需要至少一个设备
引导加载程序已安装)。
如果你不't至少有一个引导加载编程芯片,然后是您
will need to use a "real"程序员和Avrdude为
编程软件。
您可以选择许多差异arduino板来编制目标板(Arduino.cc
建议Atmega,32U4或Attiny - 常见的是"Arduino Uno" and
"Arduino Nano"作为编程设备)。
IDE可能只是 为不同的电路板更改引导加载程序草图中的引脚(暗示 在引导加载程序草图中)以获得正确的SPI引脚唯一的其他 所需的信号是一般的I / O引脚,用作复位 signal.
ISP.编程方法只需使用SPI接口将程序员和目标连接到4个信号线:
笔记: 莫斯,MISO和SCK是在使用的芯片中使用的相同SPI销
您自己的项目中的SPI接口。 RST是来自任何I / O的信号
PIN(它不是Arduino Lanset信号)。
这些(SPI)信号连接到编程器(NANO)上的相同引脚和
目标(这里是无可焊接面包板上的Atmega328p)。注意这件事怎么样
信号的名称允许在不同的芯片之间直接连接
因为它们包括来源和目标名称。这是非常的
different to RS232 您必须记住交叉RX和TX信号!
程序员和目标板始终相同。
所以所有你需要将Bootloader重新编程到Arduino中,是
另一个arduino! (引导加载程序已编程到芯片中)
这听起来有点奇怪,但你需要编程arduino nano
用作ISP编程草图的Arduino Nano ISP程序员。这回合
arduino进入ISP程序员。
这里纳米用作程序员。
从IDE中的示例程序中选择Arduino ISP:
Menu > File > Examples > 11.ArduinoISP > ArduinoISP
编程后,将董事会创建Arduino Nano ISP 程序员,断开USB电缆并建立连接 target board.
您必须连接所有SPI线(见下面的面包板布局)
but you don't really need to
连接LED。一个你可能会发现的是心跳LED但它
不是必不可少的。这将脉冲慢慢打开,显示出来的
ISP
程序在纳米中活跃。
在LED连接下方的面包板布局中:
提示: 大学教师't扰乱LED - 请参阅下面的IDE输出的屏幕镜头 - 您可以轻松查看编程状态。
您可以选择哪些销钉将用于MOSI,MISO和SCK
如果将PIN_MOSI,PIN_MISO和PIN_SCK设置为所需的引脚 -
素描(将草图另存为其他文件以允许编辑) - 在此
如果这些引脚是,则Ardino ISP草图将使用位撞击SPI
未设置为标准SPI引脚。
纳米到裸板连接,以及水晶+帽:
Signal name |
纳米 |
裸露的板子 |
---|---|---|
MOSI |
D11 | pin 17 |
MISO | D12 |
pin 18 |
SCK |
D13 |
pin 19 |
RESET |
D10 |
PIN 1(RSTN) |
5V |
5V |
引脚20(AVCC),引脚7(VCC) |
0V |
GND. |
销22,引脚8 |
Cap1 to GND (22pF) |
N / A. |
pin 9 |
Cap2 to GND (22pF) |
N / A. |
pin 10 |
16 MHz Crystal |
N / A. |
销9和引脚10 |
警告: Friczing使得改变组件非常困难 值(晶体电容器)所以我没有't! - 也是原理图工具 是坏的(单净操作)。我没有尝试过pcb但有 注意到它不适当地认为是'使用它。只用FRITZING 面包板图形如上所述。
从中选择Arduino作为ISP"Programmer:" Option:
下一步是使用Bootloader编程目标板(Arduino Nano ISP):
Menu > Tools > Burn Bootloader
使用裸板Arduino要求您将USB串行
连接到Arduino芯片的Rx和TX引脚的适配器。
笔记: 信号Rx和Tx必须在Atmega328p上跨越。所以:
在许多情况下,串行接口适配器只有四个连接:
这提出了一个问题,因为Arduino示意图显示了
Arduino以串行使用DTR信号的特定重置
界面。没有DTR信号信号编程序列挂起。那
是,除非您在正确的时间进行手动重置 - 或者购买
具有DTR信号作为输出的串行适配器(并添加100nf
电容器 - 见下面的原理图)。
在Arduino Boards上另一个外部信号启动引导加载程序 - 实际上
它重置板 - 此额外信号称为DTR(或数据终端
就绪) - 它是串行接口的单独输出。一个
bootloader is only
在上电时为活动,或重置后,活动
控制被传递给了'previously-loaded' program.
启动RS232传输时,发送设备断言
DTR且此信号用于执行目标
重置(使引导加载程序唤醒)。在Arduino示意图A 100nf
电容器位于此信号和Atmega328p的复位输入之间
(也通过10k电阻拉动 - 参见下面的电路中的C5)。
由于DTR仅在开始时才使用此组合
并结束一个字节传输。这个想法是当DTR
变低,重置输入暂时拉低,然后慢慢地
通过10K上拉(RN1D)拉到5V。这是一种作弊重置
使用电容器特性进行作业的方法。
下面的信号迹线显示了电容器动作 - 显示复位
arduino的销(这是1V / div和500us / div,电压之间
蓝色水平线是4.7V - 较低的蓝线是0V):
此重置系统有效,因为重置输入具有滞后
级别为0.1V(在5V供电),产生清洁信号
在微控制器中,忽略缓慢上升的输入上的噪音。
对于重置引脚vIL.= 0.1VCC. MAX and VIH. =0.9VCC.
闵。对于上述跟踪阈值,为0.1 * 4.7 = 0.47V和
0.9 * 4.7 = 4.23V,并给出持续时间〜1.5ms的低复位信号。
在下面的轨迹中,当DTR变高时,高压尖峰是
创建的峰值为9.12V!范围设置是:2V / div,5ms / div,高蓝
线为9.12V,黄色水平信号为4.7V:
笔记: Atmega328p可以处理该更高电压的原因
是,重置输入引脚被指定为最多13V的操作,
可能用于高压编程。你不能这样做
pins!
DTR低电平和DTR高之间的时间取决于编程所带来的时间 - 对于闪烁素描,它是1.9秒。
笔记: Atmega328p的引脚2是Rx,引脚3是Tx。
您可以在裸板Arduino上尝试以下草图
(通过1k电阻连接到D13和地面 - 引脚19附接
ATmega328P):
// Simple slow-fast blink on built in LED Arduino D13.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
for (在t i=0;i<2;i++) {
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on.
delay(200);
digitalWrite(LED_BUILTIN, LOW); // Turn the LED off.
delay(200);
}
for (在t i=0;i<5;i++) {
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on.
delay(50);
digitalWrite(LED_BUILTIN, LOW); // Turn the LED off.
delay(50);
}
delay(400);
}
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。