/* ================================================================================== File name: F281XPWM.H Originator: Digital Control Systems Group Texas Instruments Description: Header file containing data type and object definitions and initializers. Also contains prototypes for the functions in F281XPWM.C. Target: TMS320F281x family ===================================================================================== History: ------------------------------------------------------------------------------------- 04-15-2005 Version 3.20: Using DSP281x v. 1.00 or higher ---------------------------------------------------------------------------------- */ #ifndef __F281X_PWM_H__ #define __F281X_PWM_H__ #include //#include "DSP281x_Device.h" /*---------------------------------------------------------------------------- Initialization constant for the F281X Timer TxCON for PWM Generation. Sets up the timer to run free upon emulation suspend, continuous up-down mode prescaler 1, timer enabled. ----------------------------------------------------------------------------*/ //FREE_RUN_FLAG #define PWM_INIT_STATE (FREE_RUN_FLAG + \ TIMER_CONT_UPDN + \ TIMER_CLK_PRESCALE_X_1 + \ TIMER_ENABLE_BY_OWN + \ TIMER_ENABLE) #define PWM_INIT_STATE_DOUBLE_UPADTE (FREE_RUN_FLAG + \ TIMER_COMPARE_LD_ON_ZERO_OR_PRD + \ TIMER_CONT_UPDN + \ TIMER_CLK_PRESCALE_X_1 + \ TIMER_ENABLE_BY_OWN + \ TIMER_ENABLE) /*---------------------------------------------------------------------------- Initialization constant for the F281X ACTRx register for PWM Generation. Sets up PWM polarities. ----------------------------------------------------------------------------*/ #define ACTR_INIT_STATE ( COMPARE1_FH + \ COMPARE2_FH + \ COMPARE3_FH + \ COMPARE4_FH + \ COMPARE5_FH + \ COMPARE6_FH ) #define ACTR_ON_STATE ( COMPARE1_AL + \ COMPARE2_AH + \ COMPARE3_AL + \ COMPARE4_AH + \ COMPARE5_AL + \ COMPARE6_AH ) /*---------------------------------------------------------------------------- Initialization constant for the F281X DBTCONx register for PWM Generation. Sets up the dead band for PWM and sets up dead band values. ----------------------------------------------------------------------------*/ #define DBTCON_INIT_STATE ( DBT_VAL_10 + \ EDBT3_EN + \ EDBT2_EN + \ EDBT1_EN + \ DBTPS_X32 ) /*----------------------------------------------------------------------------- Define the structure of the PWM Driver Object -----------------------------------------------------------------------------*/ typedef struct { Uint16 PeriodMax; // Parameter: PWM Half-Period in CPU clock cycles (Q0) int16 MfuncPeriod; // Input: Period scaler (Q15) int16 MfuncC1; // Input: PWM 1&2 Duty cycle ratio (Q15) int16 MfuncC2; // Input: PWM 3&4 Duty cycle ratio (Q15) int16 MfuncC3; // Input: PWM 5&6 Duty cycle ratio (Q15) void (*init)(); // Pointer to the init function void (*update)(); // Pointer to the update function } PWMGEN ; typedef struct { Uint16 PeriodMax; // Parameter: PWM Half-Period in CPU clock cycles (Q0) Uint16 PeriodMin; // Parameter: PWM Half-Period in CPU clock cycles (Q0) int16 MfuncPeriod; // Input: Period scaler (Q15) int16 MfuncC1; // Input: PWM 1&2 Duty cycle ratio (Q15) int16 MfuncC2; // Input: PWM 3&4 Duty cycle ratio (Q15) int16 MfuncC3; // Input: PWM 5&6 Duty cycle ratio (Q15) int16 MfuncC4; // Input: PWM 1&2 Duty cycle ratio (Q15) int16 MfuncC5; // Input: PWM 3&4 Duty cycle ratio (Q15) int16 MfuncC6; // Input: PWM 5&6 Duty cycle ratio (Q15) Uint16 ShiftPhaseA; // Parameter: PWM Half-Period in CPU clock cycles (Q0) Uint16 ShiftPhaseB; // Parameter: PWM Half-Period in CPU clock cycles (Q0) void (*init)(); // Pointer to the init function void (*update)(); // Pointer to the update function } PWMGEND ; /*----------------------------------------------------------------------------- Define a PWMGEN_handle -----------------------------------------------------------------------------*/ typedef PWMGEN *PWMGEN_handle; typedef PWMGEND *PWMGEND_handle; /*------------------------------------------------------------------------------ Default Initializers for the F281X PWMGEN Object ------------------------------------------------------------------------------*/ #define F281X_EV1_FC_PWM_GEN {1000, \ 0x7FFF, \ 0x4000, \ 0x4000, \ 0x4000, \ (void (*)(Uint32))F281X_EV1_PWM_Init, \ (void (*)(Uint32))F281X_EV1_PWM_Update \ } #define F281X_EV2_FC_PWM_GEN {1000, \ 0x7FFF, \ 0x4000, \ 0x4000, \ 0x4000, \ (void (*)(Uint32))F281X_EV2_PWM_Init, \ (void (*)(Uint32))F281X_EV2_PWM_Update \ } #define F281X_EVD_FC_PWM_GEN {1000, \ 0, \ 0x7FFF, \ 0x4000, \ 0x4000, \ 0x4000, \ 0x4000, \ 0x4000, \ 0x4000, \ 0x000, \ 0x000, \ (void (*)(Uint32))F281X_EVD_PWM_Init, \ (void (*)(Uint32))F281X_EVD_PWM_Update \ } #define PWMGEN1_DEFAULTS F281X_EV1_FC_PWM_GEN #define PWMGEN2_DEFAULTS F281X_EV2_FC_PWM_GEN #define PWMGEND_DEFAULTS F281X_EVD_FC_PWM_GEN /*------------------------------------------------------------------------------ Prototypes for the functions in F281XPWM.C ------------------------------------------------------------------------------*/ void F281X_EV1_PWM_Init(PWMGEN_handle); void F281X_EV1_PWM_Update(PWMGEN_handle); void F281X_EV2_PWM_Init(PWMGEN_handle); void F281X_EV2_PWM_Update(PWMGEN_handle); void F281X_EVD_PWM_Init(PWMGEND_handle); void F281X_EVD_PWM_Update(PWMGEND_handle); int16 set_predel_dshim_max(int16 dshim,int16 dmin,int16 dpwm); int16 set_predel_dshim(int16 dshim,int16 dmin,int16 dpwm); #endif // __F281X_PWM_H__