今天给一个新的PCB下载程序,芯片是324P,第一次一切正常,之后就出现奇怪问题,有时找不到编程器,有时下载完后校验错误,每次下载错误的地址都不一样,有时上电后又能正常下载,重新焊接过芯片,更换USBASP都试过,总是出现问题,非常不稳定,以前从来没有遇到这种情况,曾经一度怀疑是芯片问题,现在终于找到原因,问题解决
原因分析:这个PCB上面有一个SRAM芯片,其DATA引脚和324P的几个MOSI,MISO,SCK等ISP下载引脚共用,因为程序开始时会把SRAM的OE设置为输出状态,所以第一次下载程序后,以后每次上电都立即在ISP引脚处输出SRAM里一个随机位置里的数据:Q,在ISP下载发送RESET命令后,AVR对应SRAM的OE引脚的控制脚立即处于高阻态,但是之前设置的OE状态还没能立即撤消,SRAM仍处于输出状态,这个SRAM的短路电流有几十mA,足以使ISP功能受到干扰。表现为第一次下载完成后,以后的下载都非常不稳定
解决方法:在SRAM的OE脚飞线连接一个10K电阻到5V,当AVR处于RESET状态时,AVR对应SRAM的OE引脚的控制脚立即处于高阻态,这时SRAM的OE引脚立即变成5V,SRAM输出脚立即变成高阻态,问题解决
|