Exemplo n.º 1
0
int main (void)
{
	InitUart();	//Init uart
	initInput(); //Init interrupt to start button, stop button and speed sensor	
	initMotorPWM(); //Init Fast PWM on Timer 0 (Pin PE1)
	initSpeedTimer(); //Init Timer 1 (16bit normal mode)
	initCurrentADC(); //Init ADC on PC5
	
	
	//Init speed array
	for (int i = 0; i<(SPEED_ARRAY_SIZE); i++)
	{
		speedArray[i]=65535;
	}
	
	while (1)
	{
		//Switch to stop state if something is rotten
		Protection(&Sm_State, &speed);
		
		switch (Sm_State)
		{
			case STATE_STOP:
			Stop(&motor);
			break;
				
			case STATE_RAMP_INIT:
			RampInit(&Sm_State, &motor);
			break;
				
			case STATE_RAMP_SEARCH:
			RampSearch(&Sm_State, &motor, &speed, &lastSpeed);
			break;
				
			case STATE_ACC:
			Acc(&Sm_State,&motor, speedArray);
			break;
				
			case STATE_COAST:
			Coast(&Sm_State, &motor, &speed);
			break;
				
			default:
			Sm_State = STATE_STOP;
			break;
		}
		
	}

}
Exemplo n.º 2
0
void Motor::Init( int d1Pin, int d2Pin, int enablePin )
{
    if (( m_d1 = tpu_request_channel( 0, d1Pin )) == NULL )
    {
        LOG_ERROR(( "Unable to get TPU pin %d for %s Motor D1", d1Pin, m_name ));
        return;
    }
    if (( m_d2 = tpu_request_channel( 0, d2Pin )) == NULL )
    {
        LOG_ERROR(( "Unable to get TPU pin %d for %s Motor D2", d2Pin, m_name ));
        return;
    }
    if (( m_enable = tpu_request_channel( 0, enablePin )) == NULL )
    {
        LOG_ERROR(( "Unable to get TPU pin %d for %s Motor Enable", enablePin, m_name ));
        return;
    }
    SetSpeed( 0 );
    SetFrequency( MOTOR_DEFAULT_PWM_FREQ );

    Coast();

} // Init