Subversion Repositories NaviCtrl

Rev

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