SN 8 位单片机 SN8P2743 应用实践(3)
时间:12-02
来源:互联网
点击:
紧接(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 帮助计数,得到下面一份表格:----- 每一个数据都是实测来的哦!
![](../img/eep/emb/emb-652400inv0udcoui.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
;====================================================================
接着,对可以一个引脚就用起来的比较器 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 帮助计数,得到下面一份表格:----- 每一个数据都是实测来的哦!
![](../img/eep/emb/emb-652400inv0udcoui.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
;====================================================================
单片机SN8P2743应用实 相关文章:
- SN 8 位单片机 SN8P2743 应用实践(6)(12-02)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)