专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
利用launchpad内部比较器实现电阻测量仪的程序
2019-03-24 13:37
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
3680
17
1299
这两天在做电阻测量仪,规定用430g2553内部的比较器去做,我把那节的内容全看了,也有了理解,但是到了写程序的时候,发现了很多问题,主要是比较器、定时器、捕获还有其中断的应用。现在头都大了,还望哪位做过的高人给个程序参考参考!或是有这方面的兴趣的朋友也去试试,在此先感谢各位了! 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
abclixu123
1楼-- · 2019-03-24 21:34
精彩回答 2 元偷偷看……
加载中...
lpmrzx
2楼-- · 2019-03-24 22:23
< :TI_MSP430_内容页_SA7 --> 对啊!就是这个的问题,我也没弄懂
加载中...
abclixu123
3楼-- · 2019-03-24 22:38
我刚才突然弄出来了,原来只要设置定时器把捕获选择CCI1B就是了,自然就可以把比较器的输出实现捕获了。难怪关于比较器的寄存器里面没有设置这方面的东西,你看用户手册里面的那个实现检测电阻的那个图它那里画的就是CCI1B。
加载中...
lpmrzx
4楼-- · 2019-03-25 03:02
精彩回答 2 元偷偷看……
加载中...
abclixu123
5楼-- · 2019-03-25 07:44
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // If calibration constants erased
// do not load, trap CPU!!
}
//1Mhz
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */
P1DIR |= BIT6;
//比较器设置
CACTL1 = CAON + CAIES + CAIE; //打开比较器 比较器中断 下降沿触发中断
CACTL2 = P2CA4 + P2CA2 + CAF; // 一个选择CA1 P1.1 正输入端 一个选择CA2 P1.2 负输入端
//捕获的设置
P2SEL |= BIT2; //CCI1B 输入
TA1CCTL1 |= CM_2 + CCIS_1 + SCS + CAP + CCIE;
TA1CTL |= TASSEL_2 + MC_2 + TAIE;
_BIS_SR(LPM0_bits + GIE);
}
#pragma vector = TIMER1_A1_VECTOR
__interrupt void TimerCapture(void)
{
static uint16_t oldtime;
uint16_t temp, newtime;
if(CACTL2 & CAOUT)
{
P1OUT |= BIT6;
}
else
{
P1OUT &= ~BIT6;
}
}
加载中...
yiwusuorao
6楼-- · 2019-03-25 08:33
我是菜鸟,还没搞清比较器的寄存器,哪位大神给发一下?
加载中...
1
2
3
下一页
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // If calibration constants erased
// do not load, trap CPU!!
}
//1Mhz
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */
P1DIR |= BIT6;
//比较器设置
CACTL1 = CAON + CAIES + CAIE; //打开比较器 比较器中断 下降沿触发中断
CACTL2 = P2CA4 + P2CA2 + CAF; // 一个选择CA1 P1.1 正输入端 一个选择CA2 P1.2 负输入端
//捕获的设置
P2SEL |= BIT2; //CCI1B 输入
TA1CCTL1 |= CM_2 + CCIS_1 + SCS + CAP + CCIE;
TA1CTL |= TASSEL_2 + MC_2 + TAIE;
_BIS_SR(LPM0_bits + GIE);
}
#pragma vector = TIMER1_A1_VECTOR
__interrupt void TimerCapture(void)
{
static uint16_t oldtime;
uint16_t temp, newtime;
if(CACTL2 & CAOUT)
{
P1OUT |= BIT6;
}
else
{
P1OUT &= ~BIT6;
}
}
一周热门 更多>