把atmega8L转到arduino平台
【第一次发贴】为什么写这个?希望正在折腾的朋友或是有缘的朋友看到。很多东西在网上也不贵,但是手里能折腾就不去买。8266玩的一段时间,就是io口太少了。家里有atmega8L开发板睡了十多年(因为不会搞电路只编程不好玩)
现在硬件没变,开发环境变了,周边可以搭配很多传感器模块。所以想不能再让它睡了。(时间太久电路图,和资料都没了)
重新在网上看资料,前前后后花了至少2周。每天花部分时间上网找资料然后测试。
第一。要把atmega8L烧bootloader。就是重装系统,来匹配arduino用ttl来上传程序。
(之前都是用usbasp上传,连线多占io多。这里把usbasp,isp原理,电路,接口都翻了出来。。)
atmega8L-8M的不知道是什么原因,烧了很多版本
ATmegaBOOT-prod-firmware-2009-11-07.hex
optiboot_atmega8.hex
optiboot_atmega8_8M.hex
这程序用progisp很容易烧,但就是ttl上传程序不能成功
把熔丝位搞明白都花了几天的时间(因为要测试,没有晶振无法芯片启动,还以为坏了。几天时间就搞这个?切记高熔丝位前3一定要是110)一定要和boards.txt当中的配置同步,分享我用的低是11111111,高11000100。有外接7.37的晶振
这里插一句arduino在工具里也有个“烧录引导程序”选项,可以选择usbasp直接烧bootloader。可以在boards.txt文件中配置bootloader的参数,但和上传程序的配置是分开的。但我为什么不能用这个方法 呢?因为我的usbasp线太久了,要用另一条usbasp来刷机,前面说过能不买就不买。。如果是新的usbasp也可以不用ttl,arduino也可以直接用usbasp来上传我们编写的程序到atmega8L,可能你也看到了菜单这个选项“编程器上传”
第二,用ttl来上传程序。这个是我8266上用的CH341模块(我之前认为usbasp就是,usb转ttl只是接口不一样)
这里ttl上传各种错,,不管怎么按reset或是长按(长按是不对的。原里是Arduino出厂默认在Flash内置了一个bootloader程序,在Arduino启动的头几秒内,bootloader会检查从串口来的数据,如果这些数据能解析成特定协议的消息格式,bootloader进入ISP模式,从串口接收数据对Flash编程。)
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x32
0x32这个数字各种变化
分析原因可能以下几点:
[*]硬件的频率晶振,和bootloder程序当中不适配,
[*]bootloader烧录的熔丝波特率和arduino的boards.txt文件配置的不一样。
[*]硬件方面ttl两根线,对调试试认为这很简单。还有就是上传程序要按reset这个要是用人手来按能叫人崩溃
[*]还有一个可以不说的,就是ttl通讯波特率的事,最好外接晶振,都说内部的不准,那以后arduino玩的就是ttl呢
心里比较乱先写这么多,
今天再找资料,8266怎么把串口转网络的事。还要做一些基础的实验。想法是通过“串口命令行”来控制IO
本帖最后由 qcomdd 于 2020-8-26 16:00 编辑
【再跟一贴子】
上一贴子内容的问题都解决了,自动重启就是把CH341烧录器里接IO0的引脚,接到开发板的reset就可以了。再也不用乱按reset
之前想做的,用8266把网络信号转到Serial,都做成功了。用telnet其实和tpc是一样的操作,也就是做成一个无线的Serial。当中走了很多弯路,然后看了bridge的示例。是用web开发API的思路,这样更容易连接到云,就必须有后台的支持,
前几天把舵机,和步进都调试好了。现在做ADXL345那么是不是可以做成一个无线,手势遥控了。理论可行不一定会做,看有没有时间和兴趣再说。
无刷还没做。想起来之前拆光驱和硬盘搞到很多小电机。现在太久都没了,从来没见过:(就像失去的人,去了回忆还能有什么?过段时间回忆也到了角落。
对了对了,之前的atm8芯片方案不完美。有时候一天或几天要重烧一次bootloader。因为会各种问题。
比如程序上传成功但是,还是老程序在运行
比如程序上传成功,没有程序在运行,灯不闪,串口也没有输出
反正重装系统就是了
楼主,请问你是刷的哪个固件把atmega8l刷成arduino的,8mhz。按教程做,ide编译失败,最新版本 感谢分享,学习一下子:P:P
页:
[1]