首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在使用mc9s08qg8 ,中断采样时的问题求助

在使用mc9s08qg8 ,中断采样时的问题求助

我采样内部时钟,ad采用中断方式!现在ad中断没有起作用,请版主及各位老大给咱诊断诊断!!!附程序如下!

#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#define N 10
uchar adc_result[N],i;
uint wendu1,temp;

void InitIcs(void)
{
ICSC1=0x04; /* CLKS for Internal reference clock, IREFS for internal reference */
ICSC2=0x08; /* BDIV divide by 1, LP for FLL disabled */
//ICSTRM=0x00; //内部振荡器调整因子
ICSSC =0X00;
}

void InitSys(void)
{
// SOPT:
SOPT1 = 0x03; // COPE=0,COPT=0,STOPE=0 ,BKGDPE=1,RSTPE=1;
SOPT2 = 0x80; //COPCLKS =1:INTERNAL 1KCLK IS SOURCE TO COP
//SDIDL = 0x09;
//SPMSC1 = 0x1c; //system power managememt status and control
//SPMSC2 = 0x00;
}

void InitPort(void)
{
PTADD=0xc8; // 1100 1000
PTAD=0xf7; // 1111 0111
PTAPE=0x07; // Internal Pullup Enable
//PTASE=0x3f; // Output Slew Rate Control Enable
//PTADS=0x08; // Output Drive Strength Selection
PTBD=0xff; // 1110 1110
PTBDD=0xff; // 0000 0000
PTBPE=0xff;// Internal Pullup Enable
//PTBSE=0xff; // Output Slew Rate Control Enable
//PTBDS=0x00; // Output Drive Strength Selection
//SPMSC3 = 0x00;
}
void InitAD(void)
{
uchar j;
ADCCFG = 0xb1; //high speed, 8bit ,bus_clk/2 ,long sample time
APCTL1 = 0xc0;
ADCSC1 = 0x40; //AIEN=1:INTERRUPT EN,ADCO=1:CONTINOUS,ad0
ADCSC2 = 0x00; //
for(j=0;j {
adc_result[j]=0;
}
}

void ad_deal(void)
{
uchar j;
uchar max,min;
if(i>=N)
{
//ADSCR=0x1f; //关闭ADC
i=0;
temp=0;
for(j=0;j {
max=adc_result[0];
min=adc_result[0];
if(max {
max=adc_result[j];
}
if(min>adc_result[j])
{
min=adc_result[j];
}
temp+=adc_result[j];
}
temp=temp-max-min/(N-2);
}
wendu1 = (temp*3000/255-500)/10; //采样,8位,3v参考电压
}

void main(void)
{
InitPort();
InitIcs();
InitAD();
InitSys();
EnableInterrupts;
for(;;) {
ad_deal();

// __RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}


interrupt void _ADC_int(void)
{
ADCSC1_AIEN=0; //禁止中断
adc_result=ADCRL; //保存采样值
i++;
PTBD_PTBD7 = ~ PTBD_PTBD7;
ADCSC1=0x00; //选择通道0
ADCSC1_AIEN=1; //使能中断
// AD_flag=1;
}

设个断点看一下,你的AD中断发生了吗?
海纳百川  有容乃大
好像没有,我在中断里设置io口取反,io口没有反应!!!!
我的ics和sys还有ad初始化对吗?
我的ics和sys还有ad初始化对吗? 我采样内部时钟,ad采用中断方式?ad时钟用bus时钟

[此贴子已经被作者于2007-7-9 14:06:02编辑过]

把整个project打包贴出来吧。
海纳百川  有容乃大
版主帮我看一下,谢谢了
http://bbs.chinaecnet.com/uploadImages/mc9s08.rar
附件
你没有定义中断地址,中断当然不会发生。在PRM文件最后加一句说明即可:
VECTOR ADDRESS 0xFFD8 _ADC_int
海纳百川  有容乃大
谢谢版主,我再试试,再问一下,就是软件仿真,如何设置ad参数,可以模拟ad中断吗?
也许可以,但比较麻烦。
海纳百川  有容乃大

adc中断就是进不去,版主帮我在分析分析是什么问题? 烦请各位能否给一个mc9s08qg8的ad中断的初始化和用内部系统时钟的初始化!谢谢,调试好久了,比较郁闷。。。谢谢,,。。

[此贴子已经被作者于2007-7-15 23:32:48编辑过]

你改过PRM文件了吗?如果还不行,把你改过的project再贴出来看看吧。
海纳百川  有容乃大
改过了,还不行!!我怀疑是ad时钟的问题吧!版主帮我看看 ,interrupt void _Vrti_Int()能进,就是ad中断进不了!

[此贴子已经被作者于2007-7-16 23:02:31编辑过]

文件如下:
返回列表