Files
diplomarbeit/Tester/SW/lib/Drivers/ethernet/clock-arch.c
T
Matthias 373a8c32b2 Added Software projects
git-svn-id: file:///srv/dev-disk-by-uuid-17e88007-4d0c-45e0-8757-cacfcc458630/repositories/svn/Diplomarbeit@55 9fe90eed-be63-e94b-8204-d34ff4c2ff93
2008-12-23 10:34:08 +00:00

99 lines
3.0 KiB
C

/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2006
*
* File name : clock-arch.c
* Description : Implementation of architecture-specific clock functionality
*
* History :
* 1. Date : October 4, 2006
* Author : Stanimir Bonev
* Description : Create
*
* $Revision: 1.1.2.3 $
**************************************************************************/
#include "LPC23xx.h"
#include "clock-arch.h"
#include "ethernet.h"
volatile clock_time_t Ticks;
/*************************************************************************
* Function Name: Tim0Handler
* Parameters: none
*
* Return: none
*
* Description: Timer 0 interrupt handler
*
*************************************************************************/
static
void Timer1IntrHandler (void)
{
++Ticks;
// T0IR_bit.MR0INT = 1;
T1IR |= (1 << 1);
VICIRQStatus = 0;
}
/*************************************************************************
* Function Name: clock_init
* Parameters: Int32U IntrPriority
*
* Return: none
*
* Description: Timer init
*
*************************************************************************/
void clock_init(Int32U IntrPriority)
{
Ticks = 0;
// Init Time0
// PCONP_bit.PCTIM0 = 1;
PCONP |= (1 << 2); /* Enable Timer 1 CLK */
// T0TCR_bit.CE = 0;
T1TCR &=~(1 << 0); /* Disable Counter 1 */
// T0TCR_bit.CR = 1;
T1TCR |= (1 << 1); /* Reset Counter 1 */
// T0TCR_bit.CR = 0;
T1TCR &=~(1 << 1); /* Relase Reset on Counter 1 */
// T0CTCR_bit.CTM = 0;
T1CTCR &=~(1 << 0) &~(1 << 1); /* Mode: every rising PCLK edge */
// T0MCR_bit.MR0I = 1;
T1MCR |= (1 << 3); /* Enable Interrupt on MR1 */
// T0MCR_bit.MR0R = 1;
T1MCR |= (1 << 4); /* Enable reset on MR1 */
// T0MCR_bit.MR0S = 0;
T1MCR &=~(1 << 5); /* Disable stop on MR1 */
T1PR = 0; /* set timer 1 period */
T1MR0 = SYS_GetFpclk(TIMER0_PCLK_OFFSET)/(TICK_PER_SEC);
// init timer 0 interrupt
// T0IR_bit.MR0INT = 1;
T1IR |= (1 << 1); /* clear pending interrupt */
VIC_SetVectoredIRQ(Timer1IntrHandler,IntrPriority,VIC_CHAN_NUM_Timer1);
VICIntEnable |= 1UL << VIC_CHAN_NUM_Timer1;
// T0TCR_bit.CE = 1;
T1TCR |= (1 << 0); /* Enable Counter */
}
/*************************************************************************
* Function Name: clock_init
* Parameters: none
*
* Return: none
*
* Description: The current clock time, measured in system ticks
*
*************************************************************************/
clock_time_t clock_time(void)
{
return(Ticks);
}