Here is an app note from Atmel describing hoe to use the SPI module on their XMEGA microcontrollers. Also provided are source code examples for implementing both interrupt driven SPI communication and the polled method for slave and master devices.
SPI is a full duplex interface, and at a low cost enabling high-speed communication between master and slave. SPI does not have a specific higher-level protocol, which means there is almost no overhead. The drawback is that there is no acknowledgement and flow control, and the master doesn’t even have to be aware of the slave’s presence.