 	// Are we moving to next segment?
 	if (pwm_i == 0) {
 		if (col_i == 0) {
-			// Busy-write
+			// Switch the row on row driver first and
+			// postpone turning on the screen.
+			spi_row_change = true;
 			SPDR = 1 << row_i;
-			while(!(SPSR & (1<<SPIF)));
-
-			// Latch the written row info
-			digitalWrite(PIN_ROW_LATCH, LOW);
-			digitalWrite(PIN_ROW_LATCH, HIGH);
-
 			pick_column();
-			screen_on();
 		} else {
 			// Switch column and turn on the screen.
 			pick_column();

volatile uint8_t may_flip = 0;
volatile uint16_t pwm_lengths[] = { 0x30, 0x10, 0x06 }; // PWM cycle lengths
uint8_t pwm_i = 0; // Current PWM cycle

// Hardware configuration
#define PIN_COL_BIT0 A2

	pinMode(MOSI, OUTPUT);
	pinMode(SCK, OUTPUT);

	// Initialize serial via USB
	Serial.begin(19200);

	// Configure SPI as master, clock rate fck/16, enable interrupts	
	SPCR = _BV(SPIE) | _BV(SPE) | _BV(MSTR) | _BV(SPR0);
	
	// Timer magic
	cli();
