使Arduino支持ATMEGA 168P(烧录BOOTLOADER)

    最近在做一个小玩意,因为第一个DEMO是在Arduino Pro Mini上完成的,使用各种模块用漆包线连接搭起来的,决定还是继续在使用Arduino框架的基础上制作完整的PCB板。

    在选购单片机芯片时,发现ATMEGA168P 比 ATMEGA328P便宜一些,在Arduino IDE上似乎可以支持,IDE芯片选型上有ATMEGA168的选项,虽然DEMO是基于ATMEGA328P的,但是Arduino上更换芯片,程序并不需要进行修改,于是就购买了ATMEGA168P,(真是给自己挖了个坑)。

     芯片到了以后,因为Arduino程序一般是串口下载的,我画的PCB板上也只留了串口的接口(其实是可以使用ISP下载的,使用11、12、13引脚下载,但是PCB上我没有留出接口)。

    和直接购买的ProMini最小系统板不同的是,购买的开发板商家都会先帮你烧录好BootLoader,这样才可以直接用串口下载,但是购买的芯片的话,是没有烧录任何东西的。

     为了下载程序方便(使用串口下载),第一步就是给芯片刷BOOTLOADER,也就是IDE上所说的引导程序,我以为用Arduino as ISP(用另一块Arduino作为ISP下载器)下载就可以了,但是始终下载不了,原因是当我在IDE上选择的是ATMEGA168,它的特征字(signature)是1E:94:06,而我使用的是ATMEGA168P,它的特征字是1E:94:0B,所以ISP下载会失败。

 

    在网上查了一会,要通过修改boards文件,根据实际的特征字,在IDE中添加开发板,尝试了几个小时,Arduino IDE被我改的乱七八糟,虽然不会出现特征字不符的错误提示了,等待十几秒后还是下载失败。于是放弃。

    芯片型号  ->  特征字

    ATMEGA328P        ->  1E:95:0F

    ATMEGA168          ->  1E:94:06

    ATMEGA168P        ->  1E:94:0B

 

    购买了USBISP,使用AVR_FIGHTER。

   

    ISP接口定义

    先读取特征字,能读取到正确的值,确定芯片和晶振焊接没有问题。

 

 

      出现提示,不用理会,因为这个软件的芯片选择里本来就没有168P这个芯片,把能读取的都读取一遍,以再次确认一下连接有没有问题,需要注意的是不要手滑点到了写入,写入错误的值可能会锁芯片。

    芯片默认的熔丝位是:低位0x62,高位:DF,特殊位:F9(如上图)。

    我们要设置成FF,DD,00

    接着就是烧录BOOTLOADER,装FLASH->选择ATmegaBOOT_168_diecimila.hex ->芯片编程

以我装在D盘的IDE为例,文件在D:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega

 

    等待编程和校验完成。

    如果烧录成功的话,在13引脚的LED灯会每隔1s闪烁一下。

    使用串口下载Blink程序,成功。

    注意复位电路,单片机RESET引脚应接一个10K电阻上拉,再接一个0.1u电容到USB转串口的RTS接口上(即DTR连接到RTS),以实现下载程序时自动复位。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值