利用M8自制简易Arduino平台的一点小经验
ry7740kptv2013/08/24电子技术 IP:山东
Arduino作为基于AVR高性能单片机的便捷开发平台受到广大爱好者的喜爱,业余时间俺也准备研究下。由于最近口袋紧张的要命,正巧手头有几片闲置的ATmega8芯片,想尝试自制一个Arduino平台。参考了网上的教程,借助USBASP将固件下载到M8芯片里,但是发现用串口线始终无法正常Upload程序。但是用USBASP烧录的程序可以正常运行。

一开始以为串口线有问题,换了若干根皆无效。用USBASP烧录了一个串口发送文本的小程序测试,发现串口收到的数据不正常:程序里设置波特率为9600,但是在串口调试窗口里必须用4800波特率才可收到正常字符否则为乱码。想了下,立马查看boards.txt文件,发现对“Arduino NG or older w/ ATmega8”的定义中“atmega8.build.f_cpu=16000000L”,这么看问题就明确了,原来Arduino对M8的支持仅仅是ATmega8-16PU,即16MHz版本的,而我用的是8PU,晶振装的也是8MHz的,所以时钟不对,串口自然不能正常收发,也就解释了为什么用串口下程序不行。

那么解决办法很简单,把atmega8.build.f_cpu后改为=8000000L即可,但是这又带来新的问题,因为Arduino原自带固件是针对16MHz主频下的,所以即使改了编译环境对时钟频率的定义串口也不能正常下载程序。所以俺又百度了下,找到一个老外开发的针对8MHz主频的M8的修改版固件,下载后替换原固件,写入芯片,发现依然不能通过串口下程序。反复折腾了几次,终于发现此固件是针对ATmega8L低压版设计的,并且是使用内部8MHz RC振荡器作为时钟源的,而我用的是ATmega8A,虽然理论上讲8L和8A可以互换没什么大的区别,但是抱着试一试的心态,换一颗8L到板上,并且配置熔丝位为使用8MHz内部RC振荡器,烧写修改版固件,终于串口下载正常了!

总结下:使用M8芯片制作Arduino需要ATmega8-16PU或者ATmega8L-8PU,其中后者需要使用老外的修改版固件并且修改boards.txt里对下载波特率、CPU时钟和熔丝位的定义,固件已上传附件,boards.txt文件修改方法见readme.txt文件~

(最后说一下M8的价格已经直逼STC51了,很值得一玩的~)
attachment icon Atmega8_8M.zip 7.60KB ZIP 36次下载
+2  科创币    20!Dopaminor    2013/08/25 高质量发帖
+300  科创币    novakon    2013/08/25 优质资料
+10  科创币    发热门诊    2013/08/30 高质量发帖
来自:电子信息 / 电子技术
3
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
飞天狂想
11年5个月前 IP:未同步
563417
最近这个单片机很火啊,俺还木有下手,观望。。。。。。。另外,对这个单片机不是很了解,能简单的解释下吗?为嘛不干脆叫AVR为什么叫那个ARDUINO??他们有什么区别?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon
11年5个月前 IP:未同步
563445
回 1楼(飞天狂想) 的帖子
arduino就是AVR穿上了漂亮的代码外衣,焊上了漂亮的开发板之后的名字。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
ry7740kptv
学者 机友 笔友
文章
89
回复
1542
学术分
5
2010/06/13注册,1年8个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}