Exemple #1
0
void TC0_IrqHandler(void) {
	// acknowledge interrupt
	tc_channel_interrupt_ack(&STEPPER_TC_CHANNEL);

	if(stepper_state != STEPPER_STATE_STOP) {
		stepper_set_next_timer(stepper_velocity);
		stepper_make_step();
	}

	if(stepper_state == STEPPER_STATE_STEPS ||
	   stepper_state == STEPPER_STATE_TARGET) {
		stepper_step_speedramp();
	} else if(stepper_state == STEPPER_STATE_DRIVE) {
		stepper_drive_speedramp();
	}
}
Exemple #2
0
void TC0_IrqHandler(void) {
	// acknowledge interrupt
	tc_channel_interrupt_ack(&ENCODER_TC_CHANNEL);

	if(led_is_on(LED_STD_RED)) {
		led_off(LED_STD_RED);
	} else {
		led_on(LED_STD_RED);
	}

	uint8_t encoder_value = PIO_Get(&pin_encoder_a);
	encoder_value |= (PIO_Get(&pin_encoder_b) << 1);

	int8_t add = encoder_table[encoder_value_last][encoder_value];
	encoder_count += add;
	encoder_count_external += add;
	encoder_value_last = encoder_value;
}