极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 151520|回复: 76

Arduino 1.0——让最小系统更简单

  [复制链接]
发表于 2012-5-19 13:24:53 | 显示全部楼层 |阅读模式
前不久看了弘毅大哥的《arduino学习笔记19 - Atmega8制作最小arduino系统》,就一直想自己做个最小系统。但在做的过程中坎坷极多,在弘毅大哥的耐心指导下,最终还是搞定了……(弘毅大哥,好人哪!!!!!)和以往不同,这次用的是Arduino1.0,并且使用了“Upload using Programmer”功能,直接使用USBtinyISP下载程序,省去了usb转串口的下载器,同时也最大限度的避免了许多麻烦,下面就和大家分享一下我的制作过程。

材料准备:
1、ATmega 8(可以是“ATmega 8A-PU”、“ATmega 8PU-8PU”或“ATmega 8-16PU”,具体的差别下面会说)
2、22pF陶瓷电容两个
3、晶振一个(“ATmega 8A-PU”、“ATmega 8PU-8PU”用8M,“ATmega 8-16PU”用16M)
4、USBtinyISP一个

一些基础的东西就不多说了,大家可以参考《arduino学习笔记19 - Atmega8制作最小arduino系统

先看Atmega8引脚示意图:


电路一共分两个部分:
1、震荡电路:

晶振连接Atmega8的pin9(PB6)、pin10(PB7),在分别连接连个22pF的电容,最后让一只电容接地。

2、程序下载以及供电部分:
ICSP引脚连接图:

+5V → pin7(VCC)
GND → ping22(GND)
D11 → pin17(PB3)
D12 → pin18(PB4)
D13 → pin19(PB5)
reset → pin1(reset)


这是我连接好的照片:


我还加了一个红色的LED做电源指示,如果有对电路连接不清楚的同学,可以去看看弘毅大哥的文章,连接方式是完全相同的。

下面就该给Atmega8下载bootloader了,现在就有两种情况:

1、如果是“ATmega 8A-PU”和“ATmega 8PU-8PU”,因为IDE里没有直接支持8M的板子,所以要自己改造一下:
下载下面的文件,解压后放在hardware\arduino\bootloaders\optiboot目录下,并在hardware\arduino\boards.txt里添加如下信息:
  1. ##############################################################

  2. atmega8_8M.name=ATmega8_8MHz

  3. atmega8_8M.upload.protocol=arduino
  4. atmega8_8M.upload.maximum_size=7168
  5. atmega8_8M.upload.speed=115200

  6. atmega8_8M.bootloader.low_fuses=0xa4
  7. atmega8_8M.bootloader.high_fuses=0xdc
  8. atmega8_8M.bootloader.path=optiboot
  9. atmega8_8M.bootloader.file=optiboot_atmega8_8M.hex
  10. atmega8_8M.bootloader.unlock_bits=0x3F
  11. atmega8_8M.bootloader.lock_bits=0x0F

  12. atmega8_8M.build.mcu=atmega8
  13. atmega8_8M.build.f_cpu=8000000L
  14. atmega8_8M.build.core=arduino
  15. atmega8_8M.build.variant=standard
复制代码


这时启动IDE,你就能在board里看到“Atmega8_8M”,选择他就对了。


2、如果是ATmega 8-16PU,在选板子时直接选择“arduino NG or w / ATmega 8"就可以了。

选好板子后,使用USBtinyISP下载bootloader,当看到如下图片是,就说明下载成功了。



好了,从这里开始就是和其他最小系统不同的地方了,通常我们会使用一个USB转TTL的下载器来下载程序,但因为种种原因,很多时候会出错。所以今天我们使用Arduino 1.0的“Upload using Programmer”功能来下载程序。

首先电路连接不变,还是使用下载bootloader的线路。然后确保你使用的IDE是Arduino 1.0(在Arduino的官网,一进下载软件页面的就看得见了),然后选择板子,还是和上面一样,ATmega 8-16PU可以直接用;“ATmega 8A-PU”和“ATmega 8PU-8PU”请先改造程序,然后写代码(我写了一个LED闪烁的程序来测试)
  1. int led = 12;

  2. void setup()
  3. {
  4.   pinMode(led,OUTPUT);
  5. }

  6. void loop()
  7. {
  8.   digitalWrite(led,HIGH);
  9.   delay(1000);
  10.   digitalWrite(led,LOW);
  11.   delay(1000);
  12. }
复制代码
写好后点击最左边的那个钩(编译)。


最后是下载,大家可以看一下,在tools下新增加了一个“Programmer”,点开后选择USBtinyISP,Serial Port就不用选择了。


最后打开“File”,你可以看到"Upload using Programmer",点击后程序就开始下载了。


这是程序下载完后的照片,如果图片能动,你就能看见绿色的LED在闪烁。



总结:如果按照以前的方法制作最小系统,下载bootloader和程序要使用两套电路。而且在下载程序时,TX和DX对下载线路的要求很高,还需要连接复位电路。而使用Upload using Programmer下载程序,仅需使用一套电路,简化了连接电路带来的不便,不需要转换器、不需要复位电路。最大限度地避免了许多麻烦。

有兴趣的同学可以来试试。

这是之后焊在洞洞板上的最小系统,效果还不错~


因为是第一次使用洞洞板,所以焊的水平还有望提高!


[attachimg]4559[/attachimg]
最小系统和arduino和比较~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-5-19 20:01:20 | 显示全部楼层
用022版本能编译的程序放到1.0版本不能编译了,如果用022版本编译好的HEX文件放到1.0版本的文件夹里,然后用你这个方法不知道是否可以下载成功?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-19 21:13:04 | 显示全部楼层
这个。。。我也不知道啊!因为我玩的程序都比较简单,所以好像都能编译成功!
回复 支持 反对

使用道具 举报

发表于 2012-5-19 21:57:07 | 显示全部楼层
支持,好帖子!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-19 22:51:58 | 显示全部楼层
Randy 发表于 2012-5-19 21:57
支持,好帖子!

嘿嘿~十分感谢!
回复 支持 反对

使用道具 举报

发表于 2012-5-20 10:56:02 | 显示全部楼层
我前两天也刚玩过  不过用的usbasp
回复 支持 反对

使用道具 举报

发表于 2012-5-20 10:56:32 | 显示全部楼层
没用ide下bootloader  用的avrfighter或progisp
回复 支持 反对

使用道具 举报

发表于 2012-5-20 11:58:37 | 显示全部楼层
求教下,你图上选择的单片机好像是错的,你用的是16M的芯片为啥不选NG呢,NG貌似是16M运行的,你选的是atmega8L的选项吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-20 14:07:11 | 显示全部楼层
darkorigin 发表于 2012-5-20 11:58
求教下,你图上选择的单片机好像是错的,你用的是16M的芯片为啥不选NG呢,NG貌似是16M运行的,你选的是atme ...

对~16M用的是NG,我的单片机是ATmega8A-PU,标准晶振是8M,所以选板子时选的就是8L了!
回复 支持 反对

使用道具 举报

发表于 2012-5-20 15:39:46 | 显示全部楼层
好贴,改天我也买来元件试试
回复 支持 反对

使用道具 举报

发表于 2012-5-20 20:13:55 | 显示全部楼层
羡慕,希望我后面也能做到。
回复 支持 反对

使用道具 举报

发表于 2012-5-20 20:32:16 | 显示全部楼层
arduino-tinker 发表于 2012-5-20 14:07
对~16M用的是NG,我的单片机是ATmega8A-PU,标准晶振是8M,所以选板子时选的就是8L了!

8APu是16M速度的。。。
只有8LPU是低速的 L 就是 LOW SPEED的缩写吧。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-21 00:18:10 | 显示全部楼层
darkorigin 发表于 2012-5-20 20:32
8APu是16M速度的。。。
只有8LPU是低速的 L 就是 LOW SPEED的缩写吧。。。

这。。。因为我也是第一次8A-PU,在网上查了一下,问了下弘毅大哥,好像说的都是8M!等改天换16M试试~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-21 00:21:21 | 显示全部楼层
GeMarK 发表于 2012-5-20 20:13
羡慕,希望我后面也能做到。

嘿嘿,记得第一次回你帖子的时候就提到了最小系统!主要是想做一些实用的成品,但用买的arduino太贵,不划算!所以就自己做板子啦!
回复 支持 反对

使用道具 举报

发表于 2012-5-21 00:27:21 | 显示全部楼层
arduino-tinker 发表于 2012-5-21 00:21
嘿嘿,记得第一次回你帖子的时候就提到了最小系统!主要是想做一些实用的成品,但用买的arduino太贵,不划 ...

想法其实很对啊。其实一般的应用 需要用到的管脚很少,个人认为单片机大多数工作状态是主要就几个数字脚输入输出,不行就加几个模拟脚接传感,然后在串行通讯。
代码也不会涉及高级算法(毕竟运算能力和容量不是单片机的长项,需要控制能力和运算的应用一般都是计算机+单片机共同完成的)
所以其实8A或者8L这样的单片最小系统再合适不过了。成本真的很低啊(你这套20不到就能搞定吧)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 16:40 , Processed in 0.052364 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表