Rev 149 | Rev 154 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 149 | Rev 150 | ||
---|---|---|---|
Line 65... | Line 65... | ||
65 | #include "led.h" |
65 | #include "led.h" |
66 | #include "spi_slave.h" |
66 | #include "spi_slave.h" |
Line 67... | Line 67... | ||
67 | 67 | ||
- | 68 | ||
Line 68... | Line 69... | ||
68 | 69 | volatile I2C_State_t I2C_State = I2C_OFF; |
|
69 | volatile I2C_State_t I2C_State = I2C_OFF; |
70 | u8 I2C_StopPolling = 1; |
70 | 71 | ||
71 | // rxbuffer |
72 | // rxbuffer |
Line 89... | Line 90... | ||
89 | 90 | ||
90 | #define I2C1_TIMEOUT 500 // 500 ms |
91 | #define I2C1_TIMEOUT 500 // 500 ms |
91 | volatile u32 I2C1_Timeout = 0; |
92 | volatile u32 I2C1_Timeout = 0; |
Line 92... | Line -... | ||
92 | volatile u8 I2C_PrimRxBuffer[10]; // must be larger than any of the secondary rx buffers |
- | |
93 | 93 | volatile u8 I2C_PrimRxBuffer[10]; // must be larger than any of the secondary rx buffers |
|
94 | 94 | ||
95 | //-------------------------------------------------------------- |
95 | //-------------------------------------------------------------- |
96 | void I2C1_Init(void) |
96 | void I2C1_Init(void) |
97 | { |
97 | { |
Line 465... | Line 465... | ||
465 | void I2C1_GetMK3MagVersion(void) |
465 | void I2C1_GetMK3MagVersion(void) |
466 | { |
466 | { |
467 | u8 msg[64]; |
467 | u8 msg[64]; |
468 | u8 repeat = 20; |
468 | u8 repeat = 20; |
469 | u32 timeout; |
469 | u32 timeout; |
- | 470 | ||
- | 471 | I2C_StopPolling = 1; |
|
Line 470... | Line 472... | ||
470 | 472 | ||
471 | MK3MAG_Version.Major = 0xFF; |
473 | MK3MAG_Version.Major = 0xFF; |
472 | MK3MAG_Version.Minor = 0xFF; |
474 | MK3MAG_Version.Minor = 0xFF; |
473 | MK3MAG_Version.Patch = 0xFF; |
475 | MK3MAG_Version.Patch = 0xFF; |
474 | MK3MAG_Version.Compatible = 0xFF; |
- | |
- | 476 | MK3MAG_Version.Compatible = 0xFF; |
|
475 | 477 | // polling of version info |
|
476 | while ((MK3MAG_Version.Major == 0xFF) && (repeat != 0)) |
478 | while ((MK3MAG_Version.Major == 0xFF) && (repeat != 0)) |
477 | { |
479 | { |
478 | I2C1_SendCommand(I2C_CMD_VERSION); |
480 | I2C1_SendCommand(I2C_CMD_VERSION); |
479 | timeout = SetDelay(200); |
481 | timeout = SetDelay(500); |
480 | while (!CheckDelay(timeout)) if (MK3MAG_Version.Major != 0xFF) break; |
482 | while (!CheckDelay(timeout)) if (MK3MAG_Version.Major != 0xFF) break; |
481 | repeat--; |
483 | repeat--; |
Line 482... | Line 484... | ||
482 | } |
484 | } |
Line 487... | Line 489... | ||
487 | UART1_PutString(msg); |
489 | UART1_PutString(msg); |
488 | sprintf(msg, " Compatible: %d", MK3MAG_Version.Compatible); |
490 | sprintf(msg, " Compatible: %d", MK3MAG_Version.Compatible); |
489 | UART1_PutString(msg); |
491 | UART1_PutString(msg); |
490 | } |
492 | } |
491 | else UART1_PutString("\n\rNo version information from MK3Mag."); |
493 | else UART1_PutString("\n\rNo version information from MK3Mag."); |
- | 494 | ||
- | 495 | I2C_StopPolling = 0; // enable polling of heading |
|
492 | } |
496 | } |
Line 493... | Line 497... | ||
493 | 497 | ||
494 | 498 | ||
495 | //---------------------------------------------------------------- |
499 | //---------------------------------------------------------------- |
496 | void I2C1_UpdateCompass(void) |
500 | void I2C1_UpdateCompass(void) |
Line 497... | Line 501... | ||
497 | { |
501 | { |
Line 498... | Line 502... | ||
498 | static u32 TimerCompassUpdate = 0; |
502 | static u32 TimerCompassUpdate = 0; |
499 | 503 | ||
500 | if(I2C_State == I2C_OFF) return; |
504 | if((I2C_State == I2C_OFF) || (I2C_StopPolling)) return; |
501 | 505 |