//Maestro byte val; void setup() { SPI_initMaster(); // inicializar el maestro Serial.begin(9600); Serial.println("Estamos listos?"); } void loop() { val = SPI_transact(10); Serial.println(val); } void SPI_initMaster(){ DDRB |= (1<<PB2)|(1<<PB3)|(1<<PB5); //Configurar MOSI, SCK y SS pins como salida SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); //Habilitar SPI como Maestro } byte SPI_transact(byte data){ SPDR = data; while(!(SPSR & (1 << SPIF))); return SPDR; } //Esclavo byte val; void setup() { SPI_initSlave(); //Inicializar como esclavo Serial.begin(9600); Serial.println("Y empezamos"); } void loop() { val = SPI_transact(20); Serial.println(val); } void SPI_initSlave(){ DDRB |= (1<<PB4); //Configurar MISO como salida SPCR = (1<<SPE); //Habilitar SPI como esclavo } byte SPI_transact(byte data){ SPDR = data; while(!(SPSR & (1 << SPIF))); return SPDR; }