Rev 360 | Rev 464 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 360 | Rev 454 | ||
---|---|---|---|
Line 61... | Line 61... | ||
61 | #include "timer1.h" |
61 | #include "timer1.h" |
62 | #include "led.h" |
62 | #include "led.h" |
63 | #include "main.h" |
63 | #include "main.h" |
64 | #include "uart1.h" |
64 | #include "uart1.h" |
65 | #include "compass.h" |
65 | #include "compass.h" |
- | 66 | #include "spi_slave.h" |
|
Line 66... | Line 67... | ||
66 | 67 | ||
Line 67... | Line 68... | ||
67 | #define MK3MAG_SLAVE_ADDRESS 0x50 // i2C slave address |
68 | #define MK3MAG_SLAVE_ADDRESS 0x50 // i2C slave address |
Line 264... | Line 265... | ||
264 | //---------------------------------------------------------------- |
265 | //---------------------------------------------------------------- |
265 | void MK3MAG_Update(void) |
266 | void MK3MAG_Update(void) |
266 | { |
267 | { |
267 | static u32 TimerUpdate = 0; |
268 | static u32 TimerUpdate = 0; |
268 | static s16 x_max,y_max,z_max,x_min,y_min,z_min; |
269 | static s16 x_max,y_max,z_max,x_min,y_min,z_min; |
269 | static u8 last_state; |
270 | static u8 last_state,speak = 0; |
270 | u8 msg[64]; |
271 | u8 msg[64]; |
271 | u16 MinCaclibration = 500; |
272 | u16 MinCaclibration = 500; |
Line 272... | Line 273... | ||
272 | 273 | ||
Line 300... | Line 301... | ||
300 | } |
301 | } |
301 | else UART1_PutString("without GPS\n\r"); |
302 | else UART1_PutString("without GPS\n\r"); |
302 | } |
303 | } |
303 | x_max = -30000; y_max = -30000; z_max = -30000; |
304 | x_max = -30000; y_max = -30000; z_max = -30000; |
304 | x_min = 30000; y_min = 30000; z_min = 30000; |
305 | x_min = 30000; y_min = 30000; z_min = 30000; |
- | 306 | speak = 1; |
|
305 | break; |
307 | break; |
306 | - | ||
307 | case 2: |
308 | case 2: |
- | 309 | if(speak) SpeakHoTT = SPEAK_CALIBRATE; speak = 0; |
|
- | 310 | ||
308 | if(MagVector.X > x_max) { x_max = MagVector.X; BeepTime = 60; } |
311 | if(MagVector.X > x_max) { x_max = MagVector.X; BeepTime = 60; } |
309 | else if(MagVector.X < x_min) { x_min = MagVector.X; BeepTime = 20; } |
312 | else if(MagVector.X < x_min) { x_min = MagVector.X; BeepTime = 20; } |
310 | if(MagVector.Y > y_max) { y_max = MagVector.Y; BeepTime = 60; } |
313 | if(MagVector.Y > y_max) { y_max = MagVector.Y; BeepTime = 60; } |
311 | else if(MagVector.Y < y_min) { y_min = MagVector.Y; BeepTime = 20; } |
314 | else if(MagVector.Y < y_min) { y_min = MagVector.Y; BeepTime = 20; } |
- | 315 | ||
- | 316 | break; |
|
- | 317 | case 3: |
|
- | 318 | speak = 1; |
|
312 | break; |
319 | break; |
313 | - | ||
314 | case 4: |
320 | case 4: |
- | 321 | if(speak) SpeakHoTT = SPEAK_CALIBRATE; speak = 0; |
|
315 | if(MagVector.Z > z_max) { z_max = MagVector.Z; BeepTime = 80; } |
322 | if(MagVector.Z > z_max) { z_max = MagVector.Z; BeepTime = 80; } |
316 | else if(MagVector.Z < z_min) { z_min = MagVector.Z; BeepTime = 80; } |
323 | else if(MagVector.Z < z_min) { z_min = MagVector.Z; BeepTime = 80; } |
317 | break; |
324 | break; |
318 | case 5: |
325 | case 5: |
319 | if(last_state == Compass_CalState) break; |
326 | if(last_state == Compass_CalState) break; |
320 | if(((x_max - x_min) > MinCaclibration) && ((y_max - y_min) > MinCaclibration) && ((z_max - z_min) > MinCaclibration)) |
327 | if(((x_max - x_min) > MinCaclibration) && ((y_max - y_min) > MinCaclibration) && ((z_max - z_min) > MinCaclibration)) |
321 | { |
328 | { |
322 | BeepTime = 2500; |
329 | BeepTime = 2500; |
323 | UART1_PutString("\r\n-> Calibration okay <-\n\r"); |
330 | UART1_PutString("\r\n-> Calibration okay <-\n\r"); |
- | 331 | SpeakHoTT = SPEAK_MIKROKOPTER; |
|
324 | } |
332 | } |
325 | else |
333 | else |
326 | { |
334 | { |
327 | UART1_PutString("\r\nCalibration FAILED - Values too low: "); |
335 | UART1_PutString("\r\nCalibration FAILED - Values too low: "); |
328 | if((x_max - x_min) < MinCaclibration) UART1_PutString("X! "); |
336 | if((x_max - x_min) < MinCaclibration) UART1_PutString("X! "); |
329 | if((y_max - y_min) < MinCaclibration) UART1_PutString("Y! "); |
337 | if((y_max - y_min) < MinCaclibration) UART1_PutString("Y! "); |
330 | if((z_max - z_min) < MinCaclibration) UART1_PutString("Z! "); |
338 | if((z_max - z_min) < MinCaclibration) UART1_PutString("Z! "); |
331 | UART1_PutString("\r\n"); |
339 | UART1_PutString("\r\n"); |
- | 340 | SpeakHoTT = SPEAK_ERR_CALIBARTION; |
|
332 | } |
341 | } |
333 | UART1_PutString(msg); |
342 | UART1_PutString(msg); |
334 | sprintf(msg, "\r\nX: (%i - %i = %i)\r\n",x_max,x_min,x_max - x_min); |
343 | sprintf(msg, "\r\nX: (%i - %i = %i)\r\n",x_max,x_min,x_max - x_min); |
335 | UART1_PutString(msg); |
344 | UART1_PutString(msg); |
336 | sprintf(msg, "Y: (%i - %i = %i)\r\n",y_max,y_min,y_max - y_min); |
345 | sprintf(msg, "Y: (%i - %i = %i)\r\n",y_max,y_min,y_max - y_min); |