?? tecfunctions.c
字號:
*/
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 *****************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -