FreeCalypso > hg > freecalypso-sw
diff gsm-fw/bsp/timer.c @ 143:afceeeb2cba1
Our nuc-fw is destined to become gsm-fw, so I went ahead and did the big hg mv
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Tue, 12 Nov 2013 05:35:48 +0000 |
parents | nuc-fw/bsp/timer.c@17b0511b243c |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/bsp/timer.c Tue Nov 12 05:35:48 2013 +0000 @@ -0,0 +1,267 @@ +/******************************************************************************* + TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION + + Property of Texas Instruments -- For Unrestricted Internal Use Only + Unauthorized reproduction and/or distribution is strictly prohibited. This + product is protected under copyright law and trade secret law as an + unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All + rights reserved. + + + Filename : timer.c + + Description : timer.c + + Project : drivers + + Author : pmonteil@tif.ti.com Patrice Monteil. + + Version number : 1.3 + + Date and time : 07/23/98 16:25:32 + Previous delta : 07/23/98 16:25:32 + + SCCS file : /db/gsm_asp/db_ht96/dsp_0/gsw/rel_0/mcu_l1/release1.5/mod/emu/EMU_MCMP/eva3_drivers/source/SCCS/s.timer.c + + Sccs Id (SID) : '@(#) timer.c 1.3 07/23/98 16:25:32 ' + + +*****************************************************************************/ + +#include "../include/sys_types.h" + +#include "mem.h" +#include "iq.h" +#include "timer.h" + + +/*-------------------------------------------------------------- + * TIMER_Read() + *-------------------------------------------------------------- + * Parameters : num of the register to be read + * Return :value of the timer register read + * Functionality : read one of the TIMER register + *--------------------------------------------------------------*/ +SYS_UWORD16 TIMER_Read (unsigned short regNum) +{ + SYS_UWORD16 timerReg; + + switch (regNum) { + case 0: + timerReg = ( * (volatile SYS_UWORD16 *) TIMER_CNTL_REG) & TIMER_CNTL_MASK; + break; + case 1: + timerReg = *(volatile SYS_UWORD16 *) TIMER_READ_REG; + break; + case 2: + timerReg = ( * (volatile SYS_UWORD16 *) TIMER_MODE_REG) & TIMER_MODE_MASK; + break; + default: + break; + } + return(timerReg); +} +/*-------------------------------------------------------------- + * TM_ResetTimer() + *-------------------------------------------------------------- + * Parameters : timer number (1 or 2) + * timer value, reload yes or not, scale + * Return : none + * Functionality : Give the timewr state + *--------------------------------------------------------------*/ +void TM_ResetTimer (SYS_UWORD16 timerNum, SYS_UWORD16 countValue, + SYS_UWORD16 autoReload, SYS_UWORD16 clockScale) +{ + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + + *cntl &= ~(START_STOP | PTV); /* stop and reset values */ + + (autoReload) ? (*cntl |= AR) : (*cntl &= ~AR); + + *cntl |= (clockScale << 2 ); + + /*load the value */ + *(volatile SYS_UWORD16 *) TIMER1_LOAD_TIM = countValue; + + *cntl |= START_STOP; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + + *cntl &= ~(START_STOP | PTV); /* stop and reset values */ + + (autoReload) ? (*cntl |= AR) : (*cntl &= ~AR); + + *cntl |= (clockScale << 2 ); + + /*load the value */ + *(volatile SYS_UWORD16 *) TIMER2_LOAD_TIM = countValue; + + *cntl |= START_STOP; + } +} + +/* + * TM_StopTimer + * + * Parameters : timer number (1 or 2) + */ +void TM_StopTimer (int timerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl &= ~START_STOP; +} + +/* + * TM_ReadTimer + * + * Returns current timer value + * + * Parameters : timer number (1 or 2) + * + */ +SYS_UWORD16 TM_ReadTimer (int timerNum) +{ + if (timerNum == 1) + { + return (* (SYS_UWORD16 *) TIMER1_READ_TIM); + } + else + { + return (* (SYS_UWORD16 *) TIMER2_READ_TIM); + } +} + + +/* + * TM_StartTimer + * + * Parameters : timer number (1 or 2) + * + */ +void TM_StartTimer (int timerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (timerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl |= START_STOP; +} + +void TM_DisableWatchdog (void) +{ + /* volatile variable needed due C to optimization */ + volatile SYS_UWORD16 *reg = (volatile SYS_UWORD16 *) TIMER_MODE_REG; + + *reg = 0xf5; + *reg = 0xa0; +} + + + /* + * TM_EnableWatchdog + * + */ +void TM_EnableWatchdog(void) +{ + * ((volatile SYS_UWORD16 *) TIMER_MODE_REG) = TIMER_WDOG; +} + +/* + * TM_ResetWatchdog + * + * Parameter : Tick count + * Use a different value each time, otherwise watchdog bites + */ +void TM_ResetWatchdog(SYS_UWORD16 count) +{ + * ((volatile SYS_UWORD16 *) TIMER_LOAD_REG) = count; +} + +/* +* TM_EnableTimer (int TimerNum) +* +* Parameter : TimerNum : timer to enable (timer1 or timer2) +* +*/ +void TM_EnableTimer (int TimerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (TimerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl |= TIMER_CLK_EN; +} + +/* +* TM_DisableTimer (int TimerNum) +* +* Parameter : TimerNum : timer to enable (timer1 or timer2) +* +*/ +void TM_DisableTimer (int TimerNum) +{ + volatile SYS_UWORD16 *cntl; + + if (TimerNum == 1) + { + cntl = (volatile SYS_UWORD16 *) TIMER1_CNTL; + } + else + { + cntl = (volatile SYS_UWORD16 *) TIMER2_CNTL; + } + *cntl &= ~TIMER_CLK_EN; +} + +/*-------------------------------------------------------------- + * TIMER_ReadValue() + *-------------------------------------------------------------- + * Parameters : none + * Return : none + * Functionality : Read timer value + *--------------------------------------------------------------*/ + +unsigned short TIMER_ReadValue (void) +{ + return(* (SYS_UWORD16 *) TIMER_READ_REG); +} + +/*-------------------------------------------------------------- + * TIMER_WriteValue() + *-------------------------------------------------------------- + * Parameters : none + * Return : none + * Functionality : Write timer value + *--------------------------------------------------------------*/ + +void TIMER_WriteValue (SYS_UWORD16 value) +{ + * (SYS_UWORD16 *) TIMER_LOAD_REG = value; /*load the value */ +}