求解430中断程序处理方法!!急啊

2019-03-24 16:04发布

芯片MSP430F47197 SD16_A进行7路采样,32768晶振,OSR256,采样频率fs=32768*32/256=4096/s 采样的交流电压频率为50HZ,我的理解是每秒可采集4096个数据,而交流电每秒有50个周期, 理论上我每个周期的交流电可采集到4096/50=82个数据左右。   在SD16中断服务程序中,仅仅只操作result[]=SD16MEM[],即只做把采样值读出的操作,可以得到正确的采样数据(每周期82个左右) 但是,我要将采样值计算成电压有效值,还要进一步计算出有功功率、无功功率,就在中断中写入这些计算程序,我估计,由于计算量比较大, 要处理的数据比较多,所以中断处理的时间比较久,导致我实际采集的数据只有每周期5-6个左右。   我想问的是:1、如果中断程序没有处理完,是不是下一次中断就不响应了(才导致我的采样点变少?)                      2、我把fM=128*32768,OSR1024,然后fs不变为4096,此时每周期可采集到10个数据左右,是不是可以理解为 我的工作频率变高了,相当于机器周期变短了,我处理中断程序中的数据变快了,所以响应了更多的中断采样?                      3、其实具体采样到多少数据每个周期对于有效值、功率计算无关紧要,但是,我要计算其总的电能该怎么办呢,原本的想法是采样 1s,在中断中加入个参数sample_count,每中断一次就+1,加到4096次就是1s,然后用功率*1s就可以得到1s内的电能了,现在由于采样点数与时间关系不明确了,我sample_count计到4096,很明显不只过了1s,那我该怎么计算电能呢?                      4、既然都提了,还有个技术问题我解决不了,就是怎么通过电压采样计算出其实际频率值呢,我的想法是用过零检测法,就是每次采样电压值有正负变换就说明了穿越了0点,没周期理论上要穿越2次0点(暂时不计noise和offset引起的误差),但是又回到上面的问题了,虽然我得到了穿越次数(4096次采样),但是由于4096次采样已经不是1s了,所以我也无法算出frequency来。     谢谢各位大神,求指导啊!!   ps:  优化中断算法,减少运算时间什么的,请给条明确的办法呀 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
wstt
2019-03-25 02:47
对于频率的测量,粗略的的测量可以采取过零检测的方式,可以采取等精度测量的方式

一周热门 更多>

相关问题

    相关文章