打印

设计一个单电源供电电路

[复制链接]
595|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlyuan|  楼主 | 2017-4-3 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
spark周| | 2017-4-3 20:58 | 只看该作者

在比较器模块里有一个寄存器是CMx,可以进行选择:
Capture mode
00 No capture
01 Capture on rising edge
10 Capture on falling edge
11 Capture on both rising and falling edges

使用特权

评论回复
板凳
jiaxw| | 2017-4-3 21:00 | 只看该作者

不是每个430系列都有
捕获功能吧

使用特权

评论回复
地板
jlyuan|  楼主 | 2017-4-3 21:03 | 只看该作者
使用捕获模式,你只需初始化时定义好就可以按照你的意图使用了,至于如何识别上升沿下降沿那是芯片内部的构成,运用模电的比较器之类的。如果你是做单片机的,这部分要详细了解,如果是用单片机就没这必要了

使用特权

评论回复
5
wuhany| | 2017-4-3 21:05 | 只看该作者
有CCP模块就有这个功能

使用特权

评论回复
6
spark周| | 2017-4-3 21:09 | 只看该作者
上升沿和下降沿是可以设的。

使用特权

评论回复
7
jiaxw| | 2017-4-3 21:10 | 只看该作者
上升沿捕获,还是下降沿捕获,还是二者都能捕获,可以自己选择配置。

使用特权

评论回复
8
wuhany| | 2017-4-3 21:12 | 只看该作者
MSP430F5510头文件里定义
#define CM_0                (0*0x4000u) /* Capture mode: 0 - disabled */
#define CM_1                (1*0x4000u) /* Capture mode: 1 - pos. edge */
#define CM_2                (2*0x4000u) /* Capture mode: 1 - neg. edge */
#define CM_3                (3*0x4000u) /* Capture mode: 1 - both edges */
下边是我用MSP430F5510单片机做的捕获,我想捕获的是双沿,但是我先选的上升沿捕获,当上升沿捕获中断后再改为下降沿捕获,下降沿捕获中断后再改为上升沿捕获。
//初始化程序
void Init_TA(void)
{
      TA0CCTL1 = CCIE + CM_1 + SCS + CAP;                //对应CCR1使能,上升沿同步捕获
    TA0CTL = TBSSEL__ACLK + MC_2 + TACLR + TAIE;//时钟源选择ACLK,连续数模式,清计数器
}
//中断程序
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
     switch(TA0IV)                                                    //TA中断向量查询
     {
          case 2:                                                         //是捕获中断  2为CCR1捕获中断向量值
            if (TA0CCTL1 & CM0)                            //上升沿捕获
            {
                         TA0CCTL1 &=~ CM_1;  
                         TA0CCTL1 |= CM_2;                      //改为下降沿捕获
                 start = TA0R;
                  }
                   if (TA0CCTL1 & CM1)                            //下降沿捕获
            {
                        TA0CCTL1 &=~ CM_2;  
                        TA0CCTL1 |= CM_1;                      //改为上升沿捕获
                end = TA0R;
                  }
        break;
         
            case 14:                                                //是溢出中断
               overflow++;                                //溢出次数自加1
            break;
         
            default:
            break;
    }
}
//那么你捕获的脉宽就是time = (overflow * 65535 + end - start)*时钟周期;

使用特权

评论回复
9
yszong| | 2017-4-3 21:14 | 只看该作者
识别不了 只能通过别的方式去判断 比如说查询当前引脚上的电平是高or低

使用特权

评论回复
10
dengdc| | 2017-4-3 21:16 | 只看该作者
CMx只是用来设置触发模式的,我一般是判断寄存器中的CCI位来区分上升沿和下降沿

使用特权

评论回复
11
dengdc| | 2017-4-3 21:19 | 只看该作者

CMx只是用来设置触发模式的,我一般是判断寄存器中的CCI位来区分上升沿和下降沿



if((TA1CCTL0 & CCI) == CCI)
{
//上升沿触发
}
else
{
//下降沿触发
}//end if((TA1CCTL0 & CCI) == CCI)

使用特权

评论回复
12
jlyuan|  楼主 | 2017-4-3 21:21 | 只看该作者
搞定了,呵呵,犯了低级错误……结贴啦,多谢各位

使用特权

评论回复
13
cehuafan| | 2017-4-3 21:34 | 只看该作者
spark周 发表于 2017-4-3 20:58
在比较器模块里有一个寄存器是CMx,可以进行选择:
Capture mode
00 No capture

这个是供电电路吗?

使用特权

评论回复
14
cehuafan| | 2017-4-3 21:35 | 只看该作者
spark周 发表于 2017-4-3 20:58
在比较器模块里有一个寄存器是CMx,可以进行选择:
Capture mode
00 No capture

这个msp430的相关寄存器。

使用特权

评论回复
15
jstgotodo| | 2017-4-7 21:33 | 只看该作者
双路供电电源设置成一路?

使用特权

评论回复
16
jstgotodo| | 2017-4-7 21:37 | 只看该作者
spark周 发表于 2017-4-3 20:58
在比较器模块里有一个寄存器是CMx,可以进行选择:
Capture mode
00 No capture

这个跟软件有什么关系?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝