Paparazzi UAS  v5.2.2_stable-0-gd6b9f29
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 
67 static inline uint32_t get_sys_time_usec(void) {
68  return usec_of_cpu_ticks(T0TC);
69 }
70 
75 static inline uint32_t get_sys_time_msec(void) {
76  return msec_of_cpu_ticks(T0TC);
77 }
78 
79 
80 #define SysTickTimerStart(_t) { _t = T0TC; }
81 #define SysTickTimer(_t) ((uint32_t)(T0TC - _t))
82 #define SysTickTimerStop(_t) { _t = (T0TC - _t); }
83 
85 static inline void sys_time_usleep(uint32_t us) {
86  uint32_t start = T0TC;
88  while ((uint32_t)(T0TC-start) < ticks);
89 }
90 
91 #endif /* SYS_TIME_ARCH_H */
static uint32_t msec_of_cpu_ticks(uint32_t cpu_ticks)
Definition: sys_time.h:176
void TIMER0_ISR(void)
static void sys_time_usleep(uint32_t us)
Busy wait, in microseconds.
Definition: sys_time_arch.h:85
static uint32_t usec_of_cpu_ticks(uint32_t cpu_ticks)
Definition: sys_time.h:180
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:75
unsigned long uint32_t
Definition: types.h:18
int ticks
Definition: gps_sirf.c:94
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:164