单片机不工作,稍微有点基础的人都会去查电源、晶振等硬件及源代码,关键是具体到一个特定项目(系统)怎么去查,就此做一些个人经验介绍。
1.单片机本身就是集成数字电路,主要通过IO端口与外设联系,当端口电平异常时(一直为逻辑0电平,一直为逻辑1电平或在它们范围之外),将可能导致程序反复中断或进入死循环,尽管单片机还在忙个不停,对外表现就是不工作了!此时应借助硬件仿真,查找对应IO口,进而查出与之相连元件及传感器故障。
2.不同电压等级单片都有特定的电源范围,低于下限将造成单片机逻辑电平不定,高于上限则可能烧坏单片机,二者表现都是不工作,此时应验证电源功率是否足够大,去掉大功率外设试试!与单片机共用电源的元器件是否有短路点?如钽电容击穿短路,PCB走线有短路毛刺等。
3.您的单片系统是否考虑了EMC,当有强烈干扰源,如PWM方式控制IGBT,同时您的设计未考虑抵抗EMI措施,这将极易造成程序跑飞,表现是不工作,或反复重启(有WDT),应对办法是在干扰路径上加滤波电路,如在电源交流通路上加共模电感,Y电容。或加屏蔽罩并对之合理接地。
4.单片机资源有限,常常采用串行方式与外设通信,当电平不兼容,如单片机是TTL电平,而外设是RS232电平标准,此时无法通过HMI进行控制,感觉上是单片不工作了,例如LCD无显示,触摸屏按钮不起作用。聪明的你应该知道怎么处理了!
5.单片机是靠软件循环工作的,低端单片机的内存RAM和程序存储器一般都不大,如果你的系统比较复杂,同时你C语言比较牛,当全局变量和静态变量使用太多时,内存不够用,会出现很多无法预料的怪异现象,包括单片机不工作。