Arduino中国 | Flamingo EDA

Jan/08

27

DIY Wiring: AVR电路

Wiring的核心是一个ATmega128单片机,也是整个电路中最复杂和最容易出错的部分。焊接上因为有了之前FT232BL的相关经验,并没有遇上太大的麻烦,而剩下的一些贴片元件基本上也不算太难。唯一遇到的问题可能就是这些元件实在太小,本人的眼神又不算太好,经常弄飞一两个,掉在地上找不着了:)

类型 标记 数量 规格
AVR单片机 IC1 1 ATmega128-16AU
电容 C6, C7 2 22pF
电容 C8, C9 1 100nF
电阻 R7 1 10K
电阻 R8, R9 2 1.8k
电阻 R11 1 270
电阻 R14, R15 2 1K
晶振 Q2 1 16M, 二脚直插式
晶振 Q3 1 32.768K, 32C31, 四脚表贴式
按钮 RESET 1 四脚直插式
发光二极管 PWR 1 红色
发光二极管 LED 1 绿色
10P引脚座 ISP 1 黑色

最后焊好的效果图:

Wiring的bootloader是事先驻留在ATmega128里的一小段程序,它的作用接收来自于Wiring IDE的命令,实现Wiring工程的下载。往AVR芯片里烧bootloader是非常关键的一步,同时也是对芯片能否正常工作做初步的检测,AVR系列芯片都提供ISP接口,借助这一接口和PonyProg这样的软件,就能够实现对bootloader的烧写。

早先就听网友说过Wiring的bootloader在Wiring的网站上找不到,试了一下果然如些,难怪Wiring不如Arduino那么流行;-) 没有办法,按照论坛里的提示,给作者发了一个邮件要bootloader,等了一天拿到bootloader的HEX文件。

有了之前DIY Arduino的经验,AVR熔丝位的设置这回一开始就考虑到了,按照网上搜索到的文章里的说明,下图在PonyProg中为ATmega128设置的熔丝位:

接下去的过程比较顺利,用PongProg和自制的并口下载线成功地将bootloader烧写到Wiring上的ATmega128中,由于ATmega128的Flash有128K,所以相应的烧写时间比较长。

最后一步就是如何将Wiring程序下载到Wiring板上了,这与在Arduino上是一样的。下面是我试验的第一个Wiring程序:


int ledPin = 0;

void setup()
{
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

该程序比较简单,只是不断地点亮接在数字I/O管脚0上的LED,实验成功!之前我担心最有可能出现问题的电路部分基本算是调试成功。当然,之后要一个一个验证每个管脚的功能,一共50个,哈哈:)

No tags

2 comments

  • pemiamos · 2008/01/28 at 4:37 PM

    现在连这个板子都做出来了啊~~~
    恭喜恭喜啊~~

    我要是以后在学校里开课的话,请兄台来做指导啊~~

  • Author comment by flamingoeda · 2008/01/28 at 4:41 PM

    有机会的话当然乐意,哈哈;-)

    现在只剩下最后的外部电源部分和EEPROM部分等待焊接,还有就是整个板子完整功能的验证,有消息会第一时间通知大家,还望多多关注!

Leave a Reply

<<

>>