Ejemplo n.º 1
0
// gsr-20130609-itjin: added 1ms function
void wait_1ms(u16 ms_1)
{
    s16 tmp_ms = ms_1 / 10;
    u16 delay_cnt = 0;

    // Wait over 10ms
    if(tmp_ms > 0)
    {
        wait_10ms(tmp_ms);
    }

    // Wait 1ms
    tmp_ms = ms_1 % 10;
	delay_cnt = 100;
	while(tmp_ms--)
	{
        delay_cnt = 100;
        while(delay_cnt--);
    };
}
Ejemplo n.º 2
0
/* ===================================================================*/
void set_Mode() {
	windowT win;

	operating_mode = MODE_BUTTON;
	clear_leds(TOPSIDE);
	LEDred_SetVal();
	LEDgreen_SetVal();
	LEDblue_SetVal();

	// button pressed
	while (! ButtonReleased) {
		// wait till button released
		wait_10ms(2);
	}

	if (ButtonLongPressed) {
		ButtonLongPressed = FALSE;

		// toggle low energy mode
		if (energy_mode == ENERGY_LOW || energy_mode == ENERGY_ALWAYS_ON) {
			if (energy_mode == ENERGY_LOW) {
				energy_mode = ENERGY_STANDARD;
			}
			set_led(TOPSIDE, LED1, WHITE);
			LEDred_ClrVal();
			LEDgreen_ClrVal();
			LEDblue_ClrVal();
			oled_setState(OLED_ON);
		} else {
			energy_mode = ENERGY_LOW;
			set_led(TOPSIDE, LED1, YELLOW);
			LEDred_ClrVal();
			LEDgreen_ClrVal();
			oled_setState(OLED_OFF);
		}
		write_ledColumn(TOPSIDE);
		wait_10ms(100);
		clear_leds(TOPSIDE);
		LEDred_SetVal();
		LEDgreen_SetVal();
		LEDblue_SetVal();
		write_ledColumn(TOPSIDE);
		wait_ledColumn();

		ButtonReleased = FALSE;
		ButtonPressed = FALSE;
		ButtonLongPressed = FALSE;		
		
	} else {
		// start/stop trip
		ButtonPressed = FALSE;
		ButtonReleased = FALSE;
		
		if (tripMode == TRIP_STOPPED) {
			// stopped -> start trip
			tripMode = TRIP_STARTED;
			chronoMode = TRIP_STARTED;
			set_led(TOPSIDE, LED1, GREEN);
			LEDgreen_ClrVal();
		} else {
			// started (or paused) -> stop trip
			tripMode = TRIP_STOPPED;
			chronoMode = TRIP_STOPPED;
			set_led(TOPSIDE, LED1, RED);
			LEDred_ClrVal();
			// save the configuration and data
			set_params();
			save_params();
		}
		write_ledColumn(TOPSIDE);
		
		wait_10ms(100);
		if (ButtonPressed) {
			// reset trip
			set_led(TOPSIDE, LED1, BLUE);
			LEDblue_ClrVal();
			LEDred_SetVal();
			LEDgreen_SetVal();
			write_ledColumn(TOPSIDE);
			tripDistance = 0.0;
			maxSpeed = 0.0;
			avgSpeed = 0.0;
			tripElevationGain = 0.0;
			maxAltitude = 0.0;
			chronoTime = 0.0;
			tripTime = 0.0;
			while (! ButtonReleased) {
				// wait till button released
				wait_10ms(2);
			}
			ButtonPressed = FALSE;
			ButtonReleased = FALSE;
			ButtonLongPressed = FALSE;		
			wait_10ms(100);
		}
		clear_leds(TOPSIDE);
		write_ledColumn(TOPSIDE);
		wait_ledColumn();
	}
	operating_mode = NORMAL;
}
Ejemplo n.º 3
0
/*******************************************************************************
* Function Name  : main.
* Description    : main routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
int main(void)
{

	/* Initialize the Demo */
	bsp_init_rcc();

	bsp_init_gpio();
	bsp_init_interrupt();
#ifdef DEV_KIT_ADC_CONV_TEST
    bsp_init_adc();
    DMA_Initial();
#endif /* DEV_KIT_ADC_CONV_TEST */

#ifdef DEV_KIT_STEP_MOTOR_TEST
    step_motor_enable(DISABLE);
#endif /* DEV_KIT_STEP_MOTOR_TEST */

	register_timer_function(timer2ServiceFunction, timer2_event);
#ifdef DEV_KIT_STEP_MOTOR_TEST
    register_timer_function(timer3ServiceFunction, isr_left_motor_event);
    register_timer_function(timer4ServiceFunction, isr_right_motor_event);    
#endif /* DEV_KIT_STEP_MOTOR_TEST */
	register_rtc_function(rtcServiceFunction, rtc_event);

	bsp_init_timer2();
#ifdef DEV_KIT_STEP_MOTOR_TEST
    bsp_init_timer3(DISABLE);
    bsp_init_timer4(DISABLE);    
#endif /* DEV_KIT_STEP_MOTOR_TEST */

	bsp_init_irq_usart1();
	//bsp_init_dma_usart1();

	// 10msec
	wait_10ms(1);

	// User LED ON
	bsp_led_on(ledUser);
#ifdef DEV_KIT_LED_TEST
    //led_rotate_test();
    s_satus_led_flag = 1; // Go status led
#endif /* DEV_KIT_LED_TEST */
	welcome();
	
	usart1_transmit_string("\r\n*****************************************************************************\r\n");	
	usart1_transmit_string("User led ( on )\r\n");
	usart1_transmit_string("Initialize gpio service.\r\n");
	usart1_transmit_string("Start USART1 service on mode interrupt.\r\n");
	usart1_transmit_string_format("BaudRate = %d, Databit = %dbit, StopBits = %d, Parity = no, FlowControl = none\r\n", 115200, 8, 1);
	usart1_transmit_string("\r\n*****************************************************************************\r\n");		

	display_menu();

	usart1_tx_proc();

	
#ifdef DEV_KIT_I2C_TOUCH_KEY_TEST
    i2c_GPIO_Config();
#endif /* DEV_KIT_I2C_TOUCH_KEY_TEST */

	while( 1 )
	{
#ifdef DEV_KIT_I2C_TOUCH_KEY_TEST
        i2c_Test_Example();
#endif /* DEV_KIT_I2C_TOUCH_KEY_TEST */

        
#ifdef DEV_KIT_ADC_CONV_TEST

//        test_func_adc_conv();
#endif /* DEV_KIT_ADC_CONV_TEST */
        
		if( run_menu_selection() != 0 )
			display_menu();

        motor_all(3000, ACT_GO_FORWARD, NOT_ADJUSMENT); // 300cm
        wait_1ms(2000); // 5seconds

        motor_all(3000, ACT_GO_BACKWARD, NOT_ADJUSMENT);
        wait_1ms(2000);

        motor_all(1000, ACT_GO_FORWARD, ADJUSMENT_FRONT);
        wait_1ms(2000);
        
        robot_turn(TURN_LEFT, TURN_90_DEGREE);
        wait_1ms(2000);

        robot_turn(TURN_RIGHT, TURN_90_DEGREE);
        wait_1ms(2000);
        
        motor_all(10000, ACT_GO_FORWARD, SETTING_ONLY);
        while((g_left_mot.step_count <= MM_TO_STEP(700)) || (g_right_mot.step_count <= MM_TO_STEP(700)))
        {
            if(300 < robot_read_sensor(SENSOR_TOP_AD))
            {
                motor_stop(STOP_EMERGENCY);
                break;
            }
        }
        motor_stop(STOP_NORMAL);
        wait_1ms(3000);

        test_func_robot_turn(TURN_LEFT, 200);
        wait_1ms(3000);

        test_func_robot_smooth_turn(TURN_LEFT);
        wait_1ms(5000);
	}

}