DSP28335 ecap使用
2016-03-31 15:41
916 查看
输入捕获有4级捕获,最多可以得到4个捕获时间,捕获记性可以任意配置
可用于测速,测脉冲周期,频率,占空比等
cap.c
#include "cap.h"
void InitCap(void)
{
InitECap5Gpio();
InitECap6Gpio();
SetCap5();
SetCap6();
}
void SetCap5(void)
{
ECap5Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap5Regs.ECCTL1.bit.CAP2POL = EC_FALLING; //EC_RISING;
ECap5Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap5Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap5Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap5Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap5Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap5Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS; //连续捕获
ECap5Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap5Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap5Regs.ECEINT.all=0x0000;//stop all interrupt
ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
ECap5Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
ECap5Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt //第4个捕获事件发生时,产生中断
}
void SetCap6(void)
{
ECap6Regs.ECCTL1.bit.CAP1POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP3POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap6Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap6Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap6Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap6Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap6Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap6Regs.ECEINT.all=0x0000;//stop all interrupt
ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
ECap6Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
ECap6Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt
}
Uint32 t1,t2,t3,t4,T1,T2;
interrupt void ISRCap5(void)
{
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
t1= ECap5Regs.CAP1;
t2= ECap5Regs.CAP2;
t3= ECap5Regs.CAP3;
t4= ECap5Regs.CAP4;
T1=t2-t1;T2=t3-t1;
}
Uint32 t5,t6,t7,t8,T3,T4;
interrupt void ISRCap6(void)
{
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
t5= ECap6Regs.CAP1;
t6= ECap6Regs.CAP2;
t7= ECap6Regs.CAP3;
t8= ECap6Regs.CAP4;
T3=t6-t5;T4=t8-t7;
}
cap.h
#ifndef CAP_H_
#define CAP_H_
#include "main.h"
extern Uint32 t1,t2,t3,t4,T1,T2;
extern Uint32 t5,t6,t7,t8,T3,T4;
void InitCap(void);
void SetCap5(void);
void SetCap6(void);
interrupt void ISRCap5(void);
interrupt void ISRCap6(void);
#endif /* CAP_H_ */
main函数中要调用的
InitCap(); //输入捕获初始化
PieVectTable. ECAP5_INT = &ISRCap5; //输入捕获5
IER |= M_INT4; //输入捕获
PieVectTable. ECAP6_INT = &ISRCap6; //输入捕获6
PieCtrlRegs.PIEIER4.bit.INTx5 = 1; //输入捕获5中断
PieCtrlRegs.PIEIER4.bit.INTx6 = 1; //输入捕获6中断
可用于测速,测脉冲周期,频率,占空比等
cap.c
#include "cap.h"
void InitCap(void)
{
InitECap5Gpio();
InitECap6Gpio();
SetCap5();
SetCap6();
}
void SetCap5(void)
{
ECap5Regs.ECCTL1.bit.CAP1POL = EC_RISING;
ECap5Regs.ECCTL1.bit.CAP2POL = EC_FALLING; //EC_RISING;
ECap5Regs.ECCTL1.bit.CAP3POL = EC_RISING;
ECap5Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap5Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap5Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap5Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap5Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap5Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS; //连续捕获
ECap5Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap5Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap5Regs.ECEINT.all=0x0000;//stop all interrupt
ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
ECap5Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
ECap5Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt //第4个捕获事件发生时,产生中断
}
void SetCap6(void)
{
ECap6Regs.ECCTL1.bit.CAP1POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP3POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
ECap6Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
ECap6Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
ECap6Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
ECap6Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
ECap6Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
ECap6Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
ECap6Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
ECap6Regs.ECEINT.all=0x0000;//stop all interrupt
ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
ECap6Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
ECap6Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt
}
Uint32 t1,t2,t3,t4,T1,T2;
interrupt void ISRCap5(void)
{
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
t1= ECap5Regs.CAP1;
t2= ECap5Regs.CAP2;
t3= ECap5Regs.CAP3;
t4= ECap5Regs.CAP4;
T1=t2-t1;T2=t3-t1;
}
Uint32 t5,t6,t7,t8,T3,T4;
interrupt void ISRCap6(void)
{
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
t5= ECap6Regs.CAP1;
t6= ECap6Regs.CAP2;
t7= ECap6Regs.CAP3;
t8= ECap6Regs.CAP4;
T3=t6-t5;T4=t8-t7;
}
cap.h
#ifndef CAP_H_
#define CAP_H_
#include "main.h"
extern Uint32 t1,t2,t3,t4,T1,T2;
extern Uint32 t5,t6,t7,t8,T3,T4;
void InitCap(void);
void SetCap5(void);
void SetCap6(void);
interrupt void ISRCap5(void);
interrupt void ISRCap6(void);
#endif /* CAP_H_ */
main函数中要调用的
InitCap(); //输入捕获初始化
PieVectTable. ECAP5_INT = &ISRCap5; //输入捕获5
IER |= M_INT4; //输入捕获
PieVectTable. ECAP6_INT = &ISRCap6; //输入捕获6
PieCtrlRegs.PIEIER4.bit.INTx5 = 1; //输入捕获5中断
PieCtrlRegs.PIEIER4.bit.INTx6 = 1; //输入捕获6中断
相关文章推荐
- https://和http://区别
- Android开源项目分类汇总(五)ColorPickView、GraphView、UI Style
- ELK显示多行日志
- 代码改变EditText的password属性值并可查看密码
- 搜索时将空格去除iOS
- POJ1125 Stockbroker Grapevine
- mysql读写分离
- ORM 和 Hibernate
- 网站的高性能架构
- 如何搭建森林域环境?
- 超全面的.NET GDI+图形图像编程教程
- AsyncLoadLocalImage ios 加载本地高清大图
- dubbo学习
- javaMail创建邮件和发送邮件总结
- Xcode 查找 TODO 清单
- 现代程序设计之网页前端开发作业
- 常见问题之加法操作符(读书笔记)
- 网络爬虫基本原理(一)
- 安卓下拉刷新开源库对比
- Java中 一个类实现了某接口 则必须实现该接口中的所有方法么?