   
   virtual void setup()
   {
-    // TODO: attach GT3 to hardware clock isr that sets clock to EXT
-    gt_attach_interrupt(GT3, clock_isr, CHANGE);
+    gt_attach_interrupt(GT3, clock_ext_isr, CHANGE);
     gt_attach_interrupt(GT4, reset_isr, RISING);
   }
 

    last_stage = 0;
    last_diradd_mode = false;
    last_reverse = false;

    // draw top line
    display->draw_du_logo_sm(0, 0, DUINO_SSD1306::White);


ENCODER_ISR(interface->encoder);

void clock_ext_isr()
{
  if(!seq_values.clock_ext)
  {
    interface->set_clock_ext();
  }

  clock_isr();
}

void clock_isr()
{
  clock_gate = seq_values.clock_ext ? function->gt_read_debounce(GT3) : !clock_gate;
