利用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}}
~~空空如也

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

所属专业
上级专业
同级专业
ry7740kptv
学者 机友 笔友
文章
89
回复
1542
学术分
5
2010/06/13注册,1年7个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

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