#define GLOBALS_API_TPM
#include "../App_Headers/includes.h"


/*-------------------------------------------------------------------------
* Function Name  : Api_Timer0_Init
* Description    : ��ʱ��0��ʼ��
* Input          : 
* Output         : None
* Return         : None
* onther         : 
--------------------------------------------------------------------------*/
void Api_Timer0_Init(INT8U TPM_DIV)
{
    
    TIM0_TSCR1_TSWAI = Enable;   //timer 0 ��MCU�ȴ�ģʽ�²�������
    TIM0_TSCR1_TSWAI = WaitRun;
    TIM0_TSCR1_TSFRZ = Enable;   //timer 0 �������ڶ���ģʽ�½�ֹ����
    TIM0_TSCR1_TFFCA = Disable;  //���������־λ
    TIM0_TSCR1_PRNT  = Disable;  // 
    TIM0_TSCR2_PR    = TPM_DIV;  //Bus Clock / 4
    TIM0_TSCR2_TCRE  = Disable;
    TIM0_TTOV        = Disable;

    TIM0_TCTL1 = Disable;        //��ֹ����ȽϹ���
    TIM0_TCTL2 = Disable;
    TIM0_TCTL3 = Disable;        //��ֹ����ȽϹ���
    TIM0_TCTL4 = Disable; 
        
    TIM0_TFLG2_TOF   = Enable;
    TIM0_TSCR1_TEN   = Enable;   //ʹ��timer 0 ��������
    TIM0_TSCR2_TOI   = Enable;   //����ж�ʹ��
    
}
/*-------------------------------------------------------------------------
* Function Name  : Api_Timer1_Init
* Description    : ��ʱ��1��ʼ��
* Input          : 
* Output         : None
* Return         : None
* onther         : 
--------------------------------------------------------------------------*/
void Api_Timer1_Init(INT8U TPM_DIV)
{

    TIM1_TSCR1_TSWAI = Enable;   //timer 0 ��MCU�ȴ�ģʽ�²�������
    TIM1_TSCR1_TSFRZ = Enable;   //timer 0 �������ڶ���ģʽ�½�ֹ����
    TIM1_TSCR1_TFFCA = Disable;  //���������־λ
    TIM1_TSCR1_PRNT  = Disable;  // 
    TIM1_TSCR2_PR    = TPM_DIV; //Bus Clock / 4
    TIM1_TSCR2_TCRE  = Disable;
    TIM1_TTOV        = Disable;

    TIM1_TCTL1 = Disable;        //��ֹ����ȽϹ���
    TIM1_TCTL2 = Disable;
    TIM1_TCTL3 = Disable;        //��ֹ����ȽϹ���
    TIM1_TCTL4 = Disable; 
    
    TIM1_TFLG2_TOF   = Enable;
    TIM1_TSCR1_TEN   = Enable;   //ʹ��timer 0 ��������
    TIM1_TSCR2_TOI   = Enable;   //����ж�ʹ��
    

}

//-----------------------------------------------------------------------------
// ��������   :    Api_Motor_Init
// ��������   :    ��ʼ���������
// ����       :    
//                 *Motor    ->   ����ṹָ��
// ���       :    ��
// ����ֵ     :    ����״̬
// ����       :    ��
//-----------------------------------------------------------------------------
void  Api_Motor_Init(void)
{
    INT16U         *w;
    INT8U          Nub;

    MCCTL0_MCPRE        = 0;            //ʱ��Ϊ���ߵ�8��Ƶ
    MCCTL0_MCSWAI       = Enable;          //ֹͣģʽֹͣ���� 
    MCCTL0_FAST         = Disable;         //11bit�ֱ���
    MCCTL0_DITH         = Disable;         //PER-> P10-P0   0:����P0
    MCCTL0_MCTOIF       = ClearFlag;       //�����жϱ�־
    MCCTL1_RECIRC       = True;            //������
    MCCTL1_MCTOIE       = Enable;          //ʹ���ж�
    MCPER               = 1454;       //PWM����   �ж�Ƶ�� 22000
    //
    MCCC0_MCOM          = clear;            //˫ȫH��ģʽ
    MCCC0_MCAM          = clear;         //�����
    MCCC0_CD            = clear;         //��ֹ��ʱ
    MCCC1_MCOM          = clear;            //ȫH��ģʽ
    MCCC1_MCAM          = clear;         //�����
    MCCC1_CD            = clear;         //��ֹ��ʱ
    //
    MCCC2_MCOM          = clear;            //˫ȫH��ģʽ
    MCCC2_MCAM          = clear;         //�����
    MCCC2_CD            = clear;         //��ֹ��ʱ
    MCCC3_MCOM          = clear;            //ȫH��ģʽ
    MCCC3_MCAM          = clear;         //�����
    MCCC3_CD            = clear;         //��ֹ��ʱ

    
    MCCC4_MCOM          = clear;         
    MCCC4_MCAM          = clear;         
    MCCC4_CD            = clear;         
    MCCC5_MCOM          = clear;         
    MCCC5_MCAM          = clear;       
    MCCC5_CD            = clear;       
    
    
    MCCC6_MCOM          = clear;            //˫ȫH��ģʽ
    MCCC6_MCAM          = clear;         //�����
    MCCC6_CD            = clear;         //��ֹ��ʱ
    MCCC7_MCOM          = clear;            //ȫH��ģʽ
    MCCC7_MCAM          = clear;         //�����
    MCCC7_CD            = clear;         //��ֹ��ʱ
    
    w = &MCDC0;                            //��ʼ��MCOC 0-7
         
    for(Nub = 0;Nub < 8 ;Nub++)
    {
         *(w + Nub) = 0;         
    }
}
//-----------------------------------------------------------------------------
// ��������   :    Api_Motor_isr
// ��������   :    PWM����ж�
// ����       :    ��
// ���       :    ��
// ����ֵ     :    ��
// ����       :    ��
//-----------------------------------------------------------------------------
interrupt void Api_Motor_isr(void)
{


    MCCTL0_MCTOIF       = ClearFlag;       //�����жϱ�־
}
/*-------------------------------------------------------------------------
* Function Name  : Api_Timer0_isr
* Description    : ��ʱ���ж�
* Input          : None
* Output         : None
* Return         : None
* onther         : 
--------------------------------------------------------------------------*/
interrupt void Api_Timer0_isr(void)
{
    if((CANRFLG_RSTAT == 0x03)||(CANRFLG_TSTAT == 0x03))
    {
        if(BusOffTime == null) 
        {                       
            BusOffTime = TT_200ms;
            CANMISC_BOHOLD = ClearFlag;                                                 
        }  
        if(BusOffTime > null)
        {
             BusOffTime--;                 
        }         
    }    
    TIM0_TFLG2_TOF = ClearFlag;  //����жϱ�־λ
}
/*-------------------------------------------------------------------------
* Function Name  : API_Timer1_isr
* Description    : ��ʱ���ж�
* Input          : None
* Output         : None
* Return         : None
* onther         : 
--------------------------------------------------------------------------*/
interrupt void API_Timer1_isr(void)
{
  
    TIM1_TFLG2_TOF = ClearFlag;  //����жϱ�־λ
}