Paparazzi UAS  v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces 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 
67 static inline uint32_t get_sys_time_usec(void)
68 {
69  return usec_of_cpu_ticks(T0TC);
70 }
71 
76 static inline uint32_t get_sys_time_msec(void)
77 {
78  return msec_of_cpu_ticks(T0TC);
79 }
80 
81 
82 #define SysTickTimerStart(_t) { _t = T0TC; }
83 #define SysTickTimer(_t) ((uint32_t)(T0TC - _t))
84 #define SysTickTimerStop(_t) { _t = (T0TC - _t); }
85 
87 static inline void sys_time_usleep(uint32_t us)
88 {
89  uint32_t start = T0TC;
91  while ((uint32_t)(T0TC - start) < ticks);
92 }
93 
94 #endif /* SYS_TIME_ARCH_H */
static uint32_t msec_of_cpu_ticks(uint32_t cpu_ticks)
Definition: sys_time.h:188
void TIMER0_ISR(void)
static void sys_time_usleep(uint32_t us)
Busy wait, in microseconds.
Definition: sys_time_arch.h:87
static uint32_t usec_of_cpu_ticks(uint32_t cpu_ticks)
Definition: sys_time.h:193
Architecture independent timing functions.
#define T0TC
Definition: LPC21xx.h:52
static uint32_t get_sys_time_msec(void)
Get the time in milliseconds since startup.
Definition: sys_time_arch.h:76
unsigned long uint32_t
Definition: types.h:18
int ticks
Definition: gps_sirf.c:114
static uint32_t get_sys_time_usec(void)
Get the time in microseconds since startup.
Definition: sys_time_arch.h:67
static uint32_t cpu_ticks_of_usec(uint32_t usec)
Definition: sys_time.h:173