原创 SN 8 位单片机 SN8P2743 应用实践(3)

2012-3-20 00:09 1155 13 13 分类: 消费电子
紧接(2)  SN8P2743 的比较器初试:
接着,对可以一个引脚就用起来的比较器 1 进行测试,通过软件选择内部参考的 CM1M 寄存器如下:
09DH 位7 位6 位5 位4 位3 位2 位1 位0
CM1M CM1EN CM1OEN CM1OUT CM1SF CM1G CM1RS2 CM1RS1 CM1RS0
读/写 R/W R/W R/W R/W R/W R/W R/W R/W
复位后 0 0 0 0 0 0 0 0
位[2:0] CM1RS[2:0]:比较器CM1 正极电压选择控制位。
000=CM1P 引脚为比较器正极输入引脚,GPIO 功能被屏蔽,
001=内部0.2*Vdd,CM1P 是I/O引脚,
010=内部0.3*Vdd,CM1P 是I/O引脚,
011=内部0.4*Vdd,CM1P 是I/O引脚,
100=内部0.5*Vdd,CM1P 是I/O引脚,
101=内部0.6*Vdd,CM1P 是I/O引脚,
110=内部0.7*Vdd,CM1P 是I/O引脚,
111=内部0.8*Vdd,CM1P 是I/O引脚。

每一种内部参考我都试过,动作速率非常快!
事情到这里,我就联想到其在实际测量电路上是否可以满足使用要求 ------ 分辨力可以达到多少呢?
我搭接了一个恒流源,大约电流在 10 uA , 对一个 47u 的电容器恒流充电,这就可以产生一个随时间升高的电压,把这个电压输入到比较器 1 的反相输入引脚.
解决了充电问题,还得有放电通道啊! 恰好, 2743 有一个开漏输出引脚 P01 ------ 什么叫开漏? 就是仅仅具有输出低电平的拉电流功能,不能输出高电平,用在这里给电容器放电简直天衣无缝! 恰到好处!
我使用内部 16/4MHZ 的时钟,利用定时器 T0 帮助计数,得到下面一份表格:----- 每一个数据都是实测来的哦!032927smhg9s0a9dfscqa7.jpg
 从内部参考 1.0V 开始, 到内部参考 4.0V 为止, 一共测量到 7 个数据, 每 2 格数据之差就是输入电压 0.5V 之差的读数, 按照计算,其最大分辨力达到了 21.746uV/字 . 计算一下, 12 位 AD 的最大分辨力是多少 ? 即使是测量 K 热电偶, 40uV/℃ 的微小电压,都可以分辨 出差不多 2 个字来! ------ 比较器 2 与比较器 1 差不多性质,就没有重复测试了!
但是,这么好的分辨力,要应用到实际项目,还有许多问题需要解决 .比较明显的是非线性, 输入电压越高, 分辨力越好,说明恒流源出了问题, 很可能已经受到饱和干扰了! (因为内部参考输入电压已经 4.0V ) .
但是,实际工程上并不需要那么大跨度的输入电压,往往几百 mV 就足够, 例如 ICL7107 ,输入±200mV 就可以了! 这就会让恒流源非线性得到很大改善!
测试表格的数据,已经展现了非常美好的应用前景!  进一步的应用,有待下次再发帖子了!
为了方便大家参考,我把芯片手册里有关比较器和放大器的内容摘录出来, 把图片尽量加大,提供给大家参考!(简体中文的呢!)
需要的请下载: 2743 的比较器与放大器.pdf
=========================================================汇编测试程序
上面的比较器测试数据表格,由下面测试程序而来,特出补充:

.CODE
        ORG        0
        JMP        B_RESET
        ORG        8
        JMP        B_IRS
        ORG        10H
;=====================================================================
B_RESET:;42_3:ROM:4K*16位。RAM:128字节。8层堆栈。
        @RST_WDT
        MOV_       STKP,#07FH
        ZM0        PFLAG
        ZM0        OSCM
        ZM0        INTRQ
        ZM0        INTEN
        @RST_WDT
        ZM0         Y; RAM 库 0=128RAM
        MOV_        Z,#7FH
@@:
        CLR         @YZ
        DECMS        Z
        JMP         @B
        CLR         @YZ
;-----------------------------------------------
        MOV        A,#00H
        MOV        P0,A
        MOV        P4,A
        MOV        P1,A

        MOV_        P0M,#00H
        MOV_        P4M,#0FFH
        MOV_        P1M,#00H

 MOV        A,#0FFH
        MOV        P4UR,A
        MOV        P1UR,A
        MOV        P0UR,A
        ZB0        FP01 ;6P,;// P0.1/PWM0,I/O P01:;漏极开路的输出引脚。PWM0WM输出引脚和脉冲输出引脚。
;--------------------------------------------------------------
;FT0初始化
        ZB0         FT0ENB
        MOV_           T0M,#70H ;16US-------70H=2,60H=4,50H=8,40H=16,30H=32
        MOV_           T0C,#0;//8*250=2mS---30H=4mS.---20H=8mS--00H=32mS
;TC1初始化
        ZB0         FTC0ENB
        MOV_        ZZZ,#60H
/*OPEN:OP Amp 放大器控制位。
0=禁止,P1.0、P1.1、P1.2 是I/O模式,
1=使能,P1.0、P1.1、P1.2 为OP-AMP 引脚。*/
;        ZB1        FOPEN
;        CALL        B_COM0SS;测试比较器0
        CALL        B_COM0SS_1;测试比较器1
            ZB1          FGIE;开中断
;==============================================================
B_LOOP:
        @RST_WDT
        NOP
        NOP
        NOP
        NOP
        BS0        FT0IEN
        JMP        B_LOOP
        BS1        FCM1OUT
        JMP        B_LOOP
        Z3M0        SSSH,SSSM,SSSL
        ZB0        FT0IRQ
        ZB1        FP01
        CLR           T0C ;,#0
        ZB1        FCM1IEN
        Z2B1         FT0IEN,FT0ENB
        NOP
        NOP
        NOP
        NOP
        JMP        B_LOOP
;====================================================================

(未完待续)

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条