| 
TA的每日心情|  | 开心 2014-8-28 01:37
 | 
|---|
 签到天数: 13 天 [LV.3]偶尔看看II | 
 
 
 楼主|
发表于 2008-8-30 09:39
|
显示全部楼层 
通过实际问题进一步完善调光程序
| 昨晚测试一片LTC3454板,发现一个问题: 这个程序要求各档电流:50-200-700
 发现,50mA档会有周期性的闪烁感,仔细分析后发现闪烁的频率跟中断程序的频率一致,也就是说,程序每次进入中断程序后,都会干扰GPIO端口电平,虽然时间非常短暂,但有影响。
 那么为何其他档位就没有呢?于是展开分析
 中断程序在多数时间是检查电池电压的,电池电压靠GP3端口外接的电压检测IC检测,所以只需检测GP3端口电平即可。同时,中断程序还负责产生分组提示信号和产生2秒记忆动作。经过仔细分析和实验,发现读取EEPROM会在GPIO端口产生干扰。下面是一段实验程序:
 
 ...初始化端口和寄存器
 LOOP    BCF STATUS,RP0
 MOVLW 22H
 MOVWF GPIO          ;GP1、GP4、GP5=1
 CALL EEREAD_A
 GOTO LOOP
 EEREAD_A是读取EEPROM单元的子程序,程序里面没有读写GPIO端子的指令,对GPIO端口应该没有影响,但实际上LOOP循环中如果包含这段代码,那么GPIO端口就会有干扰出现,干扰的频率跟读取EEPROM的时间相符。
 由于LTC3454的Vc电容对输出有平滑作用,所以这种短促的干扰很多情况下看不出来。但当输出电流在某些特定值时,干扰的频率跟3454内部的参数作用,就看出影响来了。
 于是进行修改,取得满意效果,任意档位都不会有干扰的可能了:
 中断程序中增加:
 MOVF GPTMP,W
 MOVWF GPIO
 档位循环程序修改为:
 LOOP    BCF STATUS,RP0
 MOVLW 22H
 MOVWF GPIO
 MOVWF GPTMP
 GOTO $
 经过这样的修改,GPIO端口输出就“干净”了,没有任何干扰毛刺出现,同时中断程序的功能也完全正常,达到了完善程序的目的。
 紧接着的工作就是把所有做过的程序模板都修改一遍,然后验证一遍,这样,以后的LTC3454板程序就消除隐患了(:44:)
 | 
 |