热度 13
2012-3-20 00:09
1155 次阅读|
0 个评论
紧接(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 位 CM1RS :比较器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 帮助计数,得到下面一份表格:----- 每一个数据都是实测来的哦! 从内部参考 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 ;==================================================================== (未完待续)