Board logo

标题: [求助]8位脉冲累加器如何设置? [打印本页]

作者: yangjieabc    时间: 2008-4-13 17:45     标题: [求助]8位脉冲累加器如何设置?

本人打算用8位脉冲累加器PACB。将PWM0口与PT1口相连,即用PWM0产生脉冲,用ECT1口进行脉冲累加,然后用串口将其显示出来。这样可以吗?以下是我的全部源程序。
但在试验时遇到一个问题:点击RUN不能执行,即马上复位。点击STEP单步执行,可以执行,每进入中断就发一个数,但发送的数据好象有误。如果取消脉冲累加,就完全正常了。这是怎么回事?



#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

void init_PWM(void)
{
PWME=0X00;
PWMPRCLK=0x01;
PWMSCLA=100;
PWMCLK=0x01;
PWMPOL=0x01;
PWMCAE=0x00;
PWMPER0=200;
PWMDTY0=100;
PWME=0x01;
}

void init_SCI(void)
{
SCI0BDH=0x00;
SCI0BDL=0x34;
SCI0CR1=0;
SCI0CR2=0x0C;
}

void init_ECT (void)
{
TSCR1_TEN=0;
TSCR2=0x07;
TIOS_IOS0=1;
TC0=0x7A12;
TIE_C0I=1;

TIOS_IOS1=0;
TCTL4=0x04;
PBCTL_PBEN=0; //16位脉冲累加器B禁止
PACN1=0; //PACN清零
ICPAR_PA1EN=1; //设置八位脉冲累加器PA1EN
PBCTL_PBOVI=1; //肞A1EN中断使能

DLYCT=0x01; //延时
TSCR1_TEN=1;
}

void interrupt 8 READCOUNT(void)
{
TFLG1_C0F=1; //比较中断标志清零
TC0+=0X7A12;
while(!(SCI0SR1_TDRE))
;
SCI0DRL=PACN1;
}

void main(void)
{
init_SCI();
init_PWM();
init_ECT();
EnableInterrupts;
for(;;)
{}
}

作者: wangyueyouzi    时间: 2008-4-14 12:54

有同感啊
我的也这样哦
高手门快给指点指点啊
作者: hejianqian    时间: 2009-5-27 12:04

应该是中断函数的地址选错了,中断源是PAI的那个吧.不是IOC的那个中断源.






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0