Rainbow Electronics ATmega3290P_V User Manual

Page 156

Advertising
background image

156

ATmega329/339/649/659

2552H–AVR–11/06

The following code examples show how to initialize the SPI as a Slave and how to per-
form a simple reception.

Note:

1. See “About Code Examples” on page 8.

Assembly Code Example

(1)

SPI_SlaveInit:

; Set MISO output, all others input

ldi

r17,(1<<DD_MISO)

out

DDR_SPI,r17

; Enable SPI

ldi

r17,(1<<SPE)

out

SPCR,r17

ret

SPI_SlaveReceive:

; Wait for reception complete

sbis

SPSR,SPIF

rjmp

SPI_SlaveReceive

; Read received data and return

in

r16,SPDR

ret

C Code Example

(1)

void

SPI_SlaveInit(void)

{

/* Set MISO output, all others input */

DDR_SPI = (1<<DD_MISO);

/* Enable SPI */

SPCR = (1<<SPE);

}

char

SPI_SlaveReceive(void)

{

/* Wait for reception complete */

while

(!(SPSR & (1<<SPIF)))

;

/* Return Data Register */

return

SPDR;

}

Advertising