Ejemplo n.º 1
0
Archivo: Encoder.c Proyecto: ddeo/sdp
int main(void) {
// Initialize the UART,Timers, and I2C1v
    Board_init();
    Serial_init();
    Encoder_init();
    float angle;
    while(1){
        if(Encoder_isLockPressed() || Encoder_isZeroPressed()){
            Encoder_runSM();
//            if(useZeroAngle){
//                angle = Encoder_getAverageAngle();
//                while(!Serial_isTransmitEmpty());
//                printf("Angle: %.2f\n", angle);
//            }
//            else
//                zeroAngle = Encoder_getZeroAngle();
//
//            useZeroAngle = FALSE;
//            zeroFlag = FALSE;
        }
        
    }

    return (SUCCESS);
}
Ejemplo n.º 2
0
int main(void) {
// Initialize the UART,Timers, and I2C1v
    Board_init();
    Board_configure(USE_SERIAL | USE_LCD | USE_TIMER);
    dbprint("Starting encoders...\n");
    I2C_init(I2C_ID, I2C_CLOCK_FREQ);
    Encoder_init();
    Interface_init();
    Timer_new(TIMER_TEST, PRINT_DELAY );
    while (!Timer_isExpired(TIMER_TEST)) {
        Encoder_runSM();
    }

    // Not working?
    //Encoder_setZeroPitch();
    //Encoder_setZeroYaw();

    dbprint("Encoders initialized.\n");
    DELAY(STARTUP_DELAY)
    Timer_new(TIMER_TEST, PRINT_DELAY );

    bool clearedCalibrateMessage = TRUE;
    Timer_new(TIMER_TEST2,CALIBRATE_HOLD_DELAY);
    //Interface_waitLightOnTimer(CALIBRATE_HOLD_DELAY);
    Interface_waitLightOnTimer(CALIBRATE_HOLD_DELAY);

    LCD_setPosition(0,0);
    dbprint("Encoders:\n");
    while(1) {
        if (Timer_isExpired(TIMER_TEST)) {
            LCD_setPosition(1,0);
            dbprint(" P=%.1f,\n Y=%.1f\n",Encoder_getPitch(), Encoder_getYaw());

            Timer_new(TIMER_TEST, PRINT_DELAY );
        }
        if (Interface_isOkPressed() && Timer_isExpired(TIMER_TEST2)) {
            Encoder_setZeroPitch();
            Encoder_setZeroYaw();
            LCD_setPosition(3,0);
            dbprint("Zeroed encoders.\n");
            clearedCalibrateMessage = FALSE;
            Interface_waitLightOnTimer(CALIBRATE_HOLD_DELAY);
            Interface_readyLightOff();
            Timer_new(TIMER_TEST2,CALIBRATE_HOLD_DELAY);
        }
        if (Timer_isExpired(TIMER_TEST2) && !clearedCalibrateMessage) {
            clearedCalibrateMessage = TRUE;
            LCD_setPosition(3,0);
            dbprint("                     ");
            Interface_readyLightOn();
        }
        Encoder_runSM();
        Interface_runSM();
    }

    return (SUCCESS);
}
Ejemplo n.º 3
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
	RCC_ClocksTypeDef RCC_Clocks;


  /* SysTick end of count event each 10ms */
  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);
	
	/********************输出 初始化 ******************/
	PWM_init();
  
	
	STM324xG_LCD_Init();	
  LCD_Clear(BLACK);/* Clear the LCD */
  LCD_SetBackColor(BLACK);/* Set the LCD Back Color */  
  LCD_SetTextColor(WHITE);/* Set the LCD Text Color */	
  LCD_DisplayStringLine(LINE(0), "  Hello jaja. I'm xiaohei01");
	
	
	/********************输入 初始化 ******************/
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/*!< 3 bits for pre-emption priority 1 bits for subpriority */	
	
	Encoder_init();	//encoder tim8	
	usart_init();//通信COM usart2 115200
	
	IMU_init();	
	if (get_mode()==1)
	{
		IMU_BE10();
	}
	
	KEY_init();		
	AD_Init();	
	GPS_int();

	TIM2_Configuration();
	printf("uart init OK 2 \r\n");

	
while(1)
  {


	if(LCD_flag)
	{
		LCD_flag=0;
		lcd_refresh();
	}


  }  
}
Ejemplo n.º 4
0
int main(void) {
// Initialize the UART,Timers, and I2C1v
    Board_init();
    Board_configure(USE_SERIAL | USE_LCD | USE_TIMER);
    dbprint("Starting encoders...\n");
    I2C_init(ENCODER_I2C_ID, I2C_CLOCK_FREQ);
    if (Encoder_init() != SUCCESS) {
        dbprint("Failed init. encoder\n");
        return FAILURE;
    }
    Timer_new(TIMER_TEST, PRINT_DELAY );
    while (!Timer_isExpired(TIMER_TEST)) {
        Encoder_runSM();
    }

    // Not working?
    //Encoder_setZeroPitch();
    //Encoder_setZeroYaw();

    dbprint("Encoders initialized.\n");
    DELAY(STARTUP_DELAY);
    Timer_new(TIMER_TEST, PRINT_DELAY );


    LCD_setPosition(0,0);
    dbprint("Encoders:\n");
    while(1){
        if (Timer_isExpired(TIMER_TEST)) {
            LCD_setPosition(1,0);
            dbprint(" P=%.1f,\n Y=%.1f\n",Encoder_getPitch(), Encoder_getYaw());
            /*dbprint("Encoders:\n P=%d,\n Y=%d\n",
                readDevice(SLAVE_PITCH_READ_ADDRESS,SLAVE_PITCH_WRITE_ADDRESS),
                readDevice(SLAVE_YAW_READ_ADDRESS,SLAVE_YAW_WRITE_ADDRESS));*/
            /*dbprint("Encoders:\n P=%.1f,\n Y=%.1f\n",
                readDevice(SLAVE_PITCH_READ_ADDRESS,SLAVE_PITCH_WRITE_ADDRESS) * DEGREE_PER_NUMBER,
                readDevice(SLAVE_YAW_READ_ADDRESS,SLAVE_YAW_WRITE_ADDRESS) * DEGREE_PER_NUMBER);*/

            
            Timer_new(TIMER_TEST, PRINT_DELAY );
        }
        Encoder_runSM();
    }

    return (SUCCESS);
}
Ejemplo n.º 5
0
Archivo: Compas.c Proyecto: sdajani/sdp
/**
 * Function: initMasterSM
 * @return None.
 * @remark Initializes the master state machine for the command canter.
 * @author David Goodman
 * @date 2013.03.10  */
void initMasterSM() {
    Board_init();
    Serial_init();
    Timer_init();

    // CC buttons
    LOCK_BUTTON_TRIS = 1;
    ZERO_BUTTON_TRIS = 1;

    Encoder_init();

    #ifdef USE_XBEE
    Xbee_init();
    #endif

    #ifdef USE_NAVIGATION
    Navigation_init();
    #endif

    #ifdef USE_ENCODERS
    I2C_init(I2C_BUS_ID, I2C_CLOCK_FREQ);
    #endif


    #ifdef USE_ACCELEROMETER
    //printf("Initializing accelerometer...\n");
    if (Accelerometer_init() != SUCCESS) {
        printf("Failed to initialize the accelerometer.\n");
        //return;
    }
    //printf("Initialized the accelerometer.\n");

    // Configure ports as outputs
    LED_N_TRIS = OUTPUT;
    LED_S_TRIS = OUTPUT;
    LED_E_TRIS = OUTPUT;
    LED_W_TRIS = OUTPUT;


    Timer_new(TIMER_ACCELEROMETER, LED_DELAY );
    #endif
}