TI中文支持网
TI专业的中文技术问题搜集分享网站

关于TIF28035永磁同步伺服电机控制程序思想请教

发帖子主要在FOC在芯片具体实现过程中几点疑惑:

第一,程序中该变量不需要清理吗?

// Verifying the ISR

IsrTicker++;

第二,TI的官方例程中的软件结构不是太清楚,具体为:

interrupt void OffsetISR(void)
{
// Verifying the ISR
IsrTicker++;
// DC offset measurement for ADC

if (IsrTicker>=5000)
{ offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); //Phase A offset
offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2)); //Phase B offset
offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3)); //Phase C offset
}

if (IsrTicker > 20000)
{
EALLOW;
PieVectTable.ADCINT1=&MainISR; EDIS;
}
// Enable more interrupts from this timer
AdcRegs.ADCINTFLG.bit.ADCINT1=1;
// Acknowledge interrupt to recieve more interrupts from PIE group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

该中断函数和FOC运算的mainISR()这两个函数都是每次FOC运算时必须要进入的吗?

因为才接触TI的dsp芯片  其次没有找到关于原理介绍性的资料  所以还望做过的大神  予以解答  

我目前认为是不是在每个PWM周期上溢处触发ADC中断  在变量IsrTicker > 20000时进入mainISR()进行FOC 运算  

可是问题是变量IsrTicker不需要清零吗?  还是我的理解有误  还望各位网友答疑解惑   小弟不胜感激 

Young Hu:

OffsetISR是计算通道的偏差的,计算完成以后切换到mainISR,不再进入OffsetISR了。

发帖子主要在FOC在芯片具体实现过程中几点疑惑:

第一,程序中该变量不需要清理吗?

// Verifying the ISR

IsrTicker++;

第二,TI的官方例程中的软件结构不是太清楚,具体为:

interrupt void OffsetISR(void)
{
// Verifying the ISR
IsrTicker++;
// DC offset measurement for ADC

if (IsrTicker>=5000)
{ offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); //Phase A offset
offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2)); //Phase B offset
offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3)); //Phase C offset
}

if (IsrTicker > 20000)
{
EALLOW;
PieVectTable.ADCINT1=&MainISR; EDIS;
}
// Enable more interrupts from this timer
AdcRegs.ADCINTFLG.bit.ADCINT1=1;
// Acknowledge interrupt to recieve more interrupts from PIE group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

该中断函数和FOC运算的mainISR()这两个函数都是每次FOC运算时必须要进入的吗?

因为才接触TI的dsp芯片  其次没有找到关于原理介绍性的资料  所以还望做过的大神  予以解答  

我目前认为是不是在每个PWM周期上溢处触发ADC中断  在变量IsrTicker > 20000时进入mainISR()进行FOC 运算  

可是问题是变量IsrTicker不需要清零吗?  还是我的理解有误  还望各位网友答疑解惑   小弟不胜感激 

user4881649:

回复 Young Hu:

多谢  我帖子里第二个问题我周末想通了  现在主要的是程序中变量isrticker不需要清零吗?

该变量在以下中断中是为了切换到mainisr()中程序如下,此外在程序中有这样的一句话

// Enable more interrupts from this timerAdcRegs.ADCINTFLG.bit.ADCINT1=1;

不应该是AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //Clear ADCINT1 flag reinitialize for next SOC 吗

interrupt void OffsetISR(void){// Verifying the ISR IsrTicker++; // DC offset measurement for ADC

if (IsrTicker>=5000) { offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); //Phase A offset offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2)); //Phase B offset offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3)); //Phase C offset }

if (IsrTicker > 20000) { EALLOW; PieVectTable.ADCINT1=&MainISR; EDIS; } // Enable more interrupts from this timer AdcRegs.ADCINTFLG.bit.ADCINT1=1; // Acknowledge interrupt to recieve more interrupts from PIE group 1 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

问题是在mainisr中也有IsrTicker++操作 我就不明白 这句话是用来干嘛的

// MainISR interrupt void MainISR(void){

// Verifying the ISR IsrTicker++;

由于才接触DSP   而且才分析TI的源码  有的语句我看的不太懂   验证算法是可以  可是如果做项目的话 弄不清 还真不敢上手用  还望大神不吝赐教  小弟感激不尽

发帖子主要在FOC在芯片具体实现过程中几点疑惑:

第一,程序中该变量不需要清理吗?

// Verifying the ISR

IsrTicker++;

第二,TI的官方例程中的软件结构不是太清楚,具体为:

interrupt void OffsetISR(void)
{
// Verifying the ISR
IsrTicker++;
// DC offset measurement for ADC

if (IsrTicker>=5000)
{ offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); //Phase A offset
offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2)); //Phase B offset
offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3)); //Phase C offset
}

if (IsrTicker > 20000)
{
EALLOW;
PieVectTable.ADCINT1=&MainISR; EDIS;
}
// Enable more interrupts from this timer
AdcRegs.ADCINTFLG.bit.ADCINT1=1;
// Acknowledge interrupt to recieve more interrupts from PIE group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

该中断函数和FOC运算的mainISR()这两个函数都是每次FOC运算时必须要进入的吗?

因为才接触TI的dsp芯片  其次没有找到关于原理介绍性的资料  所以还望做过的大神  予以解答  

我目前认为是不是在每个PWM周期上溢处触发ADC中断  在变量IsrTicker > 20000时进入mainISR()进行FOC 运算  

可是问题是变量IsrTicker不需要清零吗?  还是我的理解有误  还望各位网友答疑解惑   小弟不胜感激 

Eric Ma:

回复 user4881649:

这个IsrTicker 只是一个计数值,用来让你观察中断有一直在运行而已,不用清零,溢出自动清零。

ERIC

发帖子主要在FOC在芯片具体实现过程中几点疑惑:

第一,程序中该变量不需要清理吗?

// Verifying the ISR

IsrTicker++;

第二,TI的官方例程中的软件结构不是太清楚,具体为:

interrupt void OffsetISR(void)
{
// Verifying the ISR
IsrTicker++;
// DC offset measurement for ADC

if (IsrTicker>=5000)
{ offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1)); //Phase A offset
offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2)); //Phase B offset
offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3)); //Phase C offset
}

if (IsrTicker > 20000)
{
EALLOW;
PieVectTable.ADCINT1=&MainISR; EDIS;
}
// Enable more interrupts from this timer
AdcRegs.ADCINTFLG.bit.ADCINT1=1;
// Acknowledge interrupt to recieve more interrupts from PIE group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

该中断函数和FOC运算的mainISR()这两个函数都是每次FOC运算时必须要进入的吗?

因为才接触TI的dsp芯片  其次没有找到关于原理介绍性的资料  所以还望做过的大神  予以解答  

我目前认为是不是在每个PWM周期上溢处触发ADC中断  在变量IsrTicker > 20000时进入mainISR()进行FOC 运算  

可是问题是变量IsrTicker不需要清零吗?  还是我的理解有误  还望各位网友答疑解惑   小弟不胜感激 

Rong Zhan:

你好,我刚刚开始用,TI的官方例程怎么找,我想找DSP2812  电机磁链观测的程序,,电流模型之类,,,怎么找呢

赞(0)
未经允许不得转载:TI中文支持网 » 关于TIF28035永磁同步伺服电机控制程序思想请教
分享到: 更多 (0)