首页 > 应用 > 单片机应用
[导读]最近做一个新东西, 正好手边有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执行.

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


换一批

延伸阅读

[单片机应用] 移植嵌入式Linux到ARM处理器S3C2410:BootLoader

移植嵌入式Linux到ARM处理器S3C2410:BootLoader

BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好......

关键字:移植 Linux ARM处理器 S3C2410 BootLoader

[单片机新品] 建安全的连网应用太费力?这款Microchip AVR MCU开发板可轻松实现

建安全的连网应用太费力?这款Microchip AVR MCU开发板可轻松实现

为了扩大与 Google Cloud的合作,美国微芯科技公司(Microchip Technology Inc. )推出了全新的物联网快速开发板,让设计人员能够在几分钟内创建连网设备原型。该解决方案结合了强大的AVR® 单片机(M......

关键字:Microchip AVR MCU 开发板

[单片机应用] avr单片机proteus仿真第三课:单只数码管

avr单片机proteus仿真第三课:单只数码管

数码管选7SEG-MPX1-CC,共阴极数码管。也就是低电平选通(最右脚),数码管左边8只管脚,从左到右,由低到高,分别接PC0---PC7。c程序如下:#include#include#define int8u unsigned char......

关键字:avr单片机 proteus仿真 数码管

[单片机应用] ATmega16单片机(AVR)主要特点总结

ATmega16单片机(AVR)主要特点总结

下面就总结一下AVR单片机ATmega16的主要特点:(注: 括号内有红色 *x*符号的表示文章下方会有解释/扩展)1) 采用 RISC 结构的AVR内核单片机.131 条机器指令, 大多数指令为单个系统时钟周期执行的指令;32 个 8 位......

关键字:ATmega16 单片机 AVR

[单片机新品] 喜大普奔!MPLAB X集成开发环境现已支持AVR单片机

喜大普奔!MPLAB X集成开发环境现已支持AVR单片机

随着美国微芯科技公司(Microchip Technology Inc)推出MPLAB® X集成开发环境(IDE)5.05版,目前暂属测试版,可支持大部分AVR MCU。未来的MPLAB版本还将加入更多增强的功能以及对其他AVR ......

关键字:MPLAB X 集成开发环境 AVR单片机

[单片机应用] AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—03

AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—03

十、ATMEGA16的同步串行接口SPI十—(03)、ATMEGA16的同步串行接口SPI的串行通讯实验—通过效率最高的中断法~~然后就是程序了~~IAR10_2_M.c//---------------------------------......

关键字:AVR单片机 ATMEGA16 同步串行接口 SPI

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客