123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // TI File $Revision: /main/1 $
- // Checkin $Date: December 5, 2008 18:00:45 $
- //###########################################################################
- //
- // FILE: DSP2803x_CpuTimers.c
- //
- // TITLE: CPU 32-bit Timers Initialization & Support Functions.
- //
- // NOTES:
- //
- //###########################################################################
- // $TI Release: 2803x Header Files V1.01 $
- // $Release Date: April 30, 2009 $
- //###########################################################################
- #include "DSP2803x_Device.h" // Headerfile Include File
- #include "DSP2803x_Examples.h" // Examples Include File
- struct CPUTIMER_VARS CpuTimer0;
- struct CPUTIMER_VARS CpuTimer1;
- struct CPUTIMER_VARS CpuTimer2;
- //---------------------------------------------------------------------------
- // InitCpuTimers:
- //---------------------------------------------------------------------------
- // This function initializes all three CPU timers to a known state.
- //
- void InitCpuTimers(void)
- {
- // CPU Timer 0
- // Initialize address pointers to respective timer registers:
- CpuTimer0.RegsAddr = &CpuTimer0Regs;
- // Initialize timer period to maximum:
- CpuTimer0Regs.PRD.all = 0xFFFFFFFF;
- // Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
- CpuTimer0Regs.TPR.all = 0;
- CpuTimer0Regs.TPRH.all = 0;
- // Make sure timer is stopped:
- CpuTimer0Regs.TCR.bit.TSS = 1;
- // Reload all counter register with period value:
- CpuTimer0Regs.TCR.bit.TRB = 1;
- // Reset interrupt counters:
- CpuTimer0.InterruptCount = 0;
- // Initialize address pointers to respective timer registers:
- CpuTimer1.RegsAddr = &CpuTimer1Regs;
- CpuTimer2.RegsAddr = &CpuTimer2Regs;
- // Initialize timer period to maximum:
- CpuTimer1Regs.PRD.all = 0xFFFFFFFF;
- CpuTimer2Regs.PRD.all = 0xFFFFFFFF;
- // Initialize pre-scale counter to divide by 1 (SYSCLKOUT):
- CpuTimer1Regs.TPR.all = 0;
- CpuTimer1Regs.TPRH.all = 0;
- CpuTimer2Regs.TPR.all = 0;
- CpuTimer2Regs.TPRH.all = 0;
- // Make sure timers are stopped:
- CpuTimer1Regs.TCR.bit.TSS = 1;
- CpuTimer2Regs.TCR.bit.TSS = 1;
- // Reload all counter register with period value:
- CpuTimer1Regs.TCR.bit.TRB = 1;
- CpuTimer2Regs.TCR.bit.TRB = 1;
- // Reset interrupt counters:
- CpuTimer1.InterruptCount = 0;
- CpuTimer2.InterruptCount = 0;
- }
- //---------------------------------------------------------------------------
- // ConfigCpuTimer:
- //---------------------------------------------------------------------------
- // This function initializes the selected timer to the period specified
- // by the "Freq" and "Period" parameters. The "Freq" is entered as "MHz"
- // and the period in "uSeconds". The timer is held in the stopped state
- // after configuration.
- //
- void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
- {
- Uint32 temp;
- // Initialize timer period:
- Timer->CPUFreqInMHz = Freq;
- Timer->PeriodInUSec = Period;
- temp = (long) (Freq * Period);
- Timer->RegsAddr->PRD.all = temp;
- // Set pre-scale counter to divide by 1 (SYSCLKOUT):
- Timer->RegsAddr->TPR.all = 0;
- Timer->RegsAddr->TPRH.all = 0;
- // Initialize timer control register:
- Timer->RegsAddr->TCR.bit.TSS = 1; // 1 = Stop timer, 0 = Start/Restart Timer
- Timer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timer
- Timer->RegsAddr->TCR.bit.SOFT = 1;
- Timer->RegsAddr->TCR.bit.FREE = 1; // Timer Free Run Disabled
- Timer->RegsAddr->TCR.bit.TIE = 1; // 0 = Disable/ 1 = Enable Timer Interrupt
- // Reset interrupt counter:
- Timer->InterruptCount = 0;
- }
- //===========================================================================
- // End of file.
- //===========================================================================
|