1 #include <lpc21xx.h> /* LPC21xx definitions */
3 #include <periph/can.h>
7 #include <can_msg_def.h>
12 #include <uart_nozen.h>
21 unsigned int cmu_buff[30];
22 unsigned int cmu_buff_p = 0;
30 unsigned char star_bt = 0;
31 unsigned int time_start = 0;
33 void start_button(void)
37 if ((IO0PIN & (1<<START_PIN))==0) star_bt=0;
40 if (time_start == 0) time_start = time_ms + START_TIME;
42 IO0DIR &= ~ (1<<START_PIN);
44 if (time_ms > time_start)
46 time_start = time_ms + START_TIME;
48 if (IO0PIN & (1<<START_PIN))
60 msg.id = CAN_ROBOT_CMD;
63 //msg.data[0] = (~(IO0PIN >> START_PIN)) & 1;
64 while (can_tx_msg(&msg));
74 if (time_blink == 0) time_blink = time_ms + 500;
76 if (time_ms > time_blink)
79 time_blink = time_ms + 500;
83 void set_robobagr( unsigned char pwm)
86 unsigned int speed = 0;
100 // send_status(BAGR_STAT_POWERSAFE);
101 engine_A_en(ENGINE_EN_OFF); // engines off
103 engine_B_en(ENGINE_EN_OFF);
119 ///////////////////////////
125 if (cmu_timeout < time_ms) return 2;
126 while (UART_new_data(UART1))
128 int data = read_UART_data(UART1);
129 write_UART_data( UART0, data );
130 if (data == ':') return 1;
136 unsigned int fil_red[4];
137 unsigned int fil_green[4];
138 unsigned int fil_blue[4];
140 void cmu_parse_message(void)
142 unsigned int val = 0;
144 unsigned int iter = 1;
145 unsigned int colors[6];
147 for (i = 0; i < 6; i++)
152 if (cmu_buff[0] != 'S') return;
153 if (cmu_buff[1] != ' ') return;
155 for ( val = cmu_buff_p ; val > 0 ; --val)
157 if ((cmu_buff[val] >= '0' ) & (cmu_buff[val] <= '9' )) break;
160 for (i =0; i < 6 ;i++)
164 for ( ; val > 0 ; --val)
166 if (cmu_buff[val] >= '0')
168 colors[i] += (cmu_buff[val] - '0') * iter ;
179 fil_red[0] = fil_red[1];
180 fil_red[1] = fil_red[2];
181 fil_red[2] = fil_red[3];
182 fil_red[3] = colors[5];
183 color.red = (fil_red[3] * 4 + fil_red[2] * 3 + fil_red[1] * 2 + fil_red[0] * 1) / 10;
185 fil_green[0] = fil_green[1];
186 fil_green[1] = fil_green[2];
187 fil_green[2] = fil_green[3];
188 fil_green[3] = colors[4];
189 color.green = (fil_green[3] * 4 + fil_green[2] * 3 + fil_green[1] * 2 + fil_green[0] * 1) / 10;
191 fil_blue[0] = fil_blue[1];
192 fil_blue[1] = fil_blue[2];
193 fil_blue[2] = fil_blue[3];
194 fil_blue[3] = colors[3];
195 color.blue = (fil_blue[3] * 4 + fil_blue[2] * 3 + fil_blue[1] * 2 + fil_blue[0] * 1) / 10;
197 color.d_red = colors[2];
198 color.d_green =colors[1];
199 color.d_blue =colors[0];
205 void cmu_set_param(void)
207 char param[] = "CR 18 44\r";
210 for( i = 0 ; i < 9; i++){
211 write_UART_data( UART1, param[i] );
212 // write_UART_data( UART0, param[i] );
220 if (cmu_timeout < time_ms) return 2;
221 while (UART_new_data(UART1))
223 cmu_buff[cmu_buff_p]= read_UART_data(UART1);
224 // write_UART_data( UART0, cmu_buff[cmu_buff_p]);
226 if (cmu_buff[cmu_buff_p] == ':')
230 for ( i = 0; i <= cmu_buff_p ; i++)
232 if (cmu_buff[i] == 'N') { cmu_buff_p = 0; return 2;}
233 if (cmu_buff[i] == 'A') { cmu_buff_p = 0; return 1;}
244 void cmu_set_gm(void)
246 char param[] = "GM\r";
249 for( i = 0 ; i < 3; i++){
250 write_UART_data( UART1, param[i] );
251 //write_UART_data( UART0, param[i] );
258 if (cmu_timeout < time_ms) return 2;
259 while (UART_new_data(UART1))
261 cmu_buff[cmu_buff_p]= read_UART_data(UART1);
262 //write_UART_data( UART0, cmu_buff[cmu_buff_p]);
264 if (cmu_buff[cmu_buff_p] == '\r')
268 for ( i = 0; i <= cmu_buff_p ; i++)
270 //write_UART_data( UART0, cmu_buff[i]);
272 if (cmu_buff[i] == 'N') { cmu_buff_p = 0; return 2;}
273 if (cmu_buff[i] == 'A') { cmu_buff_p = 0; return 1;}
285 void atoim(unsigned int val)
287 write_UART_data( UART0, ' ' );
288 write_UART_data( UART0, (val / 100 + 48) );
289 write_UART_data( UART0, ((val % 100) / 10 + 48) );
290 write_UART_data( UART0, ((val % 100) % 10 + 48) );
294 unsigned int time_adc =0;
297 if (time_adc == 0) time_adc = time_ms + ADC_TIME;
299 if (time_ms > time_adc)
302 unsigned int data[4];
303 data[0] = adc_val[0];
304 data[1] = adc_val[1];
305 data[2] = adc_val[2];
306 data[3] = adc_val[3];
313 msg.data[0] = (data[0]>>8) & 0xFF;
314 msg.data[1] = data[0] & 0xFF;
315 msg.data[2] = (data[1]>>8) & 0xFF;
316 msg.data[3] = data[1] & 0xFF;
317 msg.data[4] = (data[2]>>8) & 0xFF;
318 msg.data[5] = data[2] & 0xFF;
319 msg.data[6] = (data[3]>>8) & 0xFF;
320 msg.data[7] = data[3] & 0xFF;
321 while (can_tx_msg(&msg));
324 time_adc = time_ms + ADC_TIME;
332 unsigned int val = 0;
334 if (color.red > 120) val |= 1;
335 if (color.blue > 120) val |= 1;
340 msg.data[0] = val & 0xFF;
341 while (can_tx_msg(&msg));
351 if (UART_new_data(UART1))
353 test = read_UART_data(UART1);
357 if (cmu_buff_p < 13) // if recieved chars is not full message
366 //write_UART_data( UART0, '\n');
372 cmu_buff[cmu_buff_p] = test;
373 write_UART_data( UART0, cmu_buff[cmu_buff_p]);