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:) |
|