Rev 733 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 733 | Rev 790 | ||
---|---|---|---|
Line 11... | Line 11... | ||
11 | #include "spi_slave.h" |
11 | #include "spi_slave.h" |
12 | #include "triggerlog.h" |
12 | #include "triggerlog.h" |
Line 13... | Line 13... | ||
13 | 13 | ||
14 | FromCamCtrl_t FromCamCtrl; |
14 | FromCamCtrl_t FromCamCtrl; |
- | 15 | ToCamCtrl_t ToCamCtrl; |
|
- | 16 | FromLaserCtrl_t FromLaserCtrl; |
|
- | 17 | ToLaserCtrl_t ToLaserCtrl; |
|
15 | ToCamCtrl_t ToCamCtrl; |
18 | |
- | 19 | u16 CamCtrlTimeout = 25000; |
|
Line 16... | Line 20... | ||
16 | u16 CamCtrlTimeout = 25000; |
20 | u16 LaserCtrlTimeout = 5000; |
17 | 21 | ||
18 | void InitCamCtrl(void) |
22 | void InitCamCtrl(void) |
19 | { |
23 | { |
Line 101... | Line 105... | ||
101 | ToCamCtrl.CamCommand = CAM_CMD_SWITCH_ON | (ToCamCtrl.CamCommand & (CAM_CMD_REC_ON | CAM_CMD_REC_OFF)); |
105 | ToCamCtrl.CamCommand = CAM_CMD_SWITCH_ON | (ToCamCtrl.CamCommand & (CAM_CMD_REC_ON | CAM_CMD_REC_OFF)); |
102 | timing = 66; // 66ms = 15Hz |
106 | timing = 66; // 66ms = 15Hz |
103 | } |
107 | } |
104 | else timing = 11; // try again in 11ms |
108 | else timing = 11; // try again in 11ms |
105 | } |
109 | } |
- | 110 | ||
- | 111 | void LaserCtrl_UpdateData(u8* pRxBuffer, u8 RxBufferSize) |
|
- | 112 | { // if crc is ok and number of byte are matching |
|
- | 113 | memcpy((u8 *)&FromLaserCtrl, pRxBuffer, sizeof(FromLaserCtrl)); |
|
- | 114 | DebugOut.Analog[13] = FromLaserCtrl.Distance; |
|
- | 115 | if((FromLaserCtrl.LaserStatus & LASER_DATA_OK) && (FromLaserCtrl.Distance == 0)) FromLaserCtrl.Distance = 1; // just to mark that the value is active (0 -> not connected) |
|
- | 116 | LaserCtrlTimeout = 3000; |
|
- | 117 | } |
|
- | 118 | ||
- | 119 | ||
- | 120 | void LaserCtrl_GetData(u8 timeout) |
|
- | 121 | { |
|
- | 122 | static u8 timing = 250; |
|
- | 123 | ||
- | 124 | if(timing) |
|
- | 125 | { |
|
- | 126 | timing--; |
|
- | 127 | } |
|
- | 128 | else |
|
- | 129 | // try to catch the I2C buffer within timeout ms |
|
- | 130 | if(I2CBus_LockBuffer(I2C0, timeout)) |
|
- | 131 | { |
|
- | 132 | u8 RxBytes = 3;//sizeof(FromLaserCtrl); |
|
- | 133 | // initiate transmission |
|
- | 134 | I2CBus_Transmission(I2C0, LASER_SLAVE_ADDRESS, &ToLaserCtrl, sizeof(ToLaserCtrl), &LaserCtrl_UpdateData, RxBytes); |
|
- | 135 | timing = 66; // 66ms = 15Hz |
|
- | 136 | } |
|
- | 137 | else timing = 11; // try again in 11ms |
|
- | 138 | } |
|
- | 139 |