@@ -0,0 +1,101 | |||
|
1 | /* | |
|
No newline at end of file | ||
|
2 | * fixpoint<T>.h | |
|
No newline at end of file | ||
|
3 | * | |
|
No newline at end of file | ||
|
4 | * Created on: Feb 24, 2015 | |
|
No newline at end of file | ||
|
5 | * Author: aras | |
|
No newline at end of file | ||
|
6 | */ | |
|
No newline at end of file | ||
|
7 | ||
|
No newline at end of file | ||
|
8 | #ifndef FIXPOINT_H_ | |
|
No newline at end of file | ||
|
9 | #define FIXPOINT_H_ | |
|
No newline at end of file | ||
|
10 | ||
|
No newline at end of file | ||
|
11 | #include <inttypes.h> | |
|
No newline at end of file | ||
|
12 | #include <math.h> | |
|
No newline at end of file | ||
|
13 | #include <typeinfo> | |
|
No newline at end of file | ||
|
14 | #include <cstdio> | |
|
No newline at end of file | ||
|
15 | ||
|
No newline at end of file | ||
|
16 | typedef fixpoint<int32_t> fix19_12; | |
|
No newline at end of file | ||
|
17 | #define N43_20 fixpoint<int64_t> | |
|
No newline at end of file | ||
|
18 | #define N9_23 fixpoint<int32_t> | |
|
No newline at end of file | ||
|
19 | ||
|
No newline at end of file | ||
|
20 | #define FAC64 20 | |
|
No newline at end of file | ||
|
21 | #define FAC32 12 | |
|
No newline at end of file | ||
|
22 | ||
|
No newline at end of file | ||
|
23 | template<class T> | |
|
No newline at end of file | ||
|
24 | class fixpoint { | |
|
No newline at end of file | ||
|
25 | ||
|
No newline at end of file | ||
|
26 | private: | |
|
No newline at end of file | ||
|
27 | uint8_t factor; | |
|
No newline at end of file | ||
|
28 | T value; | |
|
No newline at end of file | ||
|
29 | ||
|
No newline at end of file | ||
|
30 | public: | |
|
No newline at end of file | ||
|
31 | fixpoint<T>(); | |
|
No newline at end of file | ||
|
32 | fixpoint<T>(T num); | |
|
No newline at end of file | ||
|
33 | ||
|
No newline at end of file | ||
|
34 | void set_from_float(float num){value=T(num*(1<<factor));} | |
|
No newline at end of file | ||
|
35 | void set(T val){value = val;} | |
|
No newline at end of file | ||
|
36 | float tofloat(); | |
|
No newline at end of file | ||
|
37 | ||
|
No newline at end of file | ||
|
38 | ||
|
No newline at end of file | ||
|
39 | friend inline fixpoint<T> operator-(const fixpoint<T> &num1, const fixpoint<T> &num2){ | |
|
No newline at end of file | ||
|
40 | return fixpoint<T>(num1.value-num2.value); | |
|
No newline at end of file | ||
|
41 | } | |
|
No newline at end of file | ||
|
42 | friend inline fixpoint<T> operator+(const fixpoint<T> &num1, const fixpoint<T> &num2){ | |
|
No newline at end of file | ||
|
43 | return fixpoint<T>(num1.value+num2.value); | |
|
No newline at end of file | ||
|
44 | } | |
|
No newline at end of file | ||
|
45 | friend inline fixpoint<T> operator*(const fixpoint<T> &num1, const fixpoint<T> &num2){ | |
|
No newline at end of file | ||
|
46 | int64_t aux = (int64_t(num1.value)*int64_t(num2.value))>>num1.factor; | |
|
No newline at end of file | ||
|
47 | return fixpoint<T>(aux); | |
|
No newline at end of file | ||
|
48 | } | |
|
No newline at end of file | ||
|
49 | friend inline fixpoint<T> operator/(const fixpoint<T> &num1, const fixpoint<T> &num2){ | |
|
No newline at end of file | ||
|
50 | int64_t aux = (int64_t(num1.value)<<num1.factor); | |
|
No newline at end of file | ||
|
51 | return fixpoint<T>(aux/num2.value); | |
|
No newline at end of file | ||
|
52 | } | |
|
No newline at end of file | ||
|
53 | ||
|
No newline at end of file | ||
|
54 | ||
|
No newline at end of file | ||
|
55 | inline fixpoint<T> power(); | |
|
No newline at end of file | ||
|
56 | inline fixpoint<T> sqroot(); | |
|
No newline at end of file | ||
|
57 | }; | |
|
No newline at end of file | ||
|
58 | ||
|
No newline at end of file | ||
|
59 | template<class T> | |
|
No newline at end of file | ||
|
60 | fixpoint<T>::fixpoint(){ | |
|
No newline at end of file | ||
|
61 | if(typeid(T)==typeid(int32_t)){ | |
|
No newline at end of file | ||
|
62 | factor=FAC32; | |
|
No newline at end of file | ||
|
63 | } | |
|
No newline at end of file | ||
|
64 | else{ | |
|
No newline at end of file | ||
|
65 | factor=FAC64; | |
|
No newline at end of file | ||
|
66 | } | |
|
No newline at end of file | ||
|
67 | value=0; | |
|
No newline at end of file | ||
|
68 | } | |
|
No newline at end of file | ||
|
69 | ||
|
No newline at end of file | ||
|
70 | template<class T> | |
|
No newline at end of file | ||
|
71 | fixpoint<T>::fixpoint(T num){ | |
|
No newline at end of file | ||
|
72 | if(typeid(T)==typeid(int32_t)){ | |
|
No newline at end of file | ||
|
73 | factor=FAC32; | |
|
No newline at end of file | ||
|
74 | } | |
|
No newline at end of file | ||
|
75 | else{ | |
|
No newline at end of file | ||
|
76 | factor=FAC64; | |
|
No newline at end of file | ||
|
77 | } | |
|
No newline at end of file | ||
|
78 | value=num; | |
|
No newline at end of file | ||
|
79 | } | |
|
No newline at end of file | ||
|
80 | ||
|
No newline at end of file | ||
|
81 | ||
|
No newline at end of file | ||
|
82 | template<class T> | |
|
No newline at end of file | ||
|
83 | float fixpoint<T>::tofloat(){ | |
|
No newline at end of file | ||
|
84 | return float(value)/(1<<factor); | |
|
No newline at end of file | ||
|
85 | } | |
|
No newline at end of file | ||
|
86 | ||
|
No newline at end of file | ||
|
87 | template<class T> | |
|
No newline at end of file | ||
|
88 | fixpoint<T> fixpoint<T>::power(){ | |
|
No newline at end of file | ||
|
89 | int64_t aux = (int64_t(value)*int64_t(value))>>factor; | |
|
No newline at end of file | ||
|
90 | return fixpoint<T>(aux); | |
|
No newline at end of file | ||
|
91 | } | |
|
No newline at end of file | ||
|
92 | ||
|
No newline at end of file | ||
|
93 | template<class T> | |
|
No newline at end of file | ||
|
94 | fixpoint<T> fixpoint<T>::sqroot(){ | |
|
No newline at end of file | ||
|
95 | T aux = sqrt(value); | |
|
No newline at end of file | ||
|
96 | return fixpoint<T>(aux<<(factor/2)); | |
|
No newline at end of file | ||
|
97 | } | |
|
No newline at end of file | ||
|
98 | ||
|
No newline at end of file | ||
|
99 | ||
|
No newline at end of file | ||
|
100 | ||
|
No newline at end of file | ||
|
101 | #endif /* FIXPOINT_H_ */ No newline at end of file |
@@ -9,27 +9,25 | |||
|
9 | 9 | No newline at end of file |
|
10 | 10 | namespace te_gnss { No newline at end of file |
|
11 | 11 | |
|
12 | No newline at end of file | |
|
12 | bool configure(gnss_config_struct* cs){ No newline at end of file | |
|
13 | 13 | return true; No newline at end of file |
|
14 | 14 | } No newline at end of file |
|
15 | 15 | |
|
16 | No newline at end of file | |
|
16 | bool activate(){ No newline at end of file | |
|
17 | 17 | return true; No newline at end of file |
|
18 | 18 | } No newline at end of file |
|
19 | 19 | |
|
20 | No newline at end of file | |
|
20 | bool deactivate(){ No newline at end of file | |
|
21 | 21 | return true; No newline at end of file |
|
22 | 22 | } No newline at end of file |
|
23 | 23 | |
|
24 | No newline at end of file | |
|
24 | bool sync_pps(){ No newline at end of file | |
|
25 | 25 | return true; No newline at end of file |
|
26 | 26 | } No newline at end of file |
|
27 | 27 | |
|
No newline at end of file | ||
|
28 | bool get_time_info(gnss_precise_time* pt){ | |
|
No newline at end of file | ||
|
29 | return true; | |
|
No newline at end of file | ||
|
30 | } No newline at end of file | |
|
31 | 28 | |
|
29 | No newline at end of file | |
|
32 | bool is_locked(){ No newline at end of file | |
|
No newline at end of file | ||
|
30 | bool te_gnss_is_locked(){ No newline at end of file | |
|
33 | 31 | return true; No newline at end of file |
|
34 | 32 | } No newline at end of file |
|
35 | 33 | } No newline at end of file |
@@ -10,19 +10,30 | |||
|
10 | 10 | No newline at end of file |
|
11 | 11 | #include "te_structs.h" No newline at end of file |
|
12 | 12 | |
|
13 | No newline at end of file | |
|
13 | namespace te_gnss { No newline at end of file | |
|
14 | 14 | //pin ports to GNSS No newline at end of file |
|
15 | 15 | #define PPS 2 /*!< PE4 AVR <> 2 Arduino */ No newline at end of file |
|
16 | 16 | #define ENB 5 /*!< PE3 AVR <> 5 Arduino */ No newline at end of file |
|
17 | 17 | #define RX0_GNSS RX0 No newline at end of file |
|
18 | 18 | #define TX0_GNSS TX0 PE1 No newline at end of file |
|
19 | 19 | |
|
20 | No newline at end of file | |
|
20 | bool configure(gnss_config_struct*); | |
|
No newline at end of file | ||
|
21 | No newline at end of file | |
|
21 | bool activate(); | |
|
No newline at end of file | ||
|
22 | No newline at end of file | |
|
22 | bool deactivate(); | |
|
No newline at end of file | ||
|
23 | No newline at end of file | |
|
23 | bool sync_pps(); | |
|
No newline at end of file | ||
|
24 | bool get_time_info(gnss_precise_time*); | |
|
No newline at end of file | ||
|
25 | bool is_locked(); No newline at end of file | |
|
26 | 24 | |
|
25 | No newline at end of file | |
|
27 | } No newline at end of file | |
|
No newline at end of file | ||
|
26 | void te_gnss_scan_baudrate(); | |
|
No newline at end of file | ||
|
27 | void te_gnss_scan_baud_func(); | |
|
No newline at end of file | ||
|
28 | ||
|
No newline at end of file | ||
|
29 | ||
|
No newline at end of file | ||
|
30 | void te_gnss_wait_to_be_locked(); | |
|
No newline at end of file | ||
|
31 | void te_gnss_scan_lock_func(); | |
|
No newline at end of file | ||
|
32 | bool te_gnss_is_locked(); | |
|
No newline at end of file | ||
|
33 | ||
|
No newline at end of file | ||
|
34 | void te_gnss_get_pps_data(); | |
|
No newline at end of file | ||
|
35 | void te_gnss_get_pps_data_funct(); | |
|
No newline at end of file | ||
|
36 | ||
|
No newline at end of file | ||
|
37 | void te_gnss_set_position(N9_22); | |
|
No newline at end of file | ||
|
38 | No newline at end of file | |
|
28 | 39 | #endif /* LIBTE_GNSS_H_ */ No newline at end of file |
@@ -8,13 +8,12 | |||
|
8 | 8 | #include <rtc1308.h> No newline at end of file |
|
9 | 9 | #include <Wire.h> No newline at end of file |
|
10 | 10 | |
|
No newline at end of file | ||
|
11 | namespace te_rtc{ No newline at end of file | |
|
12 | 11 | No newline at end of file |
|
13 | 12 | /*! No newline at end of file |
|
14 | 13 | * \fn initialization No newline at end of file |
|
15 | 14 | * \brief Inicializacion del modulo que controlara al RTC DS1308. No newline at end of file |
|
16 | 15 | */ |
|
16 | No newline at end of file | |
|
17 | void initialization(void) { No newline at end of file | |
|
18 | 17 | No newline at end of file |
|
19 | 18 | pinMode(CLKIN,OUTPUT); No newline at end of file |
|
20 | 19 | attachInterrupt(PPS,ISR_gnss_pps, RISING); No newline at end of file |
@@ -15,8 +15,6 | |||
|
15 | 15 | #include <te_structs.h> No newline at end of file |
|
16 | 16 | No newline at end of file |
|
17 | 17 | extern void ISR_gnss_pps(void); |
|
No newline at end of file | ||
|
18 | ||
|
No newline at end of file | ||
|
19 | namespace te_rtc{ No newline at end of file | |
|
20 | 18 | No newline at end of file |
|
21 | 19 | #define DS1308_CTRL_ID 0x68 No newline at end of file |
|
22 | 20 | #define DS1308_RAM_BASE 0x08 /*!< Direccion base de la memoria RAM */ No newline at end of file |
@@ -15,6 +15,6 | |||
|
15 | 15 | //pin ports to system No newline at end of file |
|
16 | 16 | #define LOCK 42 /*!< GNSS receptor LOCK signal PL7 AVR <> 42 ARDUINO MEGA */ No newline at end of file |
|
17 | 17 | |
|
18 | No newline at end of file | |
|
18 | No newline at end of file | |
|
19 | 19 | No newline at end of file |
|
20 | 20 | #endif /* TE2SAIG_H_ */ No newline at end of file |
General Comments 0
You need to be logged in to leave comments.
Login now