查看: 4341|回复: 6

[其他] ucos for DG128 稳定性 求救

[复制链接]

该用户从未签到

17

主题

64

帖子

0

新手上路

Rank: 1

积分
155
最后登录
1970-1-1
发表于 2010-11-20 14:01:19 | 显示全部楼层 |阅读模式
        各位,大家好!关于ucos for DG128移植后(包括中断服务的应用),一直想应用到实际当中,但是经常会碰到系统不稳定。所以一直不敢应用于实际。我现在的例子是:SCI0在中断中接收10byte的数据,接收后返回任务中再发送出去。

<span style="font-size: small">*****************************************************/
#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
我知道答案 目前已有5人回答

ucos_DG128.rar

1.02 MB, 下载次数: 15, 下载积分: 威望 1

AccessPort串口监控.rar

379.28 KB, 下载次数: 6, 下载积分: 威望 1

回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-11-22 16:14:40 | 显示全部楼层

    RE:ucos for DG128 稳定性 求救

    你程序的问题,你进入串口中断以后,可以不关闭中断。你可以使用SCIDATA[NUM++]的方式来存放数据,你在任务里面判断NUM的值,如果大于10就发送数据,发送的时候也可以不用关闭中断。
    该会员没有填写今日想说内容.

    该用户从未签到

    17

    主题

    64

    帖子

    0

    新手上路

    Rank: 1

    积分
    155
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-24 15:36:41 | 显示全部楼层

    回复:ucos for DG128 稳定性 求救

    你程序的问题,你进入串口中断以后,可以不关闭中断。你可以使用SCIDATA[NUM++]的方式来存放数据,你在任务里面判断NUM的值,如果大于10就发送数据,发送的时候也可以不用关闭中断。 

    你好,安版主,我按照你的修改了一下,然后我把任务中的延时函数写成了OSTimeDly(10); 我收发几次数据后还是死,安版主能不能帮我修改一下,不会死机后的这个原文件,再发上来一下啊!多谢了!

    该用户从未签到

    17

    主题

    64

    帖子

    0

    新手上路

    Rank: 1

    积分
    155
    最后登录
    1970-1-1
     楼主| 发表于 2010-11-26 14:05:55 | 显示全部楼层

    RE:ucos for DG128 稳定性 求救

    问题,已经解决了,进中断要加 存页地址

    该用户从未签到

    0

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    10
    最后登录
    1970-1-1
    发表于 2011-11-7 21:47:13 | 显示全部楼层

    回复:ucos for DG128 稳定性 求救

    楼主 , 我最近在DG128中移植ucos操作系统,如果直接运行,单片机运行效果正常,但是当进行BDM调试的时候,却发现,程序一直在OSCtxSw()中运行!
    个人有两个疑问:1. 是不是这个DG128中的BDM调试是不是用的软中断,而ucos中用的也是软中断,会不会这个原因引起的;
    2. 就是OSCtxSw( ) 这个函数怎么就和 #define  OS_TASK_SW()     __asm swi   产生了某种联系呢? 联系具体在哪里体现的?
     
    我用的程序好像和你的一样 , 不过我是新学的 , 不知道这个程序里面是否存在一些问题,请你指教一下!

    该用户从未签到

    17

    主题

    64

    帖子

    0

    新手上路

    Rank: 1

    积分
    155
    最后登录
    1970-1-1
     楼主| 发表于 2011-11-8 19:29:34 | 显示全部楼层

    RE:ucos for DG128 稳定性 求救

    DG128中的BDM调试不是用的软中断的
    void interrupt 7 OSTickISR(void)
    {
      asm
      {
        ldaa PPAGE;
        psha;
      }         // 保存PPAGE
            OSIntEnter();
            if(OSIntNesting == 1)
            {
              asm
              {
                ldx OSTCBCur;
                sts 0,x;
              }
            }
            CRGFLG |= 0x80;   // 清中断
            OSTimeTick();
            OSIntExit();     /* exit interrupt and task switch*/
      // 没有更高优先级的任务进入就绪态,则中断返回
      asm
      {
        pula;
        staa PPAGE;
        rti;
      }
    }
    中断函数按这样写

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    5
    最后登录
    1970-1-1
    发表于 2011-11-8 20:20:33 | 显示全部楼层

    RE:ucos for DG128 稳定性 求救

    不懂啊
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-27 16:54 , Processed in 0.100725 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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