Exemplo n.º 1
0
void activateTrigger(const actuator_t* const actuator_p)
{
	ioSetOutput(actuator_p->output_on);
	ioResetOutput(actuator_p->output_off);
	ioToggleOutput(actuator_p->output_toggle);
	setState(actuator_p->state_on);
	resetState(actuator_p->state_off);
	toggleState(actuator_p->state_toggle);
}
// _motorApply10 - Set PWM value for motor port #10
static void _motorApply10() {
	uint8_t value = motor10;
	// PWM values 126 and 128 do not give any meaningful motor impulse
	if (value > 128) {
		// Forward
		TIM4->CCR3 = (uint16_t)0;
		ioSetOutput(GPIOD, 8, 0);
		ioSetOutput(GPIOD, 7, 1);
		TIM4->CCR4 = (uint16_t)(value - 128);
	} else if (value <= 126) {
		// Reverse
		TIM4->CCR4 = (uint16_t)0;
		ioSetOutput(GPIOD, 7, 0);
		ioSetOutput(GPIOD, 8, 1);
		TIM4->CCR3 = (uint16_t)(127 - value);
	} else {
		// Stop - clear GPIOD 7 and 8
		TIM4->CCR3 = (uint16_t)0;
		TIM4->CCR4 = (uint16_t)0;
		GPIOD->BRR = 0x0180;
	}
	TIM4->CCMR2 = (uint16_t)0x6868;
}
// _motorApply1 - Set PWM value for motor port #1
static void _motorApply1() {
	uint8_t value = motor1;
	// PWM values 126 and 128 do not give any meaningful motor impulse
	if (value > 128) {
		// Forward
		TIM4->CCR1 = (uint16_t)0;
		ioSetOutput(GPIOD, 4, 0);
		ioSetOutput(GPIOD, 3, 1);
		TIM4->CCR2 = (uint16_t)(value - 128);
	} else if (value <= 126) {
		// Reverse
		TIM4->CCR2 = (uint16_t)0;
		ioSetOutput(GPIOD, 3, 0);
		ioSetOutput(GPIOD, 4, 1);
		TIM4->CCR1 = (uint16_t)(127 - value);
	} else {
		// Stop - clear GPIOD 3 and 4
		TIM4->CCR1 = (uint16_t)0;
		TIM4->CCR2 = (uint16_t)0;
		GPIOD->BRR = 0x0018;
	}
	TIM4->CCMR1 = (uint16_t)0x6868;
}