打印
[复制链接]
410|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pchqs|  楼主 | 2023-10-10 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 pchqs 于 2023-10-11 09:52 编辑

dsPIC的ADC组中断ADCInterrupt代码如下:
void __attribute__((__interrupt__)) _ADCInterrupt(void)
{
        AdcParams.Count += 0x0001;
        if(AdcParams.Count > 833)
        {
                AdcParams.Count = 0x0000;
                AdcParams.IcOrigin = __builtin_divud(AdcParams.IcAccumulate,833);
                AdcParams.IcAccumulate = 0;
               

                AdcParams.IbOrigin = __builtin_divud(AdcParams.IbAccumulate,833);
                AdcParams.IbAccumulate = 0;
        
                AdcParams.IaOrigin = __builtin_divud(AdcParams.IaAccumulate,833);
                AdcParams.IaAccumulate = 0;
        
                AdcParams.UcOrigin = __builtin_divud(AdcParams.UcAccumulate,833);
                AdcParams.UcAccumulate = 0;
               

                AdcParams.UbOrigin = __builtin_divud(AdcParams.UbAccumulate,833);
                AdcParams.UbAccumulate = 0;
               

                AdcParams.UaOrigin = __builtin_divud(AdcParams.UaAccumulate,833);
                AdcParams.UaAccumulate = 0;

                AdcParams.UoutOrigin = __builtin_divud(AdcParams.UoutAccumulate,833);
                AdcParams.UoutAccumulate = 0;

                AdcParams.TemperatureOrigin = __builtin_divud(AdcParams.TemperatureAccumulate,833);
                AdcParams.TemperatureAccumulate = 0;
                SysTime.AdMs100 = 1;
               
        }
        else
        {
                AdcParams.siAdTemp1 = ADCBUF0;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.UaAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.UaAccumulate -= AdcParams.siAdTemp1;}
               
                AdcParams.siAdTemp1 = ADCBUF1;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.UbAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.UbAccumulate -= AdcParams.siAdTemp1;}
               
                AdcParams.siAdTemp1 = ADCBUF2;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.UcAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.UcAccumulate -= AdcParams.siAdTemp1;}

                AdcParams.siAdTemp1 = ADCBUF3;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.UoutAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.UoutAccumulate -= AdcParams.siAdTemp1;}

                AdcParams.siAdTemp1 = ADCBUF4;
                AdcParams.siAdTemp2 = AdcParams.siAdTemp1;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.IaAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.IaAccumulate -= AdcParams.siAdTemp1;}
               
                AdcParams.siAdTemp1 = ADCBUF5;
               

                AdcParams.siAdTemp1 = ADCBUF6;
                if(AdcParams.siAdTemp1> AD_BASE)
                {AdcParams.IcAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.IcAccumulate -= AdcParams.siAdTemp1;}

                AdcParams.siAdTemp1 += AdcParams.siAdTemp2;
                if(AdcParams.siAdTemp1 > AD_BASE)
                {AdcParams.IbAccumulate += AdcParams.siAdTemp1;}
                else{AdcParams.IbAccumulate -= AdcParams.siAdTemp1;}

                AdcParams.siAdTemp1 = ADCBUF7;
                AdcParams.siAdTemp1 += 2048;
                AdcParams.TemperatureAccumulate += AdcParams.siAdTemp1;               
        }
                        
        IFS0bits.ADIF = 0;   //清AD中断标志位
    return;   
        
}

使用特权

评论回复
沙发
pchqs|  楼主 | 2023-10-10 15:22 | 只看该作者
本帖最后由 pchqs 于 2023-10-11 09:51 编辑

TAD=1us,采集时间为1TAD,转换时间为14TAD.代码如下:
ADCON3bits.SAMC = 1;
ADCON1bits.SSRC = 7;

使用特权

评论回复
板凳
pchqs|  楼主 | 2023-10-11 09:43 | 只看该作者
本帖最后由 pchqs 于 2023-10-11 09:55 编辑

ADCON2bits.SMPI = 7; 每8次转化完成中断
我算出来的约100ms进行一次计算,但是ADCInterrupt这种组中断会响应所有ADC中断要求,那么AN8~AN15所有的中断会同时触发吗,算出来的100ms是对的吗?

使用特权

评论回复
地板
ynwa| | 2023-10-12 14:38 | 只看该作者
你用的具体是dsPIC的哪个系列哪个型号。

使用特权

评论回复
5
pchqs|  楼主 | 2023-10-12 14:52 | 只看该作者
dsPIC30F5011

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝