首页 > 应用 > 单片机应用
[导读]最近做一个新东西, 正好手边有ATMega128的芯片, 资源也足够用, 于是决定就用它了. 考虑到以后PCB会装到外壳中, 导致软件升级困难, 而正好在电路中会用到蓝牙串口, 于是决定使用串口更新程序. 于是乎在网上找到”AVR通

最近做一个新东西, 正好手边有ATMega128的芯片, 资源也足够用, 于是决定就用它了. 考虑到以后PCB会装到外壳中, 导致软件升级困难, 而正好在电路中会用到蓝牙串口, 于是决定使用串口更新程序. 于是乎在网上找到”AVR通用Bootloader“, 打算折腾一番.

本文引用地址: http://www.21ic.com/app/mcu/201807/782510.htm

不得不说作者很牛X, 考虑的也很周到, 特意制作了一个兼下载与图形化配置的软件, 直接生成配置头文件, 和编辑的批处理文件, 相当方便, 所以这一部分很简单, 配置了一下, 编译, 然后使用ISP下载到MCU中, 嗯, 别忘记还要配置一下Boot相关的熔丝.
完成之后写了一个简单的程序使用Bootloader下载到芯片中进行测试. 程序的内容很简单, 就是让一个外接端口的LED不停的闪烁. 程序下载很顺利, 但是结果却让人很忧伤. 程序会正常运行, 但是LED闪烁几下之后会再次进入Bootloader, 再进入用户程序, 闪几下LED, 再进行Bootloader, 如此往复.

我很抓狂, 熔丝检查了一遍又一遍, 没问题, 使用ISP将程序读出来, 也没发现有什么诸如程序未全部下载或者出现错误等问题, 没办法, 认真的读完作者提供的使用说明, 还是无果. 怀疑编译器优化太厉害导致出错, 于是更改优化等级, 还是依旧. 手边没有调试器, 无法跟踪, 事情至此陷入僵局. 无奈只好又配置了一遍参数, 再试了几次, 打算再不行就啃源代码了. 在进行配置的时候忽然注意到看门狗的选项, 恍然大悟:在Bootloader中配置了看门狗, 但在程序跳转到用户程序后没有进行喂狗操作, 看门狗饿死后直接复位了系统, 然后MCU又从Bootloader开始执行…..如此往复, 造成程序不断在Bootloader和用户程序间跳转的错觉.

知道原因后就好解决了, 在用户程序中进行喂狗操作, 然后就正常了. 正如你猜的, 这事情还没完. 使用Bootloader能正常下载后又发现一个问题: 第一次使用Bootloader下载是正常的, 但是从第一次下载后就再没法下载了!

我很奇怪, 怎么可能出现这样的问题!? 再一次检查熔丝, 重新配置下载, 问题依旧. 至此我已经在电脑前坐了快5个小时了, 暗骂了几句后决定出去走走.

回来之后又试了一次, 不过这次鬼使神差的拔掉了GND线, 再接上, 居然能正常下载了!

仔细一想, 也想通了: 这个AVR的板子是我自己做了, 因为空间有限, 没有使用复位按钮. 因为调试的时候电源线和GND线是通过杜邦线连接上去的, 所以重启的时候拔一下电源线就好了, 却没料到这次居然栽了! 具体原因可能是我拔线后再插上的时间太短, 滤波电容里存储的电量和串口线上电流(因为串口在不停的发送连接密码)使得MCU没有完全复位, 所以使得再次接上电源后程序没从Bootloader执行.

想想挺简单的两个小问题, 居然让我折腾了快一天. 汗.


换一批

延伸阅读

[单片机应用] AVR单片机IC卡程序

AVR单片机IC卡程序

AVR单片机IC卡程序#include#include#defineucharunsignedchar#defineuintunsignedint//**********定义全局变量*****************......

关键字:单片机 程序 AVR IC

[单片机应用] ICCAVR自动下载程序说明

ICCAVR自动下载程序说明

ICCAVR软件有ISP功能,能过调用STK500完成的,只要设置好参数,在ICCAVR中就可以给芯片编程了,还可以让程序一编译完就自动下载到芯片中,相当方便。在Tools->environmentoption......

关键字:程序 ICCAVR

[单片机应用] AVR单片机(学习ing)—(四)、ATMEGA16的定时/计数器—04

AVR单片机(学习ing)—(四)、ATMEGA16的定时/计数器—04

四、ATMEGA16的定时/计数器四—(04)、0~5V数字电压调整器PWM数字电压调整器由于定时器2(就是上一个实验)只能构成8位的PWM,作为数字电压调整器其精度不够,这里用定时器1构成10位PWM来实现0~5V的数字电压调整值显......

关键字:AVR单片机 ATMEGA16 定时 计数器

[单片机应用] avr单片机proteus仿真第二课:流水灯

avr单片机proteus仿真第二课:流水灯

先实现一个最简单的avr单片机proteus仿真,流水灯。对IO口写数据要先设置DDRxn=0xff,然后才输出PORTxn=输出数据。电路仿真图如下:avr c程序如下:#include #include int main(void){u......

关键字:avr单片机 proteus仿真 流水灯

[工业控制] 机器视觉行业的现状和未来

机器视觉行业的现状和未来

实现“中国制造2025”,完成从制造大国向制造强国的转变,智能制造是主攻方向。在智能制造过程中,机器视觉主要用计算机来模拟人的视觉功能,也就是把客观事物的图像信息提取、处理并理解,最终用于实际检测、测量和控制。随着智能制造的愈演愈烈,市场对......

关键字:工业控制 机器人 智能化

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客