Esempio n. 1
0
void TIM3_IRQHandler()
{
	// Checks whether the TIM3 interrupt has occurred or not
	if (TIM_GetITStatus(TIM3, TIM_IT_Update))
	{
		// Read ADC value (10-bit PWM)
		adcValue = ADC_Read() >> 2;
		
		// Add audio effect
		if (effect & LOW_PASS)
		{
			adcValue = low_pass(adcValue);
		}
		if (effect & PITCH_UP)
		{
			adcValue = pitch_up(adcValue);
		}
		if (effect & PITCH_DOWN)
		{
			adcValue = pitch_down(adcValue);
		}
		
		// Write to PWM
		PWM_Write(adcValue);
		
		// Clears the TIM3 interrupt pending bit
		TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
	}
}
Esempio n. 2
0
//This function writes a speed to the left motor, which operates on PWM1 and PWM2
void LeftMotor_Write(int speed)
{    
    speed = 0-speed;
    
    if(speed > 0)
    {
        PWM_Write(PWM1, speed);
        PWM_WriteDir(PWM1, FORWARD);
    }
    else if(speed < 0)
    {
        PWM_WriteDir(PWM1, BACKWARD);
        PWM_Write(PWM1, 1023 + speed);
    }
    else
    {
        PWM_Write(PWM1, 0);
        PWM_WriteDir(PWM1, FORWARD);
    }
}
Esempio n. 3
0
void RightMotor_Write(int speed)
{
    speed = 0-speed;
    
    if(speed > 0)
    {
        PWM_Write(PWM2, speed);
        PWM_WriteDir(PWM2, FORWARD);
    }
    else if (speed < 0)
    {
        PWM_WriteDir(PWM2, BACKWARD);
        PWM_Write(PWM2, 1023 + speed);
    }
    else
    {
        PWM_Write(PWM2, 0);
        PWM_WriteDir(PWM2, FORWARD);
    }
    
}
Esempio n. 4
0
void dutyCycleTest(int testNum) {
    switch (testNum) {
        case 1:
            PWM_Write(PWM2+PWM1, 127);
            delayUs(2000000);            
            break;
        case 2:
            PWM_Write(PWM2+PWM1, 255);
            delayUs(2000000);
            break;
        case 3:
            PWM_Write(PWM2+PWM1, 511);
            delayUs(2000000);
            break;
        case 4:
            PWM_Write(PWM2+PWM1, 767);
            delayUs(2000000);
            break;
        case 5:
            PWM_Write(PWM2+PWM1, 1023);
            delayUs(2000000);
            break;
    }
}
Esempio n. 5
0
void motorsOff()
{
    PWM_Write(PWM1+PWM2, 0);
    PWM_WriteDir(PWM1+PWM2, FORWARD);    
}