单片机焊好之后,用AVR_fighter烧写程序提示“进入编程模式失败,请检查芯片及usbasp是不是连接正常!”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机焊好之后,用AVR_fighter烧写程序提示“进入编程模式失败,请检查芯片及usbasp是不是连接正常!”相关的知识,希望对你有一定的参考价值。

我的最小系统单片机焊好之后,用AVR_fighter烧写程序时,如果最小系统上拨码开关要在MEGE那侧就会提示wrong responses size!如果点确定的话,芯片特征字会读取完成(这一步应该能说明单片机的焊接没问题吧?),但是读flash时会出错;如果开关拨到AT52那侧,则会提示“进入编程模式失败,请检查芯片及usbasp是否连接正常!”。我的usbasp已经链接正常了,驱动已经搞好。请问我的问题出在哪里?应该如何解决呢?!!

AVR 初次使用需要配置熔丝,你仔细看一下吧!

关于avr的熔丝的使用和设置
看到这么多的人对AVR的熔丝位不会使用和误操作,给出参考。
5.1.1 正确配置AVR熔丝位
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。

(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。

(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read->fuse bits”读取芯片中熔丝位实际状态后,再使用“all” 选项。

(4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。

(5)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM中的数据,熔丝位的状态仍然可以读取但不能修改配置。芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。但芯片擦除命令并不改变其它熔丝位的状态。

(6)正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的锁定位。芯片被锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,并解除锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的锁定位。 -

(7)使用ISP串行方式下载编程时,应配置SPIEN熔丝位为“0”。芯片出厂时SPIEN位的状态默认为“0”,表示允许ISP串行方式下载数据。只有该位处于编程状态“0”,才可以通过AVR的SPI口进行ISP下载,如果该位被配置为未编程“1”后,ISP串行方式下载数据立即被禁止,此时只能通过并行方式或JTAG编程方式才能将SPIEN的状态重新设置为“0”,开放ISP。通常情况下,应保持SPIEN的状态为“0”,允许ISP编程不会影响其引脚的I/O功能,只要在硬件电路设计时,注意ISP接口与其并接的器件进行必要的隔离,如使用串接电阻或断路跳线等。

(8)当你的系统中,不使用JTAG接口下载编程或实时在线仿真调试,且JTAG接口的引脚需要作为I/O口使用时,必须设置熔丝位JTAGEN的状态为“1”。芯片出厂时JTAGEN的状态默认为“0”,表示允许JTAG接口,JTAG的外部引脚不能作为I/O口使用。当JTAGEN的状态设置为“1”后,JTAG接口立即被禁止,此时只能通过并行方式或ISP编程方式才能将JTAG重新设置为“0”,开放JTAG。

(9)一般情况下不要设置熔丝位把RESET引脚定义成I/O使用(如设置ATmega8熔丝位RSTDISBL的状态为“0”),这样会造成ISP的下载编程无法进行,因为在进入ISP方式编程时前,需要将RESET引脚拉低,使芯片先进入复位状态。

(10)使用内部有RC振荡器的AVR芯片时,要特别注意熔丝位CKSEL的配置。一般情况下,芯片出厂时CKSEL位的状态默认为使用内部1MHz的RC振荡器作为系统的时钟源。如果你使用了外部振荡器作为系统的时钟源时,不要忘记首先正确配置CKSEL熔丝位,否则你整个系统的定时都会出现问题。而当在你的设计中没有使用外部振荡器(或某钟特定的振荡源)作为系统的时钟源时,千万不要误操作或错误的把CKSEL熔丝位配置成使用外部振荡器(或其它不同类型的振荡源)。一旦这种情况产生,使用ISP编程方式则无法对芯片操作了(因为ISP方式需要芯片的系统时钟工作并产生定时控制信号),芯片看上去“坏了”。此时只有使用取下芯片使用并行编程方式,或使用JTAG方式(如果JTAG为允许时且目标板上留有JTAG接口)来解救了。另一种解救的方式是:尝试在芯片的晶体引脚上临时人为的叠加上不同类型的振荡时钟信号,一旦ISP可以对芯片操作,立即将CKSEL配置成使用内部1MHz的RC振荡器作为系统的时钟源,然后再根据实际情况重新正确配置CKSEL。

(11)使用支持IAP的AVR芯片时,如果你不使用BOOTLOADER功能,注意不要把熔丝位BOOTRST设置为“0”状态,它会使芯片在上电时不是从Flash的0x0000处开始执行程序。芯片出厂时BOOTRST位的状态默认为“1”。关于BOOTRST的配置以及BOOTLOADER程序的设计与IAP的应用请参考本章相关内容。
参考技术A 查看硬件电路是否正常:
1、工作电压对不对? 2、单片机复位电路对不对,量复位脚电平对不对?
3、用示波器量晶振是否起振?
如果上面全都正常的话单片机电路基本上是没问题的,可能是你下载线的驱动不是最新的,建议换根其他类型的下载线试试。
参考技术B raedit 是文本编辑器,就是记事本啦。
第二个没找到,找到的是progisp,USB多功能编程器支持软件

按字面理解就可以啊,第一个程序下载
记事本 编辑文本
最后这个是用来编程序的,具体怎么用就要问专业人士了。
建议用搜索,可以搜出很多,我的答案也是搜出来的啊。

非专业人士,仅供参考
参考技术C 你看下这个教程吧 http://bbs.sxtmcu.com/dispbbs.asp?boardid=2&Id=260追问

那个论坛老是登录不了,您要是有,麻烦您发到我邮箱:1047166201@qq.com。谢谢啦~

参考技术D 芯片方向放对了吗

现在单片机可以不用烧写器了吗?

烧写现在好像只针对EPROM了。

单片机都用flash了不需要高压编程,通过简单的方法就能更新程序了。比如通过串行口、SPI口、JTAG口等等。

但单片机的程序加密有的还是要通过烧写器(需要高压)完成,比如烧断引脚,加密位破坏等等。

还有就是产品量产的时候一般用烧写器。
参考技术A 需要。即使有了让人很爽的isp下载器,我们也不能说不需要烧写器啊。第一,要看你用的是什么芯片,第二,isp实质不就是烧写器的变种吗,嘻嘻 参考技术B 当然,有的可以用ISP,IAP,JTAG等都可以烧写程序。

以上是关于单片机焊好之后,用AVR_fighter烧写程序提示“进入编程模式失败,请检查芯片及usbasp是不是连接正常!”的主要内容,如果未能解决你的问题,请参考以下文章

现在单片机可以不用烧写器了吗?

FPGA中的哪个部分存放烧写的程序

如何用iar给msp430烧写程序(并口)?详细步骤

AT89c2051单片机能烧写多大的程序文件?

at89c2051如何烧写程序

如何通过JLINK烧写STM32程序