Esempio n. 1
0
//! [callback_funcs]
static void tcc_callback_to_change_duty_cycle(
		struct tcc_module *const module_inst)
{
	static uint32_t delay = 10;
	static uint32_t i = 0;

	if (--delay) {
		return;
	}
	delay = 10;
	i = (i + 0x0800) & 0xFFFF;
	tcc_set_compare_value(module_inst,
			(enum tcc_match_capture_channel)
					(TCC_MATCH_CAPTURE_CHANNEL_0 + CONF_PWM_CHANNEL),
			i + 1);
}
Esempio n. 2
0
//! [setup]
static void configure_tcc(void)
{
	//! [setup_config]
	struct tcc_config config_tcc;
	//! [setup_config]
	//! [setup_config_defaults]
	tcc_get_config_defaults(&config_tcc, CONF_PWM_MODULE);
	//! [setup_config_defaults]

	//! [setup_change_config]
	config_tcc.counter.clock_prescaler = TCC_CLOCK_PRESCALER_DIV1024;
	config_tcc.counter.period = 8000;
	config_tcc.compare.wave_generation = TCC_WAVE_GENERATION_SINGLE_SLOPE_PWM;
	config_tcc.compare.match[CONF_PWM_CHANNEL] = (8000 / 4);
	//! [setup_change_config]

	//! [setup_change_config_pwm]
	config_tcc.pins.enable_wave_out_pin[CONF_PWM_OUTPUT] = true;
	config_tcc.pins.wave_out_pin[CONF_PWM_OUTPUT]        = CONF_PWM_OUT_PIN;
	config_tcc.pins.wave_out_pin_mux[CONF_PWM_OUTPUT]    = CONF_PWM_OUT_MUX;
	//! [setup_change_config_pwm]

	//! [setup_set_config]
	tcc_init(&tcc_instance, CONF_PWM_MODULE, &config_tcc);
	//! [setup_set_config]

	//! [setup_set_buffering]
	tcc_set_compare_value(&tcc_instance,
			(enum tcc_match_capture_channel)CONF_PWM_CHANNEL, 8000*3/4);
	tcc_enable_circular_buffer_compare(&tcc_instance,
			(enum tcc_match_capture_channel)CONF_PWM_CHANNEL);
	//! [setup_set_buffering]

	//! [setup_enable]
	tcc_enable(&tcc_instance);
	//! [setup_enable]
}
Esempio n. 3
0
void setHitecServoAngle(float angle)
{
	uint32_t angle_ = (angle*angle2pwm_factor)+SERVO_ZERO_PULSE;
	printf("%d",(int)(angle_*1000));	
	tcc_set_compare_value(&tcc_instance,2,angle_);
}
Esempio n. 4
0
void setRed(uint16_t red)
{
	tcc_set_compare_value(&tcc0, (enum tcc_match_capture_channel) (3), red);
}
Esempio n. 5
0
void setWhite(uint16_t white)
{
	tcc_set_compare_value(&tcc0, (enum tcc_match_capture_channel) (2), white);
}
Esempio n. 6
0
void setRightRGB(uint16_t red, uint16_t green, uint16_t blue)
{
	tcc_set_compare_value(&tcc0, (enum tcc_match_capture_channel) (1), green);
	tcc_set_compare_value(&tcc2, (enum tcc_match_capture_channel) (0), red);
	tcc_set_compare_value(&tcc2, (enum tcc_match_capture_channel) (1), blue);
}
Esempio n. 7
0
void set_pwm(int HWtimer, int channel, int value){
	tcc_set_compare_value(&tcc_instance[HWtimer], channel, value);
}