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(); } }
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; }