精确的测量内部的dco发生器的频率

上传人:xiao****1972 文档编号:84822196 上传时间:2019-03-05 格式:DOCX 页数:3 大小:13.54KB
返回 下载 相关 举报
精确的测量内部的dco发生器的频率_第1页
第1页 / 共3页
精确的测量内部的dco发生器的频率_第2页
第2页 / 共3页
精确的测量内部的dco发生器的频率_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《精确的测量内部的dco发生器的频率》由会员分享,可在线阅读,更多相关《精确的测量内部的dco发生器的频率(3页珍藏版)》请在金锄头文库上搜索。

1、#include msp430x22x4.h /* *-文件信息- *文 件 名: main.c *创 建 人: 王国财 *创建日期: 2008年7月17日 *功 能: 使用外部的32768,精确测量内部的DCO发生器频率. 2008年7月17日,测试已通过.可以直接使用.此程序为一项目内的子程序, 特整理出来供大家参考. 测量DCO时钟的频率时,TB2输出的32768的X分频脉冲去触发TA2的比较器, TA2为捕获输入,SMCLK时钟为DCO的频率,记下两次的间隔即为DCO的频率. */ unsigned long dco_clock; /dco频率寄存器. unsigned int ca

2、p_value5; /存两次捕值之差 int main( void ) unsigned int i=5; unsigned int first_value,second_value,n; WDTCTL=WDTPW+WDTHOLD; /关看门狗 BCSCTL1 =CALBC1_1MHZ; /设定DCO为1MHZ DCOCTL =CALBC1_1MHZ; BCSCTL1&=0x0f; /LXTF1低频模式.ACLK分频为1 do /等待晶振稳定 IFG1 &=OFIFG; for(n=5000;n0;n-); while(OFIFG&IFG1); TBCTL = 0X2110; /无中断,增模式

3、,输入分频为1,时钟为ACLK, /计数长度为16位, TBCCTL0 |=OUTMOD_7; /无中断,翻转复位模式,比较模式, TBCCTL2 |=OUTMOD_7; /无中断,翻转复位模式,比较模式, TBCCR0 = 1023; TBCCR2 = 512; /TB2输出频率为32768/1024=32的脉冲. TACTL = 0X0220; /无中断,连续计数模式.输入分频为1.时钟为SMCLK TACCTL2 = 0X4518; /捕获中断允许,捕获模式,异步捕获,TA2输入捕获信号, /上升沿捕获, P4SEL= BIT2; P4DIR= BIT2; P1SEL =BIT3; P1

4、DIR &=BIT3; while(i-) TACTL|=TACLR; /定时器时钟源为SMCLK,启动连续计数,清TAR TACCTL2 &=CCIFG; /清CCR2的标志位 while(!(CCIFG&TACCTL2); /查CCR2标志位 first_value=TACCR2; /第一个捕获值存入first_value TACCTL2 &=CCIFG; /清CCR2的标志位 while(!(CCIFG&TACCTL2); /查CCR2标志位 second_value=TACCR2; /第二个捕获值存入second_value TACCTL2 &=CCIFG; /清CCR2的标志位 TA

5、CCTL2 &=MC1; /关定时器A cap_valueI=(second_value-first_value); _NOP(); dco_clock=0; /dco频率寄存器. for(i=0;i2)*32; /dco频率寄存器. _NOP(); 本来TA,与TB的内部的比较器输入可以直接输入ACLK,但是ACLK最多只能8分频,在测量度上打了折扣,所以用TB2的输出做捕获脉冲,这样在单位时间内得到 的脉冲数更多,我做过试验,用内部的ACLK直接捕获时216*4096=884736,与外部输出的脉冲做的捕获27685*32=885920,在约有1000多误差,当然在要求不是很高的情况下,可以直接用内部的ACLK。 云龙独步,2008-09-28 11:47:25很好的一个捕捉频率方法 不过将DCO信号通过IO功能引脚输出 再由示波器观测不是更简化吗?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号