 
 ISR(TIMER1_COMPA_vect)
 {
-	// Force screen off if not yet happened (force OC1A on)
-	TCCR1A = (1 << COM1A1);
-	TCCR1C = (1 << FOC1A);
+	// Screen is off when we hit here (OC1A has been set LOW)
   
 	// Load new data to LED driver
 	digitalWrite(PIN_COL_LATCH, HIGH);

		digitalWrite(PIN_COL_BIT0, col_i & 0b001);
      	}

	// Main screen turn on! (force OC1A on)
	TCCR1A = (1 << COM1A1) | (1 << COM1A0);
	TCCR1C = (1 << FOC1A);
  
	// Say we want to turn off when we hit the target even if interrupt doesn't run
	TCCR1A = (1 << COM1A1);

	// Restart timer counter
	TCNT1 = 0;
	
	// Set run length
	OCR1A = pwm_lengths[pwm_i];
	
	/* After turning on the screen, we have "plenty" of CPU cycles
	 * to spend. Preparing a new segment to display.

	// Timer magic
	cli();
	TCCR1A = 0;
	TCCR1B = _BV(CS11) | _BV(CS10); // Clock divider 64, 64/16e6 = 40µs tick
	TCNT1 = 0; // Set timer counter initial value (16 bit value)
	TIMSK1 = _BV(OCIE1A); // Go to interrupt vector when timer reaches target
	OCR1A = 1; // Go to the interrupt vector ASAP after startup
	sei();
}

void loop() {
