打印

在中断可不可以调用OS_Sched函数

[复制链接]
2179|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
龙斌|  楼主 | 2008-10-20 08:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学习UCOS。现在碰到一个问题,向大家请教一下。
我现在对交流电压电流进行采样,采样192点后计算电流电压等参数。并根据参数判断是否存在告警,如果存在告警继电器输出。所以我想在中断中发送信号量,使采样完毕就马上能计算参数。但在OS_Sched程序内并不希望在中断执行。看if (OSIntNesting == 0)。
因为刚开始接触UCOS,对任务切换不是很了解,让我很担心。

void __attribute__((__interrupt__,no_auto_psv)) _ADC1Interrupt( void )
{
    AD1CON1bits.ASAM = 0;              // 停止自动采样

    IFS0bits.AD1IF = 0;
    /* 取出采样数据*/
    current_sample[IO_CUR][DataNum] = ADC1BUF0;
    voltage_sample[AB_VOL][DataNum] = ADC1BUF1;
    current_sample[A_CUR][DataNum] = ADC1BUF2;
    current_sample[B_CUR][DataNum] = ADC1BUF3;
    voltage_sample[BC_VOL][DataNum] = ADC1BUF4;
    current_sample[C_CUR][DataNum] = ADC1BUF5;

    DataNum++;                                                        // wait for the next data
    if(DataNum >= BUF_SIZE) {                        // loop back to the begin of cycle buffer
                DataNum = 0;
    }

        if ( ++sampleCount >= 192) {
                sampleCount = 0;
        OSSemPost(CalculateSem);       // 采样数据完毕,开始计算。
        }
        /* reset ADC interrupt flag */
}

相关帖子

沙发
btiger2000| | 2008-10-20 16:36 | 只看该作者

中断中可以发送信号量的!

使用特权

评论回复
板凳
alex74| | 2008-10-20 23:46 | 只看该作者

..

用Sem

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

24

帖子

1

粉丝