第一步:硬件准备
1.ATMEGA8L-8PU avr单片机(图1)
图1
2.USBasp(用于烧写bootloader的工具)(图2上)
3.USB转TTL串口线(我用的是FT232芯片的,稳定性比较好,用于在arduino下装载程序)(图二下)
图2
4. 16M晶振,面包板,发光二极管等,及若干杜邦线
这里可能有疑问:ATMEGA8L-8PU为什么配了16M晶振?
原因是这样的:原则上ATMEGA8L-8PU最高用的是8M晶振,但Arduino 中的所用M8平台的bootloader是基于ATMEGA8编译的,并且使用的是16M晶振;而我手头没有ATMEGA8的芯片(注意我用的芯片后面带个“L”),又不会重新编译bootloader,只好把现有ATMEGA8L配上16M。虽然“超频”了,但目前试验中尚未发现问题。
第二步:软件准备(下载找度娘吧)
1.arduino的IDE:arduino-1.0.5-r2
2.USB asp的驱动以及串口线的驱动(这个注意要下载自己串口线对应芯片的驱动)
3.progisp(这个是用来烧写bootloader的软件)
注意事项:在安装完USB asp后,必须 要将驱动程序目录下的 libusb0.dll,libusb0.sys这两个文件复制到 烧写工具progisp.exe所在目录。特别的,在USBasp的驱动文件目录下,有多组 libusb0.dll,libusb0.sys文件,必须要选择与自己电脑系统对应的文件。
例如 图3是x64位的驱动目录,我的电脑是AMD CPU的x64win7,我所复制的那两个文件是在amd64下面。当然intel CPU 的电脑用ia64文件夹里的两个文件。
图3
否则烧写程序时就可能出现如下问题:
图4
第三步:在面包板上搭建最小系统
如图5所示接线
图5
实物示例图6:
图6
第四步:用usbasp烧写bootloader
安装并连接好USBasp驱动后,打开progisp软件如图7
图7
1.选择芯片为ATmega8
2.打开bootloader的HEX文件,位于Arduino IDE软件的arduino-1.0.5-r2hardwarearduinobootloadersatmega8目录,文件名为ATmegaBOOT-prod-firmware-2009-11-07.hex
3.配置熔丝位为0xCADF,注意熔丝位配置错误可能会将芯片锁定。
4.选中编程熔丝选框
5.单击 自动 按钮,开始对芯片编程,编程完成后软件左下角框框会出现successfully字样。
第五步:在Arduino的IDE下建立闪亮LED的代码
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
图8
输入代码后单击图8所示IDE中第一个的形如 "对号"的按钮编译。
第六步:在Arduino的IDE下装载编译后的程序到Atmega8芯片中
1.断开USBasp与面包板的任何连接(这个重要,否则会下载失败,当然bootloader如果下载正确了,以后可以用USB to TTL下载Arduino程序了,USBasp也用不上了)。
2.将USB to TTL的VCC,GND连接到Atmega8L芯片的相应引脚。USB to TTL的TXD连接到ATmega8L的RXD,USB to TTL 的RXD连接到ATmega8L的TXD,参考图6。
3 在面包板上接一个发光二极管:发光发光二极管正极接ATmega8L的PB5(第19个引脚),负极通过一个限流电阻(500欧姆左右吧)接到GND。(参考图10,图10中未接限流电阻)
4.将USB to TTL连接到PC。然后在Arduino的IDE下单击选择菜单 Tool->Board->Arduino NG or older /W ATmega8,再选择Tool->Board->Serial Port下选择USB to TTL在你的电脑上对应的COM口。如图9。
图9
图10
5.最后单击Ardunio IDE上的“→”按钮,开始装载程序,同时在面包板上用杜邦线将Atmega8L的RST(第一个引脚)与GND短接一下,进行复位(当然接个按钮最方便),然后等待下载完成。
6.下载完成后:就可以看到实验效果 LED小灯亮一秒,灭一秒,如此往复。如果这里成果,则说明bootloader正确的引导了程序的下载与运行,并且Ardunio程序本身也是正确的。
图11
至此,一个最小的Arduino开发板制作完成,并运行了第一个Arduino入门程序,后续Arduino 程序的实现和系统扩展由大家发挥。
附图:Arduino中的PIN引脚与Atmega8L芯片管脚的对应关系。
附加说明:
在Ardunio IDE的安装目录 arduino-1.0.5-r2hardwarearduino 下 有一个板子类型配置文件boards.txt。其中有部分配置代码如下
##############################################################
atmega8.name=Arduino NG or older w/ ATmega8
atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200
atmega8.bootloader.low_fuses=0xdf
atmega8.bootloader.high_fuses=0xca
atmega8.bootloader.path=atmega8
atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex
atmega8.bootloader.unlock_bits=0x3F
atmega8.bootloader.lock_bits=0x0F
atmega8.build.mcu=atmega8
atmega8.build.f_cpu=16000000L
atmega8.build.core=arduino
atmega8.build.variant=standard
##############################################################
在这里可以看到熔丝位的配置,晶振频率,以及指定的bootloader的HEX文件等信息,这也是为什么 在第四步中熔丝位那样配置,晶振非要选择16M等的原因了。
上一篇:ATMega328P-PU芯片Arduino最小系统实验
下一篇:AVR C语言宏定义技巧(常用宏定义)
推荐阅读最新更新时间:2024-11-10 16:45
设计资源 培训 开发板 精华推荐
- zvs- 贴片版
- 使用 Semtech 的 SC1541 的参考设计
- MPC5674FVBBOARDS: MPC5674F VertiCal基础板
- 使用 NXP Semiconductors 的 BFU730F 的参考设计
- LTC3621HMS8E-2 1.2V 输出、同步至 600kHz、强制连续模式同步降压型稳压器的典型应用
- LT6656AIS6-3、3V 微控制器电压基准和稳压器的典型应用
- AM2G-0512SH30Z 12V 2瓦DC-DC转换器的典型应用
- EVAL-AD7939CBZ,用于 AD7939、10 位、8 通道并行 ADC 的评估板,带有定序器
- 使用 LT3045EMSE 线性稳压器进行比率跟踪的典型应用
- NX5P3001 充电器和USB-OTG组合应用的双向高端电源开关典型应用电路