Arduino: Hardware SPI hangs, bit-bang does not I'm using FastLED with a custom board built around the ATMega32u4. When I set it to use Software SPI, everything works fine, but when I use hardware SPI it just hangs whenever it tries to write out the data (FastLED.show()).

I originally mocked this up on an Arduino Pro Micro and it worked fine there. That makes me think that it's a hardware issue but, as I mentioned, SPI output does work, but only when bit-banged. Which really doesn't make much sense.

I tested this by also just using the built in SPI classes and I get the same thing. No luck with hardware SPI.

Anyone else ever see something like this?

The schematic of my circuit is below.
According to ATmega32u4 datasheet, section 17.2.1 (SPI / SS Pin Functionality / Master Mode:


  If SS is configured as an input, it must be held high to ensure Master SPI operation.


In your circuit, SS pin (#8 on package), also labeled as "(SS/PCINT0) PB0", is left unconnected. 

Is it possible that PB0 is also configured as input somewhere in your program or libraries? In this case, it should be connected to Vcc.