MKR1000 not workling with LedControl and MAX7221

Sure. I have 2 Max7221 in row and they work fine with an Arduino Nano and the code I've posted here. The only HW change between Nano and MKR1000 I've made is the integration of the level shift from 3.3V to 5V.

#include "LedControl.h"
#define VERBOSE_DEBUG 0

const int dummy = 0;

/*
 Now we need a LedControl to work with.
 ***** These pin numbers will probably not work with your hardware *****
 pin 12 is connected to the DataIn
 pin 11 is connected to the CLK
 pin 10 is connected to LOAD
*/

LedControl lc=LedControl(12,11,10,2);

//The setup function is called once at startup of the sketch
void setup(void) {

#ifdef VERBOSE_DEBUG
	  Serial.begin(9600);
	  while (!Serial) {
	    ; // wait for serial port to connect. Needed for native USB port only
	  }
	  Serial.println("Setup");
#endif

	//we have already set the number of devices when we created the LedControl
	int devices=lc.getDeviceCount();
	//we have to init all devices in a loop
	for(int address=0;address<devices;address++) {
		/*The MAX72XX is in power-saving mode on startup*/
		lc.shutdown(address,false);
		/* Set the brightness to a medium values */
		lc.setIntensity(address,8);
		/* and clear the display */
		lc.clearDisplay(address);
	}




}

void loop(void){

	lc.setRow(0,4,255);
	lc.setRow(1,5,255);

}

I also tested with a minimal example using the SPI Lib, of course now I use the MOSI & CLK Pin according to the Arduino device. But with the same result, working for Arduino Nano, but not with the MKR1000:

//#include <LedControl/src/LedControl.h>
#include <Arduino.h>
#include <SPI.h>
//LedControl lc=LedControl(12,11,10,2);

int maxDevices = 2;
byte spidata[16];
//int SPI_MOSI=12;
//int SPI_CLK=11;
//int SPI_CS=10;
int SPI_CS=7;

void setup()
{
	pinMode(SPI_CS,OUTPUT);
}


void loop()
{

	delay(2000);

	int numDevices = 2;

	if(numDevices<=0 || numDevices>8 )
		numDevices=8;

	maxDevices=numDevices;
	digitalWrite(SPI_CS,HIGH);
	delayMicroseconds(1);
	for(int i=0;i<maxDevices;i++) {
		spiTransfer(i,15,0);
	}



}

void spiTransfer(int addr, volatile byte opcode, volatile byte data) {
	//Create an array with the data to shift out
	int offset=addr*2;
	int maxbytes=maxDevices*2;

	for(int i=0;i<maxbytes;i++)
		spidata[i]=(byte)0;
	//put our device data into the array
	spidata[offset+1]=opcode;
	spidata[offset]=data;
	//enable the line
	digitalWrite(SPI_CS,LOW);
	delayMicroseconds(1);
	//Now shift out the data
	for(int i=maxbytes;i>0;i--)
	{
		//shiftOutMod(SPI_MOSI,SPI_CLK,MSBFIRST,spidata[i-1]);
		shiftOutSPI(spidata[i-1]);
	}
	//latch the data onto the display
	delayMicroseconds(1);
	digitalWrite(SPI_CS,HIGH);
}


void shiftOutSPI( byte dataToSend)
{
	SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));

	SPI.transfer(dataToSend);

	SPI.endTransaction();
}