From 495cc1df494505378977995eeb76b05f20f0b235 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 13 Jun 2010 17:49:42 +0200 Subject: import firmware from LEGO v1.29 --- AT91SAM7S256/Source/d_timer.r | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'AT91SAM7S256/Source/d_timer.r') diff --git a/AT91SAM7S256/Source/d_timer.r b/AT91SAM7S256/Source/d_timer.r index 91e9f7b..93c3a3b 100644 --- a/AT91SAM7S256/Source/d_timer.r +++ b/AT91SAM7S256/Source/d_timer.r @@ -1,13 +1,13 @@ // // Date init 14.12.2004 // -// Revision date $Date:: 16-05-06 10:18 $ +// Revision date $Date:: 23-04-08 11:15 $ // // Filename $Workfile:: d_timer.r $ // -// Version $Revision:: 11 $ +// Version $Revision:: 2 $ // -// Archive $Archive:: /LMS2006/Sys01/Main/Firmware/Source/d_timer.r $ +// Archive $Archive:: /LMS2006/Sys01/Main_V02/Firmware/Source/d_time $ // // Platform C // @@ -19,11 +19,13 @@ #define MS_1_TIME ((OSC/16)/1000) static ULONG TimerValue; +static ULONG NextTimerValue; static ULONG Timer1mS; /* PIT timer is used as main timer - timer interval is 1mS */ #define TIMERInit TimerValue = ((*AT91C_PITC_PIIR) & AT91C_PITC_CPIV);\ + NextTimerValue = (((*AT91C_PITC_PIIR) + MS_1_TIME) & AT91C_PITC_CPIV);\ Timer1mS = 0 #define TIMERRead(V) if (MS_1_TIME < ((((*AT91C_PITC_PIIR) & AT91C_PITC_CPIV) - TimerValue) & AT91C_PITC_CPIV))\ @@ -34,6 +36,24 @@ static ULONG Timer1mS; }\ V = Timer1mS +#define TIMERReadAlt(V) if((SLONG)((*AT91C_PITC_PIIR) - NextTimerValue) >= 0)\ + {\ + Timer1mS ++;\ + NextTimerValue += MS_1_TIME;\ + }\ + V = Timer1mS;\ + +#define TIMERReadSkip(V) diff= (((*AT91C_PITC_PIIR)) - NextTimerValue);\ + if (diff >= 0)\ + {\ + diff /= MS_1_TIME;\ + diff += 1;\ + Timer1mS += diff;\ + diff *= MS_1_TIME;\ + NextTimerValue += diff;\ + }\ + V = Timer1mS;\ + #define TIMERExit -- cgit v1.2.3