• R/O
  • SSH

compass: Commit

compass and antenna rotator


Commit MetaInfo

Revisiondd517602ea263dde8c8a0cfd7f8e0e504d9076b0 (tree)
Time2019-07-25 22:39:29
AuthorPJ_WORK
CommiterPJ_WORK

Log Message

msp: QMC

Change Summary

Incremental Difference

diff -r 199a456f33c4 -r dd517602ea26 msp/gcc/Makefile
--- a/msp/gcc/Makefile Tue May 28 18:14:44 2019 +0100
+++ b/msp/gcc/Makefile Thu Jul 25 14:39:29 2019 +0100
@@ -44,6 +44,7 @@
4444 all: $(DEPEND)
4545 all: stk1.elf
4646 all: stk2.hex
47+all: stk2_QMC.hex
4748 all: compass.image.h
4849 all: IR_test.image.h
4950 all: LED.image.h
@@ -74,9 +75,16 @@
7475 stk2.o: main_stk.c
7576 $(CC) $(CFLAGS) -o $@ -c $^
7677
78+stk2_QMC.o: HW_DEF = -DSTK2 -DQMC
79+stk2_QMC.o: main_stk.c
80+ $(CC) $(CFLAGS) -o $@ -c $^
81+
7782 stk2.elf: stk2.o
7883 $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
7984
85+stk2_QMC.elf: stk2_QMC.o
86+ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
87+
8088 %.v: OBJCOPY=objcopy # msp430-objcopy fails!
8189 %.v: %.elf
8290 @$(SIZE) $<
diff -r 199a456f33c4 -r dd517602ea26 msp/gcc/olimex_qmc.bat
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/msp/gcc/olimex_qmc.bat Thu Jul 25 14:39:29 2019 +0100
@@ -0,0 +1,6 @@
1+
2+mspprog-cli-v2.exe /p=lpt1 /d=msp430f449 /ec
3+mspprog-cli-v2.exe /p=lpt1 /d=msp430f449 /bc
4+mspprog-cli-v2.exe /p=lpt1 /d=msp430f449 /f=stk2_QMC.hex /w
5+mspprog-cli-v2.exe /p=lpt1 /d=msp430f449 /f=stk2_QMC.hex /v /post=hr
6+pause
diff -r 199a456f33c4 -r dd517602ea26 msp/src/HMC.c
--- a/msp/src/HMC.c Tue May 28 18:14:44 2019 +0100
+++ b/msp/src/HMC.c Thu Jul 25 14:39:29 2019 +0100
@@ -30,7 +30,11 @@
3030
3131 #include "I2C.h"
3232
33+#ifdef QMC
34+#include "QMC5883.h"
35+#else
3336 #include "HMC5883.h"
37+#endif
3438
3539 #ifndef STK
3640 __attribute(( always_inline ))
@@ -44,6 +48,20 @@
4448 bool HMC_check(void)
4549 {
4650 DO('I');
51+
52+#ifdef QMC
53+ if (! I2C_write_one(QMC_ADDR, QMC_CFG_2, QMC_C2_INT_DIS | QMC_C2_ROL_DIS | QMC_C2_RESET)) {
54+ DO('E'); DO('\r'); DO('\n');
55+ return 0;
56+ }
57+ uint8_t cfg[3];
58+ if (!I2C_read_block(QMC_ADDR, HMC_CFG_1, cfg, sizeof(cfg))) {
59+ DO('E'); DO('0'); DO('\r'); DO('\n');
60+ return 0;
61+ }
62+ for(unsigned i=0; i<sizeof(cfg); ++i)
63+ DOU8(cfg[i]);
64+#else
4765 enum { id_num = 3 };
4866 uint8_t id[id_num];
4967 if (!I2C_read_block(HMC_ADDR, HMC_ID_A, id, id_num)) {
@@ -52,22 +70,38 @@
5270 }
5371 for(unsigned i=0; i<id_num; ++i)
5472 DOU8(id[i]);
55- if ((id[0] != HMC_ID_A_EXP) ||
56- (id[1] != HMC_ID_B_EXP) ||
57- (id[2] != HMC_ID_C_EXP)) {
73+ if ( (id[0] != HMC_ID_A_EXP) ||
74+ (id[1] != HMC_ID_B_EXP) ||
75+ (id[2] != HMC_ID_C_EXP) ) {
5876 DO('E'); DO('1'); DO('\r'); DO('\n');
5977 return 0;
6078 }
79+#endif
6180 DO('\r'); DO('\n');
6281 return 1;
6382 }
6483
84+#ifdef QMC
85+bool QMC_config(uint8_t cfg_1)
86+{
87+ DO('C');
88+ if (! I2C_write_one(QMC_ADDR, QMC_SR_PERIOD, QMC_SR_PERIOD_VAL)) {
89+ DO('E'); DO('\r'); DO('\n');
90+ return 0;
91+ }
92+ if (! I2C_write_one(QMC_ADDR, QMC_CFG_1, cfg_1)) {
93+ DO('E'); DO('\r'); DO('\n');
94+ return 0;
95+ }
96+ return 1;
97+}
98+#else
6599 bool HMC_config(uint8_t cfg_a, uint8_t cfg_b)
66100 {
67101 DO('C');
68102 enum { num = 3 };
69103 uint8_t cfg[num];
70- if (!I2C_read_block(HMC_ADDR, HMC_CFG_A, cfg, num)) {
104+ if (! I2C_read_block(HMC_ADDR, HMC_CFG_A, cfg, num)) {
71105 DO('E'); DO('\r'); DO('\n');
72106 return 0;
73107 }
@@ -77,7 +111,7 @@
77111 if (cfg[0] != cfg_a) { // update cfg_a
78112 DO(' ');
79113 DO('a');
80- if (!I2C_write_one(HMC_ADDR, HMC_CFG_A, cfg_a)) {
114+ if (! I2C_write_one(HMC_ADDR, HMC_CFG_A, cfg_a)) {
81115 DO('E'); DO('\r'); DO('\n');
82116 return 0;
83117 }
@@ -86,7 +120,7 @@
86120 if (cfg[1] != cfg_b) { // update cfg_b
87121 DO(' ');
88122 DO('b');
89- if (!I2C_write_one(HMC_ADDR, HMC_CFG_B, cfg_b)) {
123+ if (! I2C_write_one(HMC_ADDR, HMC_CFG_B, cfg_b)) {
90124 DO('E'); DO('\r'); DO('\n');
91125 return 0;
92126 }
@@ -95,6 +129,7 @@
95129 DO('\r'); DO('\n');
96130 return ((cfg[0] == cfg_a) && (cfg[1] == cfg_b)); // cfg match
97131 }
132+#endif
98133
99134 bool HMC_stop()
100135 {
@@ -174,7 +209,13 @@
174209 uint8_t HMC_status()
175210 {
176211 uint8_t status;
177- if (!I2C_read_block(HMC_ADDR, HMC_STATUS, &status, 1)) {
212+ if (!I2C_read_block(
213+#ifdef QMC
214+ QMC_ADDR, QMC_STATUS,
215+#else
216+ HMC_ADDR, HMC_STATUS,
217+#endif
218+ &status, 1)) {
178219 DO('E');
179220 DO('s');
180221 DO('\r'); DO('\n');
@@ -226,12 +267,21 @@
226267
227268 // NOTE: status canot be read after data, seems like I2C read index wraps to X_MSB reg instead
228269 struct hmc_data_t {
270+#ifdef QMC
271+ uint8_t x_lsb;
272+ uint8_t x_msb;
273+ uint8_t y_lsb;
274+ uint8_t y_msb;
275+ uint8_t z_lsb;
276+ uint8_t z_msb;
277+#else
229278 uint8_t x_msb;
230279 uint8_t x_lsb;
231280 uint8_t z_msb;
232281 uint8_t z_lsb;
233282 uint8_t y_msb;
234283 uint8_t y_lsb;
284+#endif
235285 } hmc_data;
236286
237287 inline static int16_t hmc_data_x(void)
@@ -279,7 +329,13 @@
279329
280330 static bool HMC_read_fast()
281331 {
282- return I2C_read_block(HMC_ADDR, HMC_OUT_X_MSB, (uint8_t *)&hmc_data, 6);
332+ return I2C_read_block(
333+#ifdef QMC
334+ HMC_ADDR, HMC_OUT_X_MSB,
335+#else
336+ QMC_ADDR, QMC_OUT_X_LSB,
337+#endif
338+ (uint8_t *)&hmc_data, 6);
283339 }
284340
285341 bool HMC_read()
diff -r 199a456f33c4 -r dd517602ea26 msp/src/main_stk.c
--- a/msp/src/main_stk.c Tue May 28 18:14:44 2019 +0100
+++ b/msp/src/main_stk.c Thu Jul 25 14:39:29 2019 +0100
@@ -601,7 +601,11 @@
601601 return 0;
602602 }
603603 // check/update config
604+#ifdef QMC
605+ return QMC_config(QMC_C1_MODE_CONT | QMC_C1_RATE_10 | QMC_C1_RANGE_2G | QMC_C1_OSR_512);
606+#else
604607 return HMC_config(HMC_BIAS_0 | HMC_RATE_1_5 | HMC_AVG_8, HMC_GAIN_1370);
608+#endif
605609 }
606610
607611 #include "find_drive_dir.h"
diff -r 199a456f33c4 -r dd517602ea26 msp/src/str.def
--- a/msp/src/str.def Tue May 28 18:14:44 2019 +0100
+++ b/msp/src/str.def Thu Jul 25 14:39:29 2019 +0100
@@ -9,6 +9,11 @@
99 STR(START1,
1010 { 0, LCD_S_S, LCD_S_P, LCD_S_9, LCD_S_B, LCD_S_N, LCD_S_M } )
1111
12+#ifdef QMC
13+STR(INIT,
14+{ LCD_S_Q, LCD_S_M, LCD_S_C, 0, LCD_S_C, LCD_S_F, LCD_S_G } )
15+#else
1216 STR(INIT,
1317 { LCD_S_H, LCD_S_M, LCD_S_C, 0, LCD_S_C, LCD_S_F, LCD_S_G } )
18+#endif
1419
Show on old repository browser