Paparazzi UAS  v5.0.5_stable-7-g4b8bbb7
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
sys_time_arch.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2009-2011 The Paparazzi Team
4  *
5  * This file is part of paparazzi.
6  *
7  * paparazzi is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * paparazzi is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with paparazzi; see the file COPYING. If not, write to
19  * the Free Software Foundation, 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  *
22  */
23 
31 #ifndef SYS_TIME_ARCH_H
32 #define SYS_TIME_ARCH_H
33 
34 #include "mcu_periph/sys_time.h"
35 
36 #include BOARD_CONFIG
37 #include "LPC21xx.h"
38 #include "armVIC.h"
39 
40 #include "std.h"
41 
42 void TIMER0_ISR ( void ) __attribute__((naked));
43 
44 /* T0 prescaler, set T0_CLK to 15MHz, T0_CLK = PCLK / T0PCLK_DIV */
45 #if (PCLK == 15000000)
46 #define T0_PCLK_DIV 1
47 
48 #elif (PCLK == 30000000)
49 #define T0_PCLK_DIV 2
50 
51 #elif (PCLK == 60000000)
52 #define T0_PCLK_DIV 4
53 
54 #else
55 #error unknown PCLK frequency
56 #endif
57 
58 #ifndef TIMER0_VIC_SLOT
59 #define TIMER0_VIC_SLOT 1
60 #endif /* TIMER0_VIC_SLOT */
61 
62 
63 /* Generic timer macros */
64 #define SysTimeTimerStart(_t) { _t = usec_of_cpu_ticks(T0TC); }
65 #define SysTimeTimer(_t) ( usec_of_cpu_ticks(T0TC) - (_t))
66 #define SysTimeTimerStop(_t) { _t = ( usec_of_cpu_ticks(T0TC) - (_t)); }
67 
68 #define SysTickTimerStart(_t) { _t = T0TC; }
69 #define SysTickTimer(_t) ((uint32_t)(T0TC - _t))
70 #define SysTickTimerStop(_t) { _t = (T0TC - _t); }
71 
73 static inline void sys_time_usleep(uint32_t us) {
74  uint32_t start = T0TC;
76  while ((uint32_t)(T0TC-start) < ticks);
77 }
78 
79 #endif /* SYS_TIME_ARCH_H */
void TIMER0_ISR(void)
static void sys_time_usleep(uint32_t us)
Busy wait, in microseconds.
Definition: sys_time_arch.h:73
Architecture independent timing functions.
#define T0TC
Definition: LPC21xx.h:52
unsigned long uint32_t
Definition: types.h:18
int ticks
Definition: gps_sirf.c:94
static uint32_t cpu_ticks_of_usec(uint32_t usec)
Definition: sys_time.h:164