请教timer2的设置问题 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2995|回复: 0

[未解决] 请教timer2的设置问题

[复制链接]

2

主题

3

帖子

1042

积分

金牌会员

Rank: 6Rank: 6

积分
1042
发表于 2019-8-22 15:04:05 | 显示全部楼层 |阅读模式
我在用6748开发板配的sysbios下的board的综合例程,想自己增加一个timer2去控制AD7606周期采样,现在碰到2个问题,要么无法进入定时器中断,要么可以进入,但是每次响应进入中断的延时不一样,导致采样周期波动。
1、无法进入定时器中断
我按照starterware下7606的例程移植过来,下面是定时器的定义
        unsigned int SamplingRate = 12800;
        // 定时器 / 计数器初始化
        if(SamplingRate > 200000)
                SamplingRate = 200000;

        TMR_PERIOD_LSB32 = 228000000 / SamplingRate;
        Timer2Init(TMR_PERIOD_LSB32);

配置中断时,如果用下面这个配置,调试时会卡在中断5的入口,应该是找不到中断服务程序。
void Timer2InterruptInit(void)
{
        // 注册中断服务函数
        IntRegister(C674X_MASK_INT5, Timer2Isr);

        // 映射中断到 DSP 可屏蔽中断
        IntEventMap(C674X_MASK_INT5, SYS_INT_T64P2_TINTALL);

        // 使能 DSP 可屏蔽中断
        IntEnable(C674X_MASK_INT5);

         //使能 定时器 / 计数器 中断
        TimerIntEnable(SOC_TMR_2_REGS, TMR_INT_TMR12_NON_CAPT_MODE);
}

如果用下面这个配置,可以正常响应中断,只是进入时间不同,但是SYS_INT_T64P0_TINT12不是对应定时器0吗,SYS_INT_T64P2_TINTALL才是定时器2的,可是用它也不行,好奇怪。
EventCombiner_dispatchPlug(SYS_INT_T64P0_TINT12, &Timer2Isr, 1, TRUE);

2、AD采样不规律
可以进入定时器中断后,每次进入服务程序时,定时器2的tim12值都不一样,说明进入中断服务程序的时间被打断,结果就导致非周期采样,数据无效,如图

请教大神了,如何在sysbios\Board例程的基础上,增加一个AD7606的采样,要求最高优先级,不被打断的,如果可以帮忙给下示例,不胜感激,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-28 16:36 , Processed in 0.034646 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表