-
原帖由 zca123 于 2012-3-20 18:05 发表 平民没有号召力
支持LZ。
我觉得LZ太过自谦了,咱老百姓也是有力量的。呵呵
-
LZ您好~
1.基础定时器,basic timer1,主要是有两个作用,一是提供一个低频率的时间间隔,还有就是为LCD的刷新提供时钟。
2.ADC就是将模拟量转换为数字量,16位表示转换结果的最大位数
3.TimerA,是一个16位的定时器/计数器,跟基础定时器相比,功能更加强大,有4种操作模式,带有3个或5个CCR(捕获比较寄存器)等等~
-
呃~累加4次后ad_value的值有溢出吗?
LZ您可以试下用单步调试看下ad_value值吧
-
可否用C和汇编混编来解决?
-
当前UIF的固件并不适配此版本的IAR
这个时候点击“是”即可~
卡住的话~
试试重新启动下计算机~重启下软件看看
-
LZ您好
使用IAR V5.20(包含)以上版本即可
-
LZ您好。
ADC12ENC这一位相当于一个开关,打开此位后就允许ADC工作
ADC12SC是ADC开始采样转换的一个命令,置位后就为进行一次采样。如果选择的单次模式,采样一次后若还需要再次采样则还需要手动置位触发这个命令。
当然ADC12除了使用ADC12SC进行触发之外,还可以选择使用TimerA或TimerB进行触发。
这个时候它的触发源就是TimerA,当设定的时间一到,则ADC12自动启动转换
这个过程就跟ADC12SC无关了~
-
LZ,好。
在仿真时,点击View -> Register -> CPU Registers 下有个CYCLECOUNTER
记录延时函数前后的CYCLECOUNTER值,差值就是这个延时函数的时间,
CPU的时钟源为MCLK,知道MCLK的频率就可以计算出时间了~
-
LZ注意下
|= 是复合赋值符
addr1 |= CMD_RMM;
相当于addr1 = addr1 | CMD_RMM;
执行后的addr1值应该是addr1或上CMD_RMM的值。
-
建议先看看选用芯片的user's guide
譬如4系列大部分就是不带内部上拉的。
当然比较方便的做法就是直接在IAR的Register中看Port的寄存器中有没有PxREN(前提是选择对你的芯片型号)
有就说明带内部上下拉~
-
:)
虽然没参加活动,但还是能感受到EEWORLD的诚意
祝愿EEWORLD越来越好
也祝愿MSP430区越来越好
-
对的,这里要考虑计数器的溢出问题,430本身自带溢出中断的,只要开启溢出中断使能后,设置变量overflow,每一次溢出自加1,这样周期就是65536*overflow+(本次捕获TAR)-(前一次捕获TAR)。
你的求平均值就是一种滤波的方法。
-
:) 友情帮顶了
-
TAR就是当前捕获触发时的计数值。
采集方波的话,两个上升沿之间的差值就是周期,一般情况下采集N个数据,然后软件滤波的。
-
#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗定时器
TACTL=TASSEL_1+MC_2;//时钟源选择ACLK,连续计数模式
CCTL0=CM_1+SCS+CCIS_0+CAP+CCIE;//上升沿捕获,同步捕获,P1.1为捕获源,中断使能开
_EINT();//总中断开
_BIS_SR(LPM0_bits+GIE);//选择LPM0模式
//下面的语句不会执行
P1SEL |=BIT1;//P1.1选择外围功能,捕获模式下为CCI0A入口
P2DIR |=BIT1;//P2.1为输出方向
for(;;)
{P2OUT|=BIT1;
P2OUT ^= BIT1;
}//无限循环,使P2.1输出高低电平
---------
LZ你好,430在进入低功耗模式后,CPU将停止工作,下面的语句都不会执行的。
-
LZ,你好
坛子里有捕获模式测频率的程序,搜一搜嘛:)
-
LZ,好。
在仿真时,View -> Register -> CPU Registers 下有个CYCLECOUNTER
-
版主不在,那我先试着回答一下好了。
1.CCR1,CCR2的值在三种模式下都要小于CCR0
2.CCR1和CCR2的值不会在中断后清除的。
3.LZ的例子是否来自TI的某个例程?我估计TI是为了展示下连续模式下的PWM输出,实际上用增模式会比较方便。而且TA有7种不同的输出模式,配置成不同的模式输出的结果也会不同。
我这里举一个具体的例子
计数器设置为 连续模式 ,CCR1输出模式设置为 OUTMODE4,即 翻转。
连续模式计数值至0XFFFF,如果CCR1值为16的话,那么当TAR计数值16,就会进入中断,输出翻转,直至计数溢出后计数值复位至0重新开始计数~这样往复。
如果在中断中加入CCR1 += 16;语句,这样CCR1的值会在每次中断后加16,相当于每计数16输出翻转一次,这样就形成了一个50%占空比的PWM波。
这个就是LZ说的偏移量吧,这个值取决于你要设的频率的。
4.无论是CCR1值还是计数值在溢出后都会从0开始计数的
-
LZ,您的main函数里有没有Init_UART1();这条调用串口初始化子函的语句?
-
TI 有官方TB例程的
F149的例程包的下载地址
http://www.ti.com/cn/lit/zip/slac015