#include <servo.h>
#include <powswitch.h>
#include <engine.h>
+#include <adc.h>
#include <uart_nozen.h>
can_msg_t msg;
+unsigned int cmu_buff[30];
+unsigned int cmu_buff_p = 0;
+
+struct Color{
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+ unsigned char d_red;
+ unsigned char d_green;
+ unsigned char d_blue;
+} ;
+
+struct Color color;
+
+
+
+
void dummy_wait(void)
{
init_pow_switch();
init_engine_A();
- init_engine_B();
+ engine_A_en(ENGINE_EN_ON);
+ engine_A_dir(ENGINE_DIR_FW);
+ engine_A_pwm(20);
+ pow_switch_on();
+ //init_engine_B();
UART_init( UART0,UART0_ISR, 19200, UART_BITS_8, UART_STOP_BIT_1, UART_PARIT_OFF, 0);
UART_init( UART1,UART1_ISR, 115100, UART_BITS_8, UART_STOP_BIT_1, UART_PARIT_OFF, 0);
}
+void cmu_parse_message(void)
+{
+ unsigned int val = 0;
+ unsigned int i = 0;
+ unsigned int iter = 1;
+ unsigned int colors[6];
+
+
+
+ for (i = 0; i < 6; i++)
+ {
+ colors[i] = 0;
+ }
+
+
+
+ if (cmu_buff[0] != 'S') return;
+ if (cmu_buff[1] != ' ') return;
+
+
+
+ for ( val = cmu_buff_p ; val > 0 ; --val)
+ {
+
+ if ((cmu_buff[val] >= '0' ) & (cmu_buff[val] <= '9' )) break;
+
+
+ }
+
+
+ for (i =0; i < 6 ;i++)
+ {
+ iter = 1;
+
+ for ( ; val > 0 ; --val)
+ {
+ if (cmu_buff[val] >= '0')
+ {
+ colors[i] += (cmu_buff[val] - '0') * iter ;
+ iter *= 10;
+ }
+ else
+ {
+ --val;
+ break;
+ }
+ }
+ }
+
+
+
+
+
+ color.red = colors[5];
+ color.green = colors[4];
+ color.blue = colors[3];
+ color.d_red = colors[2];
+ color.d_green =colors[1];
+ color.d_blue =colors[0];
+}
+
+
+
+
void cmu_set_param(void)
{
char param[] = "CR 18 44\r";
}
-char cmu_buff[30];
-int cmu_buff_p = 0;
int cmu_ack(void)
{
int i =0;
for ( i = 0; i <= cmu_buff_p ; i++)
{
- if (cmu_buff[i] == 'N') return 2;
- if (cmu_buff[i] == 'A') return 1;
+ if (cmu_buff[i] == 'N') { cmu_buff_p = 0; return 2;}
+ if (cmu_buff[i] == 'A') { cmu_buff_p = 0; return 1;}
}
+ cmu_buff_p = 0;
return 2;
}
++cmu_buff_p;
int cmu_ack_gm()
{
-
if (cmu_timeout < time_ms) return 2;
while (UART_new_data(UART1))
{
{
write_UART_data( UART0, cmu_buff[i]);
- if (cmu_buff[i] == 'N') return 2;
- if (cmu_buff[i] == 'A') return 1;
+ if (cmu_buff[i] == 'N') { cmu_buff_p = 0; return 2;}
+ if (cmu_buff[i] == 'A') { cmu_buff_p = 0; return 1;}
}
-
+ cmu_buff_p = 0;
return 2;
}
++cmu_buff_p;
}
+void atoim(unsigned int val)
+{
+ write_UART_data( UART0, ' ' );
+ write_UART_data( UART0, (val / 100 + 48) );
+ write_UART_data( UART0, ((val % 100) / 10 + 48) );
+ write_UART_data( UART0, ((val % 100) % 10 + 48) );
+
+}
+
-void cmu_gm(void)
+int cmu_gm(void)
{
int test;
-// test = UART_test_err(UART1);
-//
-// if(test == -1)
-// {
-// deb_led_on(LEDY);
-// while(1);
-// }
-//
-// if(test == -2)
-// {
-// deb_led_on(LEDB);
-// deb_led_on(LEDY);
-// while(1);
-// }
if (UART_new_data(UART1))
{
test = read_UART_data(UART1);
- write_UART_data( UART0, test);
+ if (test == '\r')
+ {
+ if (cmu_buff_p < 13) // if recieved chars is not full message
+ {
+ cmu_buff_p = 0;
+ //return 2;
+ }
+
+ cmu_parse_message();
+
+ atoim(color.red );
+ atoim(color.green );
+ atoim(color.blue );
+ atoim(color.d_red );
+ atoim(color.d_green );
+ atoim(color.d_blue );
+ write_UART_data( UART0, '\n');
+
+ cmu_buff_p = 0;
+ }
+ else
+ {
+ cmu_buff[cmu_buff_p] = test;
+ write_UART_data( UART0, cmu_buff[cmu_buff_p]);
+ ++cmu_buff_p;
+ }
}
+ return 0;
}
set_servo(0, 0x80);
set_servo(1, 0x80);
set_servo(2, 0x80);
-
- engine_A_dir(ENGINE_DIR_BW);//FW);
- engine_B_dir(ENGINE_DIR_FW);
- engine_A_en(ENGINE_EN_ON);
- engine_B_en(ENGINE_EN_ON);
- engine_A_pwm(70);
- engine_B_pwm(70);
-
-
int state = 0;
int ret =0;
while(1)
{
- // write_UART_data( UART0, 48 + state);
+
+ if (UART_new_data(UART0))
+ {
+ engine_A_en(ENGINE_EN_OFF);
+ engine_A_pwm(0);
+ }
+
led_blik();
cmu_set_param();
state = 2;
cmu_timeout = time_ms + 400;
- cmu_buff_p = 0;
+ //cmu_buff_p = 0;
break;
case 2:
cmu_set_gm();
state = 4;
cmu_timeout = time_ms + 400;
- cmu_buff_p = 0;
+ //cmu_buff_p = 0;
break;
case 4:
if (ret == 2) state = 9;
break;
- case 5: cmu_gm();
+ case 5:
+ ret = cmu_gm();
+ deb_led_on(LEDY);
+ if(ret == 2) state = 9;
break;
{
write_UART_data( UART1, read_UART_data(UART0));
}*/
+// test = UART_test_err(UART1);
+//
+// if(test == -1)
+// {
+// deb_led_on(LEDY);
+// while(1);
+// }
+//
+// if(test == -2)
+// {
+// deb_led_on(LEDB);
+// deb_led_on(LEDY);
+// while(1);
+// }