| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- #define __INTERRUPT_DEF
- #include "ABIS_User.h"
- unsigned char g_ucENABLE = 1;
- unsigned int uiData_num = 0,uiData_buffer = 0;
- /*******************************************************************************
- * 函数名称:Init_T3
- *******************************************************************************/
- //void Init_T3(){
- // TMR3 = 0;
- // PR3 = 9375;
- // T3CON = 0x8020; // T6=1:64
- //
- // IFS0bits.T3IF = 0;
- // IPC2bits.T3IP = 4;
- // IEC0bits.T3IE = 1;
- // T3CONbits.TON = 1;
- //
- //}
- //void __attribute__((__interrupt__,auto_psv)) _T3Interrupt (void)
- //{
- // if(DmaBuffer == 0)
- // {
- // BufferA.Adc1Ch0[0] = AD_Get(0x00);
- // BufferA.Adc1Ch1[0] = AD_Get(0x01);
- // BufferA.Adc1Ch2[0] = AD_Get(0x02);
- // BufferA.Adc1Ch3[0] = AD_Get(0x03);
- // BufferA.Adc1Ch4[0] = AD_Get(0x04);
- // BufferA.Adc1Ch5[0] = AD_Get(0x05);
- // BufferA.Adc1Ch6[0] = AD_Get(0x06);
- // BufferA.Adc1Ch7[0] = AD_Get(0x07);
- // BufferA.Adc1Ch8[0] = AD_Get(0x08);
- // }
- // else
- // {
- // BufferB.Adc1Ch0[0] = AD_Get(0x00);
- // BufferB.Adc1Ch1[0] = AD_Get(0x01);
- // BufferB.Adc1Ch2[0] = AD_Get(0x02);
- // BufferB.Adc1Ch3[0] = AD_Get(0x03);
- // BufferB.Adc1Ch4[0] = AD_Get(0x04);
- // BufferB.Adc1Ch5[0] = AD_Get(0x05);
- // BufferB.Adc1Ch6[0] = AD_Get(0x06);
- // BufferB.Adc1Ch7[0] = AD_Get(0x07);
- // BufferB.Adc1Ch8[0] = AD_Get(0x08);
- // }
- // DmaBuffer ^= 1;
- // IFS0bits.T3IF = 0;
- //}
- /*******************************************************************************
- * 函数名称:T1Interrupt
- *******************************************************************************/
- void __attribute__((__interrupt__,auto_psv)) _T2Interrupt (void)
- {
- IFS0bits.T2IF = 0;
- T6CONbits.TON = 0; //修改为0
- TMR2 = 0;
- g_tMotorParam.ulXiPosition =( g_tMotorParam.ucXDirection == FORWARD )? (g_tMotorParam.ulXiPosition + 1) : (g_tMotorParam.ulXiPosition - 1);
- if(MOTORX_DIR_scan == 1){
- g_uiScanPulseX++;//记录当前脉冲值
- }else if(MOTORX_DIR_scan == 0){
- g_uiScanPulseX--;//记录当前脉冲值
- }else{}
-
- if(Alldata == 1){
- if(ADC7606Enable==1) {
- if (g_ucFAMLED == 1) {
- if ((g_uiScanPulseX >= (g_uiScanFAM[0] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[0] + SUM))) {
- FAMLED = 1;
- FAMData[0][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[1] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[1] + SUM))) {
- FAMLED = 1;
- FAMData[1][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[2] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[2] + SUM))) {
- FAMLED = 1;
- FAMData[2][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[3] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[3] + SUM))) {
- FAMLED = 1;
- FAMData[3][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[4] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[4] + SUM))) {
- FAMLED = 1;
- FAMData[4][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[5] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[5] + SUM))) {
- FAMLED = 1;
- FAMData[5][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[6] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[6] + SUM))) {
- FAMLED = 1;
- FAMData[6][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[7] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[7] + SUM))) {
- FAMLED = 1;
- FAMData[7][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[8] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[8] + SUM))) {
- FAMLED = 1;
- FAMData[8][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[9] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[9] + SUM))) {
- FAMLED = 1;
- FAMData[9][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[10] - SUM)) &&(g_uiScanPulseX < (g_uiScanFAM[10] + SUM))) {
- FAMLED = 1;
- FAMData[10][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[11] - SUM)) &&(g_uiScanPulseX < (g_uiScanFAM[11] + SUM))) {
- FAMLED = 1;
- FAMData[11][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else if ((g_uiScanPulseX >= (g_uiScanFAM[12] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[12] + SUM))) {
- FAMLED = 1;
- FAMData[12][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- }else if ((g_uiScanPulseX >= (g_uiScanFAM[13] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[13] + SUM))) {
- FAMLED = 1;
- FAMData[13][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- }else if ((g_uiScanPulseX >= (g_uiScanFAM[14] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[14] + SUM))) {
- FAMLED = 1;
- FAMData[14][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- }else if ((g_uiScanPulseX >= (g_uiScanFAM[15] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[15] + SUM))) {
- FAMLED = 1;
- FAMData[15][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- }else if ((g_uiScanPulseX >= (g_uiScanFAM[16] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[16] + SUM))) {
- FAMLED = 1;
- FAMData[16][FAMData_num] = AD_Get(0x09);
- FAMData_num++;
- } else {
- FAMLED = 0;
- FAMData_num = 0;
- }
- }
-
- }
- }
- else if(Alldata == 0){//获取全数据用
- if(Motstep == 10){
- Motstep = 0;
- if(MPPCnum == 0)
- ucBuffer_Data[FAMData_num] = AD_Get(0x09);
- else if(MPPCnum == 1)
- ucBuffer_Data[FAMData_num] = AD_Get(0x0B);
- else if(MPPCnum == 2)
- ucBuffer_Data[FAMData_num] = AD_Get(0x0A);
- else if(MPPCnum == 3)
- ucBuffer_Data[FAMData_num] = AD_Get(0x0C);
-
- FAMData_num++;
- }
- Motstep++;
- }
- else{};
- PR2 = g_uiMotorXPeriod[g_uiAccIndex];
- OC1RS = g_uiMotorXPeriod[g_uiAccIndex]/2;
- OC1R = 0;
- g_uliRunningPulse++;
- if(g_uliRunningPulse <= g_tMotorParam.ulXiAccPulse){
- g_uiAccIndex++;
- }
- else if(g_uliRunningPulse < g_tMotorParam.ulXiConstPulse){ //匀速运动,频率不变
- //g_uliRunningPulse--;
- }
- else if(g_uliRunningPulse < g_uliPulseCount){ //减速运动,频率减小
- g_uiAccIndex--;
- }
- else if(g_uliRunningPulse >= g_uliPulseCount){ //停止PWM输出
- TMR2 = 0;
- T2CONbits.TON = 0; //off the T1
- g_ucMotorXFinishFlag=1;
- ADC7606Enable =0;
- }
- T6CONbits.TON = 1; //修改为0
- }
- /*******************************************************************************
- * 函数名称:Init_T6
- *******************************************************************************/
- void Init_T6()
- {
- TMR6 = 0;
- PR6 = 11719;
- T6CON = 0x8030;
- IFS2bits.T6IF = 0;
- IPC11bits.T6IP = 2;
- IEC2bits.T6IE = 1;
- T6CONbits.TON = 1;
- }
- void __attribute__((interrupt,auto_psv)) _T6Interrupt (void)
- {
- IFS2bits.T6IF = 0;
- static unsigned char Timer ;
- Timer++;
- if(Timer == 20){
- Timer = 0;
- STU1 = !STU1;
- }
-
- // 待测试标定对应顺序 测试OK
- MCUAdcBuff[0][SampleNo] = AD_Get(0x05); //BLOCK1
- MCUAdcBuff[1][SampleNo] = AD_Get(0x04); //BLOCK2
- MCUAdcBuff[2][SampleNo] = AD_Get(0x03); //BLOCK3
- MCUAdcBuff[3][SampleNo] = AD_Get(0x02); //BLOCK4
- MCUAdcBuff[4][SampleNo] = AD_Get(0x06); //BLOCK5制冷池
- MCUAdcBuff[5][SampleNo] = AD_Get(0x07); //BLOCK6制冷池
- MCUAdcBuff[6][SampleNo] = AD_Get(0x0f); //热盖
- // MCUAdcBuff[7][SampleNo] = AD_Get(0x07); //
- // MCUAdcBuff[8][SampleNo] = AD_Get(0x08); // 散热片
- SampleNo++;
- if(SampleNo > 2) { //100ms
- SampleNo=0;
- T4CONbits.TON=1; //off the T4 for 1ms
- ms100conter++;
- if(ms100conter%100 == 0){
- s10flag = 1;
- }
- }
-
-
- }
- /*******************************************************************************
- * 函数名称:Init_T4
- *******************************************************************************/
- void Init_T4()
- {
- TMR4 = 0;
- PR4 = 9375;
- T4CON = 0x8020; // T4=1:64
- IFS1bits.T4IF = 0;
- IPC6bits.T4IP = 2; //值越高优先级越高
- IEC1bits.T4IE = 1; //使能中断
- T4CONbits.TON = 0;
- }
- void __attribute__((interrupt,auto_psv)) _T4Interrupt (void)
- {
- unsigned char i;
- unsigned char j;
- long TempAD;
- // STU2 = ~STU2;
- IFS1bits.T4IF = 0;
- T4CONbits.TON = 0;//off the T4 for 1ms
- for(i=0;i<9;i++){
- TempAD=0;
- for(j=0;j<3;j++){
- TempAD += MCUAdcBuff[i][j];
- }
- dTemperature[i]=TempAD/3;
- dTemperatureAD[i] = (unsigned int)dTemperature[i];
- }
- for(i=0;i<7;i++){
- TempChn[i].fCurrentTemperature = (double)(TempPara[i].fK1 * dTemperature[i]*dTemperature[i] + TempPara[i].fK2 * dTemperature[i] + TempPara[i].fB);
- if(TempChn[i].fCurrentTemperature > 90) TempChn[i].fCurrentTemperature = (double)(TempChn[i].fCurrentTemperature + TempPara[i].TTb);
- }
- if(g_ucENABLE == 1){
- PeltierCtrler();
- }
-
- for(i=6;i<8;i++){
- CAPReal_temp[i-6] =(double)(CAPTk[i-6]*dTemperature[i] + CAPTb[i-6]);
- CAPReal_temp[i-6] =(double)(CAPTTk[i-6]*CAPReal_temp[i-6] + CAPTTb[i-6]);
- }
- if((CAPReal_temp[0] > (g_tEE.CAPTarget_temp[0]-3))&&(CAPReal_temp[0] < 121.0 )){//当前热盖温度在规定范围内时系统状态灯常亮
- g_ucSTATE_CAP = 1;
- }
- CAPPeltierCtrler();//热盖温控
- g_fFINReal_Temp = (float)(g_tEE.fFINTTk * (g_tEE.fFINTk*dTemperature[8] + g_tEE.fFINTb)+ g_tEE.fFINTTb);
-
- g_ucSampleNo_STU++;
- if((g_ucSampleNo_STU >= 3)&&(g_ucSTATE_RUN == 2)){//实验开始,状态灯间隔0.5s闪烁
- g_ucSampleNo_STU = 0;
- POWER_STU1 = ~POWER_STU1;
- FANOC_Set(3,g_tEE.uiFanHPwm);
- }
- if((g_ucSTATE_RUN == 1)&&(g_ucSTATE_CAP == 1)){//实验结束或空闲,状态灯常亮
- g_ucSampleNo_STU = 0;
- POWER_STU1 = 1;
- FANOC_Set(3,g_tEE.uiFanLPwm);
- }
- if(g_ucSTATE_CAP == 0){
- g_ucSampleNo_STU = 0;
- POWER_STU1 = 0;
- FANOC_Set(3,g_tEE.uiFanLPwm);
- }
-
- }
- /*******************************************************************************
- * 函数名称:Init_T8
- *******************************************************************************/
- void Init_T8()
- {
- TMR8 = 0;
- PR8 = 781;
- T8CON = 0x8010;
- IFS3bits.T8IF = 0;
- IPC12bits.T8IP = 7;
- IEC3bits.T8IE = 1;
- }
- void __attribute__((interrupt,auto_psv)) _T8Interrupt (void)
- {
- IFS3bits.T8IF = 0;
- if(MotorXHomebuffer == 1){
- MOTORX_PWM = !MOTORX_PWM;
- PulseNum++;
- }
- if(MotorYHomebuffer == 1){
- MOTORY_PWM = !MOTORY_PWM;
- PulseNum++;
- }
- }
|