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

📄 ev.c

📁 瑞泰实验箱例程-2812,
💻 C
字号:
/**********************************************************************
* File: Ev.c
* Devices: TMS320F2812, TMS320F2811, TMS320F2810
* Author: David M. Alter, Texas Instruments Inc.
* History:
*   09/08/03 - original (based on DSP281x header files v1.00, D. Alter)
*   01/27/04 - corrected pin names in comments for ACTRA register (D. Alter)
*   03/23/04 - corrected comment for GPTCONA.T1TOADC configuration (D. Alter)
*   09/01/04 - corrected TPSx comment for EvaRegs.T2CON configuration (D. Alter)

**********************************************************************/

#include "DSP281x_Device.h"

// EXAMPLE_BIOS or EXAMPLE_NONBIOS are defined in the CCS project build options
#ifdef EXAMPLE_BIOS
    #include "example_BIOS.h"
#endif

#ifdef EXAMPLE_NONBIOS
    #include "example_nonBIOS.h"
#endif


/*** Global variables used by InitEv() ***/
#define ADC_sample_period   2999			// 2999 = 50KHz sampling w/ 150MHz CPUCLK
#define PWM_half_period    37500			// period/2 for 2kHz symmetric PWM
#define PWM_duty_cycle     28125			// 25% duty cycle

/**********************************************************************
* Function: InitEv()
*
* Description: Initializes the Event Managers on the F281x.
**********************************************************************/
void InitEv(void)
{

/**************************************/
/*** Configure the EXTCON registers ***/
/**************************************/
	EvaRegs.EXTCONA.all = 0x0001;
/*
 bit 15-4      0's:    reserved
 bit 3         0:      EVSOCE, 0 = disable EV start of ADC conversion output
 bit 2         0:      QEPIE, 0 = disable CAP3_QEPI as index input
 bit 1         0:      QEPIQUAL, 0 = CAP3_QEPI qual disabled
 bit 0         1:      INDCOE, 1 = independent compare enable
*/

	EvbRegs.EXTCONB.all = 0x0001;
/*
 bit 15-4      0's:    reserved
 bit 3         0:      EVSOCE, 0 = disable EV start of ADC conversion output
 bit 2         0:      QEPIE, 0 = disable CAP6_QEPI as index input
 bit 1         0:      QEPIQUAL, 0 = CAP6_QEPI qual disabled
 bit 0         1:      INDCOE, 1 = independent compare enable
*/


/******************************************************/
/*** Disable and clear all event manager interrupts ***/
/******************************************************/
	EvaRegs.EVAIMRA.all = 0x0000;		// Disable all EVA group A interrupts
	EvaRegs.EVAIMRB.all = 0x0000;		// Disable all EVA group B interrupts
    EvaRegs.EVAIMRC.all = 0x0000;		// Disable all EVA group C interrupts
    EvaRegs.EVAIFRA.all = 0xFFFF;       // Clear all EVA group A interrupts
    EvaRegs.EVAIFRB.all = 0xFFFF;		// Clear all EVA group B interrupts
    EvaRegs.EVAIFRC.all = 0xFFFF;		// Clear all EVA group C interrupts

	EvbRegs.EVBIMRA.all = 0x0000;		// Disable all EVB group A interrupts
	EvbRegs.EVBIMRB.all = 0x0000;		// Disable all EVB group B interrupts
    EvbRegs.EVBIMRC.all = 0x0000;		// Disable all EVB group C interrupts
    EvbRegs.EVBIFRA.all = 0xFFFF;       // Clear all EVB group A interrupts
    EvbRegs.EVBIFRB.all = 0xFFFF;		// Clear all EVB group B interrupts
    EvbRegs.EVBIFRC.all = 0xFFFF;		// Clear all EVB group C interrupts


/**************************************/
/*** Configure the GPTCONA register ***/
/**************************************/
	EvaRegs.GPTCONA.all = 0x0400;
/*
 bit 15        0:      reserved
 bit 14        0:      T2STAT, read-only
 bit 13        0:      T1STAT, read-only
 bit 12        0:      T2CTRIPE, 0=disable timer2 compare trip
 bit 11        0:      T1CTRIPE, 0=disable timer1 compare trip
 bit 10-9      10:     T2TOADC, 10 = timer2 period flag starts ADC
 bit 8-7       00:     T1TOADC, 00 = timer1 does not start ADC
 bit 6         0:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5         0:      T2COMPOE, 0 = timer2 compare HI-z'd
 bit 4         0:      T1COMPOE, 0 = timer1 compare HI-z'd
 bit 3-2       00:     T2PIN, 00 = forced low
 bit 1-0       00:     T1PIN, 00 = forced low
*/


/************************************************************/
/*** Configure Timer 2 to trigger the ADC at a 50KHz rate ***/
/************************************************************/
	EvaRegs.T2CON.all = 0x0000;			// Disable timer
	EvaRegs.T2CNT = 0x0000;				// Clear timer counter
    EvaRegs.T2PR = ADC_sample_period;	// Set timer period

	EvaRegs.T2CON.all = 0xD040;			//enable timer
/*
 bit 15-14     11:     FREE/SOFT, 11 = ignor emulation suspend
 bit 13        0:      reserved
 bit 12-11     10:     TMODEx, 10 = continuous-up count mode
 bit 10-8      000:    TPSx, 000 = x/1 prescaler
 bit 7         0:      T2SWT1, 0 = use own TENABLE bit
 bit 6         1:      TENABLE, 1 = enable timer
 bit 5-4       00:     TCLKS, 00 = HSPCLK is clock source
 bit 3-2       00:     TCLD, 00 = reload compare reg on underflow
 bit 1         0:      TECMPR, 0 = enable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register
*/


/************************************************************/
/*** Configure Timer 1 for 2KHz symmetric PWM on PWM1 pin ***/
/************************************************************/
	EvaRegs.T1CON.all = 0x0000;			// Disable timer
	EvaRegs.T1CNT = 0x0000;				// Clear timer counter
    EvaRegs.T1PR = PWM_half_period;		// Set timer period
	EvaRegs.DBTCONA.all = 0x0000;		// Deadband units off
	EvaRegs.CMPR1 = PWM_duty_cycle;		// Set PWM1 duty cycle

	EvaRegs.ACTRA.all = 0x0002;			// PWM1 set for active high
/*
 bit 15        0:      SVDIR, space vector dir is CCW (don't care)
 bit 14-12     000:    D2-D0, basic space vector is 000 (dont' care)
 bit 11-10     00:     CMP6ACTx, PWM6/GPIOA5 pin forced low
 bit 9-8       00:     CMP5ACTx, PWM5/GPIOA4 pin forced low
 bit 7-6       00:     CMP4ACTx, PWM4/GPIOA3 pin forced low
 bit 5-4       00:     CMP3ACTx, PWM3/GPIOA2 pin forced low
 bit 3-2       00:     CMP2ACTx, PWM2/GPIOA1 pin forced low
 bit 1-0       10:     CMP1ACTx, PWM1/GPIOA0 pin active high
*/

	EvaRegs.COMCONA.all = 0x8221;		// Init COMCONA
/*
 bit 15        1:      CENABLE, 1 = enable full compare operation
 bit 14-13     00:     CLDx, 00 = reload CMPRx regs on timer 1 underflow
 bit 12        0:      SVENABLE, 0 = space vector disabled
 bit 11-10     00:     ACTRLDx, 00 = reload ACTR on timer 1 underflow
 bit 9         1:      FCMPOE, 1 = enable PWM pins
 bit 8         0:      PDPINT, PDPINT status (read-only)
 bit 7         0:      FCMP3OE, compare 3 enable (1=enable)
 bit 6         0:      FCMP2OE, compare 2 enable (1=enable)
 bit 5         1:      FCMP1OE, compare 1 enable (1=enable)
 bit 4-3       00:     reserved
 bit 2         0:      C3TRIPE, compare 3 trip enable (1=enable)
 bit 1         0:      C2TRIPE, compare 2 trip enable (1=enable)
 bit 0         1:      C1TRIPE, compare 1 trip enable (1=enable)
*/

	EvaRegs.T1CON.all = 0xC840;			// Init T1CON, enable timer
/*
 bit 15-14     11:     FREE/SOFT, 11 = ignor emulation suspend
 bit 13        0:      reserved
 bit 12-11     01:     TMODEx, 01 = continous-up/down count mode
 bit 10-8      000:    TPSx, 000 = x/1 prescaler
 bit 7         0:      T2SWT1, 0 = use own TENABLE bit
 bit 6         1:      TENABLE, 1 = enable timer
 bit 5-4       00:     TCLKS, 00 = CPUCLK is clock source
 bit 3-2       00:     TCLD, 00 = reload compare reg on underflow
 bit 1         0:      TECMPR, 0 = disable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register
*/


/****************************/
/*** Setup Capture unit 1 ***/
/****************************/
	EvaRegs.CAPCONA.all = 0x0000;		// reset the capture units
/*
 bit 15        0:      CAPRES, 0 = reset the capture units and registers
*/

	EvaRegs.CAPCONA.all = 0xA2C0;		// Init CAPCONA register
/*
 bit 15        1:      CAPRES, 1 = no action
 bit 14-13     01:     CAP12EN, 01 = enable CAP1 and CAP2, QEP disabled
 bit 12        0:      CAP3EN, 0 = disable CAP3
 bit 11        0:      reserved
 bit 10        0:      CAP3TSEL, CAP3 uses:          0=timer2, 1=timer1
 bit 9         1:      CAP12TSEL, CAP1 and CAP2 use: 0=timer2, 1=timer1
 bit 8         0:      CAP3TOADC, 0 = CAP3 does not start ADC
 bit 7-6       11:     CAP1EDGE, 11 = CAP1 detects both rising and falling edges
 bit 5-4       00:     CAP2EDGE, 00 = CAP2 no detection
 bit 3-2       00:     CAP3EDGE, 00 = CAP3 no detection
 bit 1-0       00:     reserved
*/

	EvaRegs.EVAIMRC.bit.CAP1INT = 1;	// Enable CAPINT1
	PieCtrlRegs.PIEIER3.bit.INTx5 = 1;	// Enable CAPINT1 in PIE group 3
	IER |= 0x0004;						// Enable INT3 in IER to enable PIE group 3

} // end InitEv()


/*** end of file *****************************************************/

⌨️ 快捷键说明

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