⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 massint_zhdsh.c

📁 uCOS在PIC芯片中的移植:以PIC24HJ64GP210为例进行uCOS在Microchip芯片中的移植
💻 C
字号:
/*
*********************************************************************************************************
*                                              Microchip PIC24FJ
*                                            Board Support Package
*
*                                                   Micrium
*                                    (c) Copyright 2005, Micrium, Weston, FL
*                                              All Rights Reserved
*
*
* File : MassInt.C
* By   : //tbh080522
*********************************************************************************************************
*/

#include <includes.h>


#define SET_PWM(ocrs,pwm_set) \
	if(ocrs+CNT_OCRS_STEP<pwm_set) \
		ocrs=ocrs+CNT_OCRS_STEP;\	
	else \
		ocrs=pwm_set;

 void Momi_Wide (void);


INT16U  TimeCnt=0x0000;

//每AD通道的計算變量
static INT32U  An0ValSum=0x00000000,An1ValSum=0x00000000,An2ValSum=0x00000000,An3ValSum=0x00000000;
//計算AD值時的Dma中斷計數
static INT8U   DmaIntNum=0x00;
//每AD通道的計算值
INT16U  An0Val=0x0000,An1Val=0x0000,An2Val=0x0000,An3Val=0x0000;

INT8U IC1Cnt=0xFF,IC2Cnt=0xFF,IC3Cnt=0xFF,IC4Cnt=0xFF;

INT8U PWMCnt=0x0000;
INT16U TatakiPwmSet=0x0000,UpPwmSet=0x0000,DownPwmSet=0x0000,MomiCwPwmSet=0x0000,MomiCcwPwmSet=0x0000,FrontPwmSet=0x0000,BackPwmSet=0x0000,TestPwmSet=0x0000;
//INT16U OC1RSSet,OC2RSSet,OC3RSSet,OC5RSSet,OC6RSSet,OC7RSSet,OC8RSSet,OC4RSSet;
INT16U   ms_cnt = 0x0000;
void Timer1_ISR_Handler (void)
{      ms_cnt ++;
	if(++TimeCnt>=1000)
	{
		 TimeCnt=0;
	    //_RF13^=1;//test080521
	    _RG12^=1;//test080521

	}
	
}

void Timer2_ISR_Handler (void)
{/*
	if(IC1Cnt<0xFF)
		IC1Cnt++;
	if(IC2Cnt<0xFF)
		IC2Cnt++;
	if(IC3Cnt<0xFF)
		IC3Cnt++;
	if(IC4Cnt<0xFF)
		IC4Cnt++;
*/
}

//PWM周期中断处理,实现各PWM设置的缓变过程
void Timer3_ISR_Handler (void)
{
	if(++PWMCnt>=CNT_PWM_NUM)
	{
		PWMCnt=0;
        SET_PWM(OC1RS,TatakiPwmSet);
        SET_PWM(OC2RS,FrontPwmSet);
        SET_PWM(OC3RS,BackPwmSet);
        SET_PWM(OC5RS,MomiCwPwmSet);
        SET_PWM(OC6RS,MomiCcwPwmSet);
        SET_PWM(OC7RS,UpPwmSet);
        SET_PWM(OC8RS,DownPwmSet);
        SET_PWM(OC4RS,TestPwmSet);
	    _RF13^=1;//test080521
	}
}
INT16U   ms10_cnt = 0x0000;
void Timer7_ISR_Handler (void)
{
ms10_cnt  ++;

    UdStatusContrel();   //升降马达状态控制函数
    FbStatusContrel();   //前后马达状态控制函数
}

void Mass_RxISRHandler (void)
{
    RecvServer(U1RXREG);	
}

void Mass_TxISRHandler (void)
{
    SendServer();
}

INT16U  An0Buf,An1Buf,An2Buf,An3Buf;
void Mass_ADC1ISRHandler (void)
{
	_RG14^=1;//test080521
}

#define A_DMA_NUM (1<<CNT_AN_DMA_WORDS_ORDER)

#ifdef USER_DEBUG

INT16S  An0Cur=0x0000,An1Cur=0x0000,An2Cur=0x0000,An3Cur=0x0000;
extern INT8U Rest;
#endif

void Mass_DMA0ISRHandler (void)
{
    INT8U i;
    INT16U *dma_addr=AdDmaSpace,ad_num;
    _RB10^=1;
    //An0Buf=*(INT16U*)((INT8U*)&_DMA_BASE+DMA0STA);
    for(i=0;i<A_DMA_NUM;i++)
    {
        An0ValSum+=*(dma_addr++);
    }
    for(i=0;i<A_DMA_NUM;i++)
    {
        An1ValSum+=*(dma_addr++);
    }
    for(i=0;i<A_DMA_NUM;i++)
    {
        An2ValSum+=*(dma_addr++);
    }
    for(i=0;i<A_DMA_NUM;i++)
    {
        An3ValSum+=*(dma_addr++);
    }
    DmaIntNum++;
    ad_num=DmaIntNum*A_DMA_NUM;
    if(ad_num>=CNT_AN_COL_NUM)
    {
    	An0Val=An0ValSum/ad_num;
    	An1Val=An1ValSum/ad_num;
    	An2Val=An2ValSum/ad_num;
    	An3Val=An3ValSum/ad_num;
    	An0ValSum=0x00000000;
    	An1ValSum=0x00000000;
    	An2ValSum=0x00000000;
    	An3ValSum=0x00000000;
    	DmaIntNum=0x00;
#ifdef USER_DEBUG
        if(++Rest>=100)
        {           
        	Rest=0x00;
        }
#endif
        
    }
}

void Mass_TatakiPrdISRHandler (void)//IC1,Pin68,M1Sensor
{
}



void Mass_UpDownPrdISRHandler (void)//IC3,Pin70,MS5Sensor
{ 
    if(IC4Cnt < 0xff)
    {
        IC4Cnt ++;
    }
}

void Mass_FrntBckPrdISRHandler (void)//IC4,Pin71,MS14Sensor
{
}

void Mass_MomiPrdISRHandler (void)//IC6,Pin80,MS6Sensor
{
}

void Mass_IC2ISRHandler(void)
{
}

void Mass_IC3ISRHandler(void)
{ 
    if(IC3Cnt < 0xff)
    {
        IC3Cnt ++;
    }
}

void Mass_IC7ISRHandler(void)
{
}

void Mass_IC8ISRHandler(void)
{
}
//zds0607
 INT8U Limit_U,Limit_D,Limit_F,Limit_B; 
void CN_ISR_Handler  (void)
{
    Momi_Wide ();     //揉捏马达宽度检测
   // UpDown_Limit (); //升降上下限位保护
  //  _RG15^=1;
    if(MS10Sensor == 0)//shang
    {
       Limit_U = 1;
       UpPwmSet = 0;
    }
    else
    {
       Limit_U = 0;
    }
    if(MS13Sensor  == 0)//xia
    {
        Limit_D = 1;
        DownPwmSet = 0;
    }
    else
    {
        Limit_D = 0;
    }
    if(MS2Sensor == 0) //前
    {
         Limit_F = 1;
         FrontPwmSet = 0;
    }
    else
    {
        Limit_F = 0;
    }
    if(MS3Sensor == 0)//后
    {
        Limit_B = 1;
        BackPwmSet = 0;
    }    
    else
    {
        Limit_B = 0;
    }
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -