[Arduino]用 ATmega8L-8PU 体验 Arduino

玩了一阵子 Arduino,发现一个诡异的问题,玩 Arduino 核心的单片机,基本是 ATmega168,例如 Diecimila,而现在基本都是更高级的 ATmega328,以 UNO 为代表。因为 Arduino 的逐渐流行,这两款芯片也是水涨船高,身价倍增,甚至供货都比较紧张。而另一方面,市面上货源最为稳定的,而且价格实惠的,(虽然有人说这个型号十年前就停产了),却是 ATmega8L,注意是带L的,也就是额定最高主频是8M的那款。

##############################################################

atmega8_8M.name=ATmega8_8MHz

atmega8_8M.upload.protocol=arduino
atmega8_8M.upload.maximum_size=7168
atmega8_8M.upload.speed=115200

atmega8_8M.bootloader.low_fuses=0xa4
atmega8_8M.bootloader.high_fuses=0xdc
atmega8_8M.bootloader.path=optiboot
atmega8_8M.bootloader.file=optiboot_atmega8_8M.hex
atmega8_8M.bootloader.unlock_bits=0x3F
atmega8_8M.bootloader.lock_bits=0x0F

atmega8_8M.build.mcu=atmega8
atmega8_8M.build.f_cpu=8000000L
atmega8_8M.build.core=arduino
atmega8_8M.build.variant=standard


使用新的 Bootloader,只是选择不同的 Bootloader 文件,以及在 (ADE)\hardware\arduino\boards.txt 文件内添加配置信息就可以了。我使用的ADE(Arduino Development Environment)是1.0的版本。

适用于 ATmega8L 的 Bootloader 下载地址:Atmega8_8M.zip

需要向 Board.txt 文件中添加的内容,见文章开头部分。

一些说明:

      该Bootloader为自定义 OptiBoot 后编译生成,hex和lst文件,可保存在bootloaders\optiboot文件夹内。
      使用内部 RC 振荡器,时钟频率为 8MHz。
      同样适用于 ATmega8-16PU、ATmega8L-8PU
      阅读配置文件可知,熔丝位配置为,低位0xa4,高位0xdc,下载波特率为115200

一些诡异的情况:

      如果自动下载不稳定,可以尝试手动复位。对 M8-16PU 的 DTR 自动复位比较成功,而对于M8L经常无法自动复位,按说是挺没道理的。
      若给ATMega8L采用3.3v供电,程序依然可以运行,但是似乎无法烧写程序,手动复位依然不行。
      串口通讯不稳定。如果项目牵扯到串口通讯,建议还是采用 时钟更为稳定的外部晶振。但是实测中,按照115200这样的高波特率又能完成下载,是不是很神奇?

本文参考了以下文章:

在此向各位 Arduino 开源社区的前辈表示感谢。 同时,可以参考本人之前的2篇Blog,分别是:

我自己实验的时候使用的板子及方法,在这两片文章都有介绍。 希望找到更加实惠方案体验 Arduino ,不急于购买 Arduino 标准板的朋友,不妨试试看。 特别感谢:@极客工坊 @圣源电子

关于aGuegu

阿古 真名:官微宏,技术Geek,玩Arduino,玩Linux,爱Google,爱开源;现居福州
此条目发表在内功心法分类目录,贴了, , , , , 标签。将固定链接加入收藏夹。