智能车制作
标题:
关于ucos for DG128移植后的稳定性
[打印本页]
作者:
nickzmj
时间:
2010-11-20 14:09
标题:
关于ucos for DG128移植后的稳定性
各位,大家好!关于ucos for DG128移植后(包括中断服务的应用),一直想应用到实际当中,但是经常会碰到系统不稳定。所以一直不敢应用于实际。我现在的例子是:SCI0在中断中接收10byte的数据,接收后返回任务中再发送出去。
*****************************************************/
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 20 SCI0_ISR(void){
INT8U i;
DisableInterrupts; //关中断
cnt0=TCNT;
OSIntEnter();
cnt1=TCNT;
err=SCI0ReN(10,sci0_buf); //10个byte接收
if(err==1){
for(i=0;i<10;i++){
sci0_buf[i]=4; //错误处理
}
}
else OSSemPost(sci_sem); //发送信号量
cnt2=TCNT;
OSIntExit(); // exit interrupt and task switch
EnableInterrupts; //开中断
}
///////////////////////////////////////////////////////////////////////////////////////////////////
*********************************************************************/
void TaskSCI(TASKDATA* pdata){
int tmp;
pdata=pdata;
SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
SCI0BDH=0x00; //busclk 16MHz, 9600bps,SCI0BDL=0x68
SCI0BDL=0x9c; //SCI0BDL=busclk/(16*SCI0BDL)
for(;;){
OSSemPend(sci_sem,0,&err); //等待信号量
DisableInterrupts; //关中断
cnt3=TCNT;
SCISendN(10,sci0_buf); //把接收到的发送出去
EnableInterrupts; //开中断
//**************************************************
OSTimeDly(OS_TICKS_PER_SEC); //问题就在这里! 如延时变短,
} // 如OSTimeDly(5); 收发数据多次就容易死机。
} //**************************************************
按理论来说,修改这个OSTimeDly(); 函数时间的长短是不会有稳定性的影响的,但改成OSTimeDly(5); 就很容易死机,附件是我的项目文件 和串口调试软件(这个串口调试软件是不会导致死机的,因为在没用UCOS时是很好用的),请大家研究一下!
作者:
fancymask
时间:
2011-11-1 14:42
回复
1#
nickzmj
请问 你最后 找出问题来了吗???
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2