3783|8

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

timer_a 的奇怪问题...哪位看看. [复制链接]

449 mcu ,timer_a 工作在比较模式下. MCLK 设置为1M,,, SMCLK 也是1.04MHz.
ACLK 为.32.768khz. 当我将 CCR0=1 之后. TAR 从0 到1..然后中断.
在中断里面 翻转P1.2 端口的输出...发现 高电平 宽度为 14.3 uS ?? 奇怪.这不对啊.. 不是应该是1/smclk 宽么? 怎么会宽了这么多?

大概的程序如下:

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |=XCAP0PF;

TACTL = TASSEL_2 + TACLR; // SMCLK, clear TAR
CCTL0 = CCIE; // CCR0 interrupt ena××ed
CCR0 = 1;
P1DIR |= 0x34; // Set P1.2 to output direction
P1SEL |= 0x30; // output smclk and aclk
TACTL |= MC0; // Start Timer_a in upmode



_EINT(); // Ena××e interrupts

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x04; // Toggle P1.2 using exclusive-OR
}



哪位大侠看看是为什么?

最新回复

输入信号是指输入到哪里去的信号? 我尝试改变了计数器的输入时钟类型...分别是 ACLK=32.768KHz , 还有 SMCLK=1.04MHZ. .好像 在CCR0=1时 变化不大.    看来这个延时是由于中断响应需要时间造成的....改变系统时钟不能解决问题.不知道对不对.  详情 回复 发表于 2005-9-6 15:25
 
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
正常的
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不好意思,没写完。

你要考虑到,进入中断和退出中断还需要时间的。

另外记住:中断产生的间隔应该大于中断服务程序执行的时间,你的程序CCR0 = 1;
就很不合理
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼上的,介绍一下中断响应的时间是多少啊?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
中断响应的最快也要10个周期左右。iltgcl说的没错,中断定时时间要远大于中断执行时间。否则,就会频繁进入中断。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 


我这么做的目的是为了产生一个 数据率大约在 30kHz 左右的 数据信号..如果要发送的数据是1就输出高电平. 并且开始计数....计数满了之后 进入中断. 将端口设置为低. 如果要发送的数据是0 那么输出低电平.开始计数,,计数满了之后进入中断. 将输出设置为高. 通过计数器保证每个脉冲的宽度是1/30KHz.


如果中断需要这么长时间. 那岂不是就没有办法发送速率稍微高些的信号了?
如果假设中断响应固定时间是10个时钟周期... 那我提高了系统工作时钟-MCLK=4mhZ. 发现响应时间基本没有什么变化.这是为什么?

除了这样,有没有什么别的办法发送一定数率的数据? 谢谢谢谢
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

7
 
把输入信号设为MCLK或者SMCLK等高频信号
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
从你的程序看(漏写的大括号可能在_EINT(); // Ena××e interrupts处),只能中断一次。当你将CCR0=1时直到开中断经历了如下过程:
P1DIR |= 0x34; // Set P1.2 to output direction
P1SEL |= 0x30; // output smclk and aclk
TACTL |= MC0; // Start Timer_a in upmode
_EINT(); // Ena××e interrupts
这需要10多个周期,如果从单片机复位时算起,时间就更长了。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
输入信号是指输入到哪里去的信号? 我尝试改变了计数器的输入时钟类型...分别是 ACLK=32.768KHz , 还有 SMCLK=1.04MHZ. .好像 在CCR0=1时 变化不大.
看来这个延时是由于中断响应需要时间造成的....改变系统时钟不能解决问题.不知道对不对.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表