beautypg.com

Atmega8515(l) – Rainbow Electronics ATmega8515L User Manual

Page 125

background image

125

ATmega8515(L)

2512A–AVR–04/02

The following code examples show how to initialize the SPI as a Master and how to per-
form a simple transmission. DDR_SPI in the examples must be replaced by the actual
Data Direction Register controlling the SPI pins. DD_MOSI, DD_MISO and DD_SCK
must be replaced by the actual data direction bits for these pins. For example, if MOSI is
placed on pin PB5, replace DD_MOSI with DDB5 and DDR_SPI with DDRB.

Note:

1. The example code assumes that the part specific header file is included.

Assembly Code Example

(1)

SPI_MasterInit:

; Set MOSI and SCK output, all others input

ldi

r17,(1<

out

DDR_SPI,r17

; Enable SPI, Master, set clock rate fck/16

ldi

r17,(1<

out

SPCR,r17

ret

SPI_MasterTransmit:

; Start transmission of data (r16)

out

SPDR,r16

Wait_Transmit:

; Wait for transmission complete

sbis

SPSR,SPIF

rjmp

Wait_Transmit

ret

C Code Example

(1)

void

SPI_MasterInit(void)

{

/* Set MOSI and SCK output, all others input */

DDR_SPI = (1<

/* Enable SPI, Master, set clock rate fck/16 */

SPCR = (1<

}

void

SPI_MasterTransmit(char cData)

{

/* Start transmission */

SPDR = cData;

/* Wait for transmission complete */

while

(!(SPSR & (1<

;

}