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

📄 tecfunctions.c

📁 基于dsp2812的温控 带AD校准和PWM输出
💻 C
📖 第 1 页 / 共 2 页
字号:
*/

	EvbRegs.T3CON.all = 0xD782;			//enable timer
/*     
 bit 15-14     11:     11=do not stop on emulator suspend
 bit 13        0:      reserved
 bit 12-11     10:     10 = continuous-up count mode
 bit 10-8      111:    111 = x/128 prescaler
 bit 7         1:      T2SWT1, 1 = use GPTimer1 TENABLE bit
 bit 6         0:      TENABLE, 1 = enable timer
 bit 5-4       00:     00 = HSPCLK is clock source
 bit 3-2       00:     00 = reload compare reg on underflow
 bit 1         1:      1 = enable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register
*/

}
 //end InitGptimer3()

/*********************************************************************
* Function: InitPwm()                                                *
* Description: Initializes PWM1/2 pin using GP Timer 1.              *
* DSP: TMS320F2812                                                   *
* Author: David M. Alter                                             *
* Include files: none                                                *
* Function Prototype: void InitPwm(Uint16)                           *
* Useage: InitPwm(period);                                           *
* Input Parameters: Uint16 period = timer counts per PWM period.     *
* Return Value: none                                                 *
* Notes: none                                                        *
*********************************************************************/
void InitPwm(Uint16 period)
{

	EvaRegs.GPTCONA.all = (EvaRegs.GPTCONA.all | 0x0620) & 0x0FF3;
/*  x = don't change    
 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        x:      T1CTRIPE, 0=disable timer1 compare trip
 bit 10-9      11:     T2TOADC, 11 = timer2 compare flag starts ADC 比较中断启动模式
 bit 8-7       xx:     T1TOADC
 bit 6         x:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5         1:      T2COMPOE, 0 = timer2 compare HI-z'd 
 bit 4         x:      T1COMPOE, 0 = timer1 compare HI-z'd
 bit 3-2       00:     T2PIN, 00 = forced low
 bit 1-0       xx:     T1PIN
*/
	EvaRegs.T1CON.all = 0x0000;			// disable timer
	EvaRegs.T1CNT = 0x0000;				// clear timer counter
	EvaRegs.T1PR = period;				// set timer period

	EvaRegs.T2CON.all = 0x0000;			//disable timer
    EvaRegs.T2CNT = 0x0000;				//clear timer counter
    EvaRegs.T2PR = period;				//set timer period
    EvaRegs.T2CMPR = 0x0006;			 //set compare for ADC trigger 

	EvaRegs.T1CON.all = 0xD042;				// enable timer
/*     
 bit 15-14     11:     11=do not stop on emulator suspend
 bit 13        0:      reserved
 bit 12-11     10:     TMODE, 10 = continuous-up count mode
 bit 10-8      000:    TPS, 000 = x/1 prescaler
 bit 7         0:      T2SWT1, 0 = use own TENABLE bit
 bit 6         1:      TENABLE, 1 = enable timer
 bit 5-4       00:     00 = HSPCLK is clock source
 bit 3-2       00:     TCLD, 00 = reload compare reg on underflow
 bit 1         1:      TECMPR, 0 = disable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register
*/
	EvaRegs.T2CON.all = 0xD782;			//enable timer
/*     
 bit 15-14     11:     11=do not stop on emulator suspend
 bit 13        0:      reserved
 bit 12-11     10:     10 = continuous-up count mode
 bit 10-8      111:    111 = x/128 prescaler
 bit 7         1:      T2SWT1, 1 = use GPTimer1 TENABLE bit
 bit 6         0:      TENABLE, 1 = enable timer
 bit 5-4       00:     00 = HSPCLK is clock source
 bit 3-2       00:     00 = reload compare reg on underflow
 bit 1         1:      1 = enable timer compare
 bit 0         0:      SELT1PR, 0 = use own period register
*/


	EvaRegs.DBTCONA.all = 0x0000;		// deadband units off
	EvaRegs.CMPR1 = 0x0000;				// initial duty cycle is 0%
	EvaRegs.CMPR2 = 0x0000;
	EvaRegs.CMPR3 = 0x0000;
	EvaRegs.ACTRA.all = 0x0000;			// all PWM pins forced low initially
/*
 bit 15        0:      space vector dir is CCW (don't care)
 bit 14-12     000:    basic space vector is 000 (dont' care)
 bit 11-10     00:     PWM6 pin forced low
 bit 9-8       00:     PWM5 pin forced low
 bit 7-6       00:     PWM4 pin forced low
 bit 5-4       00:     PWM3 pin forced low
 bit 3-2       00:     PWM2 pin forced low
 bit 1-0       00:     PWM1 pin forced low
*/

	EvaRegs.COMCONA.all = 0x82E0;			// configure COMCON register
/*
 bit 15        1:      CENABLE, 1 = enable compare operation
 bit 14-13     00:     CLD, 00 = reload CMPRx regs on timer 1 underflow
 bit 12        0:      SVENABLE, 0 = space vector disabled
 bit 11-10     00:     ACTRLD, 00 = reload ACTR on timer 1 underflow
 bit 9         1:      FCMPOE, 1 = enable PWM pins
 bit 8         0:      PDPINT1 status (read-only)
 bit 7         0:      FCMP3OE, 0 = PWM5/6 are Hi-Z
 bit 6         0:      FCMP2OE, 0 = PWM3/4 are Hi-Z
 bit 5         1:      FCMP1OE, 0 = PWM1/2 are Hi-Z
 bit 4-3       00:     reserved
 bit 2         0:      C3TRIPE, 0 = trip disabled
 bit 1         0:      C2TRIPE, 0 = trip disabled
 bit 0         0:      C1TRIPE, 0 = trip disabled
*/




//--------------------------------evb-----------------------------//
//------------

	EvbRegs.GPTCONB.all = (EvbRegs.GPTCONB.all | 0x0051) & 0xF67D;
/*  x = don't change    
 bit 15        x:      reserved
 bit 14        x:      T4STAT, read-only
 bit 13        x:      T3STAT, read-only
 bit 12        x:      T4CTRIPE
 bit 11        0:      T3CTRIPE
 bit 10-9      xx:     T4TOADC
 bit 8-7       00:     T3TOADC, 00 = no timer1 event starts ADC
 bit 6         1:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5         x:      T4CMPOE
 bit 4         1:      T3CMPOE, 0 = Hi-Z T1CMPR output 1 使能比较输出
 bit 3-2       xx:     T4PIN
 bit 1-0       01:     T3PIN, 00 = forced low 01 低有效
*/


	EvbRegs.T3CON.all = 0x0000;			// disable timer
	EvbRegs.T3CNT = 0x0000;				// clear timer counter
	EvbRegs.T3PR = period;				// set timer period
	EvbRegs.T3CMPR = 0x00f0; 

	EvbRegs.DBTCONB.all = 0x0000;		// deadband units off
	EvbRegs.CMPR4 = 0x0200;				// initial duty cycle is 0%
	EvbRegs.CMPR5 = 0x0300;	
	EvbRegs.CMPR6 = 0x0100;	

	EvbRegs.ACTRB.all = 0x0000;			// all PWM pins forced low initially
/*
 bit 15        0:      space vector dir is CCW (don't care)
 bit 14-12     000:    basic space vector is 000 (dont' care)
 bit 11-10     00:     PWM6 pin forced low
 bit 9-8       00:     PWM5 pin forced low
 bit 7-6       00:     PWM4 pin forced low
 bit 5-4       00:     PWM3 pin forced low
 bit 3-2       00:     PWM2 pin forced low
 bit 1-0       00:     PWM1 pin forced low
*/

	EvbRegs.COMCONB.all = 0x82E0;			// configure COMCON register
/*
 bit 15        1:      CENABLE, 1 = enable compare operation
 bit 14-13     00:     CLD, 00 = reload CMPRx regs on timer 1 underflow
 bit 12        0:      SVENABLE, 0 = space vector disabled
 bit 11-10     00:     ACTRLD, 00 = reload ACTR on timer 1 underflow
 bit 9         1:      FCMPOE, 1 = enable PWM pins
 bit 8         0:      PDPINT1 status (read-only)
 bit 7         1:      FCMP3OE, 0 = PWM5/6 are Hi-Z
 bit 6         1:      FCMP2OE, 0 = PWM3/4 are Hi-Z
 bit 5         1:      FCMP1OE, 0 = PWM1/2 are Hi-Z
 bit 4-3       00:     reserved
 bit 2         0:      C3TRIPE, 0 = trip disabled
 bit 1         0:      C2TRIPE, 0 = trip disabled
 bit 0         0:      C1TRIPE, 0 = trip disabled
*/

	EvbRegs.T3CON.all = 0xD042;				// enable timer
/*     
 bit 15-14     11:     11=do not stop on emulator suspend
 bit 13        0:      reserved
 bit 12-11     10:     TMODE, 10 = continuous-up count mode
 bit 10-8      000:    TPS, 000 = x/1 prescaler
 bit 7         0:      T2SWT1, 0 = use own TENABLE bit
 bit 6         1:      TENABLE, 1 = enable timer
 bit 5-4       00:     00 = HSPCLK is clock source
 bit 3-2       00:     TCLD, 00 = reload compare reg on underflow
 bit 1         1:      TECMPR, 0 = disable timer compare ;1 enable compare
 bit 0         0:      SELT3PR, 0 = use own period register
*/
//	EvbRegs.DBTCONB.all = 0x0000; // Disable deadband
} //end InitPwm()


/*********************************************************************
* Function: PidCtrl1()                                               *
* Description: Implements floating point PID control with            *
*  anti-windup on I-mode and saturation of the total control signal. *
* DSP: TMS320F2812                                                   *
* Author: David M. Alter                                             *
* Include files: none                                                *
* Function Prototype: void PidCtrl1(PID*)                            *
* Useage: PidCtrl1(x);                                               *
* Input Parameters: x = structure of type PID                        *
* Return Value: none                                                 *
* Notes: none                                                        *
*********************************************************************/


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

⌨️ 快捷键说明

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