智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4599|回复: 7
打印 上一主题 下一主题

递减计数器做的定时中断问题!

[复制链接]

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
威望
187
贡献
22
兑换币
0
注册时间
2007-9-23
在线时间
0 小时
跳转到指定楼层
1#
发表于 2008-5-27 09:22:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<>#include &lt;hidef.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* common defines and macros */<BR>#include &lt;mc9s12dg128.h&gt;&nbsp;&nbsp;&nbsp;&nbsp; /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P>///////////////////////////////////////////////////////////////////////////////////<BR>&nbsp;<BR>#define uint unsigned int<BR>#define uchar unsigned char<BR>void Init_PLL(void);<BR>void PORT_Init(void);<BR>void Initial_Ect(void) ;<BR><BR>&nbsp;<BR>void Init_PLL(void) {<BR>&nbsp; REFDV=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 频率设置为48MHz*/<BR>&nbsp;SYNR=0x01;<BR>&nbsp;CLKSEL=0x80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*时钟选择PLL时钟*/<BR>}</P><P>void PORT_Init(void){<BR>DDRB=0xff;<BR>}</P><P><BR>void Initial_Ect(void){</P><P>MCCTL = MCCTL&amp;0xfb; //模数计数器禁止运行<BR>&nbsp;MCCTL = 0xe3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //允许中断,模数计数方式 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //返回时重新加载所用的常数,分频常数为16&nbsp;&nbsp;&nbsp; <BR>&nbsp;MCCTL = MCCTL|0x04; //模数计数器使能<BR>&nbsp;MCCNT = 0x3456;&nbsp;&nbsp;&nbsp; <BR>&nbsp;MCCTL = MCCTL|0x08&nbsp; ; //把模数常数寄存器的值加载到模数计数器<BR>TSCR1=0x90;</P><P>}&nbsp; </P><P>#pragma CODE_SEG NON_BANKED<BR>interrupt void TIO_ISR(void){<BR>DisableInterrupts;<BR>&nbsp; //MCFLG=MCFLG;//0x80;<BR>&nbsp; //TSCR2=TSCR2;//0x80;<BR>&nbsp; MCCNT=0x3456;<BR>&nbsp; PORTB=~PORTB;<BR>}</P><P>void main(void) {</P><P>&nbsp;Init_PLL();<BR>&nbsp;PORT_Init();<BR>&nbsp;Initial_Ect() ;<BR>&nbsp; PORTB=0xFe;</P><P><BR>while(1){<BR>&nbsp;EnableInterrupts;<BR>//DisableInterrupts;<BR>};<BR>&nbsp; <BR>}</P><P>程序运行是就会停止出现“ACKN SYNC STOPPED ”,提示!单步执行可以,但也进不到中断服务程序中去</P><P>而且根本进入不了中断服务程序里面去。如果在while(1)里面关中断的话,程序可以运行,但得不到想要的结果!</P><P>有人说是清中断时出问题了,但不知道具体解决方案。。。。。。。在prm文件中也进行了相关设置!困扰好几天了,希望那位高手帮帮忙啊!<BR></P>

22

主题

518

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
6442
QQ
威望
943
贡献
5041
兑换币
99
注册时间
2008-2-26
在线时间
229 小时
2#
发表于 2008-5-31 21:13:53 | 只看该作者

Re:递减计数器做的定时中断问题!

<>进入中断函数后关中断,同时清中断标志位,接下来执行中断程序,执行完后开总的中断</P><P>给你个例子:</P><P>#include &lt;hidef.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* common defines and macros */<BR>#include &lt;mc9s12dg128.h&gt;&nbsp;&nbsp;&nbsp;&nbsp; /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"<BR>unsigned char pulsecnt;<BR>unsigned char pulse[2];</P><P>/*PWM01产生100HZ波形*/<BR>void PWM01_init(void)&nbsp;&nbsp; <BR>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //pwm0,pwm1</P><P>&nbsp; PWME_PWME1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //pwm1输出控制信号<BR>&nbsp; PWMPOL_PPOL1=1;&nbsp;&nbsp;&nbsp;&nbsp;//先输出低电平,计数到DTY时,反转电平&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; PWMCLK_PCLK1=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //选择clock SA做时钟源?<BR>&nbsp;&nbsp;PWMPRCLK_PCKA=2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //clockA 进行4分频;&nbsp; clockA=busclock/4=2Mhz;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; PWMCAE_CAE1=0;&nbsp;&nbsp;&nbsp;&nbsp; //选择输出模式为靠左对齐输出模式<BR>&nbsp; PWMCTL_CON01=1;&nbsp;&nbsp;&nbsp;&nbsp;//0和1联合成16位PWM;<BR>&nbsp; PWMSCLA=10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //对clockA 进行20分频;clock SA=clockA/20=100KHz;<BR>&nbsp; PWMCNT01=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//计数器清零;<BR>&nbsp; <BR>&nbsp; PWMPER01=1000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //周期10ms&nbsp;&nbsp;&nbsp; 100Hz; <BR>&nbsp; PWMDTY01=149;<BR>&nbsp; PWME_PWME1=1; <BR>&nbsp; <BR>&nbsp; }<BR>/*模向下计数器每100ms中断一次*/<BR>void MDCInit(void){<BR>&nbsp;<BR>&nbsp;MCCTL = MCCTL&amp;0Xfb;&nbsp;&nbsp; //模数计数器禁止运行<BR>&nbsp;MCCTL = 0Xe3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //允许中断,模数计数方式 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //返回时重新加载所用的常数,分频常数为16&nbsp;&nbsp;&nbsp; <BR>&nbsp;MCCTL = MCCTL|0X04;&nbsp;&nbsp; //模数计数器使能<BR>&nbsp;MCCNT = 50000; <BR>&nbsp;MCCTL = MCCTL|0X08&nbsp; ; //把模数常数寄存器的值加载到模数计数器<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>}<BR>void main(void) {<BR>&nbsp;PWM01_init();<BR>&nbsp;DDRB=0XFF;<BR>&nbsp;PORTB=0X0F;<BR>&nbsp;asm sei;<BR>&nbsp;TIOS=0X00;<BR>&nbsp;MCFLG_MCZF=1;<BR>&nbsp;MDCInit();<BR>&nbsp;TCTL4=0b11000000;&nbsp; // PT3 catch any edge;<BR>&nbsp;ICPAR_PA3EN=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // enable pulse accumulator 3 <BR>&nbsp;ICOVW_NOVW3=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // protected<BR>&nbsp;EnableInterrupts;<BR>&nbsp;for(;;) {} /* wait forever */<BR>&nbsp; /* please make sure that you never leave this function */<BR>}<BR>&nbsp;<BR>#pragma CODE_SEG __NEAR_SEG NON_BANKED<BR>interrupt 26 void MDC_ISR(void){<BR>&nbsp; DisableInterrupts;<BR>&nbsp; MCFLG_MCZF=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //清除中断标志 <BR>&nbsp; pulse[1]=pulse[0];&nbsp; //前一次的累加数值放在pulse[1]<BR>&nbsp; pulse[0]=PACN3;&nbsp;&nbsp;&nbsp;&nbsp; //读当前数值到 pulse[0]<BR>&nbsp; pulsecnt=pulse[0]-pulse[1];//得到单位时间的脉冲个数<BR>&nbsp; PORTB=pulsecnt; <BR>&nbsp; EnableInterrupts;<BR>&nbsp; }<BR>&nbsp;#pragma CODE_SEG DEFAULT<BR>&nbsp;</P>
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

禁止访问

积分
263
威望
225
贡献
32
兑换币
8
注册时间
2007-12-20
在线时间
3 小时
3#
发表于 2008-7-7 03:23:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
125
威望
173
贡献
22
兑换币
0
注册时间
2009-3-25
在线时间
3 小时
4#
发表于 2009-4-20 11:05:40 | 只看该作者
我出现的问题是下载程序显示下载了100%,但是source窗口中一片空白,command窗口中出现ACKN SYNC STOPPED 的提示,点执行按钮,程序无法执行,而我在清华的最小系统板上程序执行完全没问题,请问这是怎么回事,不知道是不是硬件那个地方有问题(我们自己做的最小系统),请各位大侠帮帮忙!!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
威望
236
贡献
62
兑换币
40
注册时间
2009-3-7
在线时间
17 小时
5#
发表于 2009-4-20 21:37:37 | 只看该作者
差不多的问题!
模拟仿真时能进中断,烧到单片机上就不行了
有没高手指点一下!!
谢谢
回复 支持 反对

使用道具 举报

15

主题

154

帖子

0

精华

高级会员

Rank: 4

积分
827
QQ
威望
661
贡献
100
兑换币
0
注册时间
2010-3-9
在线时间
33 小时
6#
发表于 2010-4-5 18:58:00 | 只看该作者
一样
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
176
威望
229
贡献
37
兑换币
0
注册时间
2010-7-9
在线时间
0 小时
7#
发表于 2010-7-9 14:10:48 | 只看该作者
没人能解决呀??
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
73
威望
126
贡献
37
兑换币
0
注册时间
2012-3-7
在线时间
8 小时
毕业学校
xhua
8#
发表于 2012-5-22 22:49:53 | 只看该作者
跟我的一样啊,我这个这个整了实时中断就不行了,应该是优先级的问题
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-13 07:29 , Processed in 0.158682 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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