开发单片机期间可能会遇到一些故障问题,尝试检查以下地方,可能会帮助您找出问题所在。
1. 测量时钟
观察单片机系统时钟或其他模块(如定时器或ADC)是否存在并正常工作以确保其逻辑操作。最简单的方法是将时钟切换到相关的GPIO引脚,并使用数字示波器进行测量。
2. 电源电压
检查电源电压或单片机内部稳压电压是否正常,而电压没有任何意外的下降或尖峰。最好的方法是使用具有足够带宽的数字示波器,来检测任何意外的电压瞬变。
3. 检查软件
在软件应用中,检查是否有任何软件循环要求单片机轮询某些标志或等待任何输入信号。例如,当ADC回路仅等待来自外部传感器输入的指定信号时,单片机可能会发生故障,这是由于外部传感器无法按预期输出信号。
4. 电流消耗
如果单片机的电流消耗相比其低功耗模式的电流消耗低很多,单片机可能处于睡眠模式而没有工作。在这种情况下,可能是由于时钟或输入相关的故障,导致某些中断无法触发。
如果单片机电流消耗高得惊人,这一物理损坏可能会导致单片机异常运行或闩锁情况。在这种情况下,电源循环可以帮助区分单片机是永久性损坏或是闩锁问题。
一些单片机常见问题的解决办法
1.PIC12F629仅有一个中断入口,要避免多个中断引发的冲突。
2.引脚电平变化触发中断,和外部INT中断,在总中断GIE清零的时候,不会进入中断程序执行。
3.单片机进入休眠时,要唤醒,常常使用引脚电平变化中断或者外部INT中断。若是前者,按键按下时会唤醒,按键抬起时也会唤醒。如果这个时候还有别的中断,如初始化了定时器,GIE置位了,两种中断就会冲突
4.如果PIC单片机的I/O口作为输入引脚使用,初始化时必须要关比较器,否则,不会响应。
5.看门狗溢出会导致单片机从休眠中醒来。
6.使用PT2262和单片机做发射端时,如果用电池,要做到最省电。正常时,单片机休眠,PTT2262不上电,可以用三极管控制PTT2262的电源端,仅在发射时上电一次。
7.315MHZ的调幅电路中,选频电感可以使用模压电感,也可以自己绕,当然最好使用一端环形PCB铜线。
8.315Mhz的收发天线长度计算公式:L=1/4波长;而波长=3.0*10^8/315Mhz 算出 最佳匹配天线约25cm,可以使用拉杆天线,当然在PCB上用一段长的粗线也可以。
9.接收端使用的是超再生接收电路,网络上普遍流传的那张图纸被人原搬下来后,可以使用,我也剽窃了一次,希望也可以。要想看懂,真不容易。
10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。
10.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大
11.调试时一定要有耐心。沉住气,多反思,没有谁一下子就会成功,之前都会失败很多次。想不通时把问题说出来,旁观者清,别人可以给你启示。
51单片机下载失败常见原因
1.查看单片机是否插反了;
2.下载软件选择正确的单片机型号(注意STC89C52和STC89C52RC是不同的) ;
3.检测是否连接了晶振 ,时候有晶振接触不良的现象 ;
4.查看电脑com是否有多个,是否选错了com口 (是否安装了相应的驱动);
5.单片机开发板是否重新上电了(下载单片机程序需要冷启动过程) ;
6.注意是否有短路(比如开发板下面最好铺一张纸,不要被短路) ;
7.下载软件用的什么版本,旧版本可能需要设置最低、最高波特率,并且还会出现很多奇怪的现象,比如第一次烧写用一个波特率,第二次就不行了,但是有时候却一直可以(个人经验)。新版本不用设置,并且不用等待软件提醒上电才可以上电,点击下载后,直接重新上电即可,建议尽量使用新版 ;
8.如果使用的是CH340/CH341或者PL2302,检测RXD/TXD是否连接反了。(注意PL2302,驱动,新版的驱动只支持正版芯片,这个一定要注意,很多人会沿用老版本驱动,不建议用PL2302)
9.换一个单片机试试看,验证单片机是否已损坏。
10.一部分人修改上一次工程代码,然后直接编译,下载无效果。可能是新的代码编译有错(编译有三个按钮,请注意区别差异),导致目标文件未生成,hex文件未更新,所以下载的还是上一次的程序。这里要注意。
11.STC-ISP软件选择hex文件后,要勾“每次下载前都重新装置文件”,这样有三大好处:(1)免去每次编译都重新手动装在hex文件(2)避免因忘记手动重新装载hex文件,而导致下载的hex文件还是上一次的hex文件,代码下载后现象和上一次一样,误以为还是程序问题(3)方便快速调试代码。
12.连接线可以出现问题,比如接触不良,线头脱断等。
13.芯片“锁死”。STC-ISP软件设置问题,上一次下载程序的时候,在STC-ISP可能勾选了“下次冷启动时,P1.0 / P1.1为0/0才可以下载程序” , 这种情况,试着将此两个IO拉低,下载程序试试看。