selva murugesan
Advanced Member level 4
friends,please tell me how to configure and using SPI in atmel?and also working of SPI
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
PORTB &= ~(1 << SPI_SS); //pull slave select low, start communication
SPI_Transmit(transmitting_BYTE);
receivingm_BYTE = SPI_Receive();
SPI_Finish();
PORTB |= (1 << SPI_SS); //pull slave select high, end communication
*
*
*
/*----------------------------------------------------------------------------
* FUNCTION: waits till SPI finish its operation
*---------------------------------------------------------------------------
* INPUT:
* ---------------------------------------------------------------------
* byte - byte value function should insert to register
*---------------------------------------------------------------------------
* OUTPUT:
* ---------------------------------------------------------------------
* None
*---------------------------------------------------------------------------*/
void SPI_Finish(void) {
while(!(SPSR & (1<<SPIF)))
{}
}
/*----------------------------------------------------------------------------
* FUNCTION: waits till SPI ready and writes byte to SPI data register
*---------------------------------------------------------------------------
* INPUT:
* ---------------------------------------------------------------------
* byte - byte value function should insert to register
*---------------------------------------------------------------------------
* OUTPUT:
* ---------------------------------------------------------------------
* None
*---------------------------------------------------------------------------*/
void SPI_Transmit(uint8_t byte) {
while(!(SPSR & (1<<SPIF)))
{}
SPDR = byte;
}
/*----------------------------------------------------------------------------
* FUNCTION: waits till SPI ready and reads byte from SPI data register
*---------------------------------------------------------------------------
* INPUT:
* ---------------------------------------------------------------------
*
*---------------------------------------------------------------------------
* OUTPUT:
* ---------------------------------------------------------------------
* None
*---------------------------------------------------------------------------*/
char SPI_Receive() {
while(!(SPSR & (1<<SPIF)))
{}
return SPDR;
}
*
*
*
/*----------------------------------------------------------------------------
* FUNCTION: sets up SPI settintgs to control LTC6802
*---------------------------------------------------------------------------
* INPUT:
* ---------------------------------------------------------------------
* None
*---------------------------------------------------------------------------
* OUTPUT:
* ---------------------------------------------------------------------
* None
*---------------------------------------------------------------------------*/
void SPI_Init(void) {
DDRB = (1 << SPI_MOSI)|(1 << SPI_SCK)|(1 << SPI_SS); // Set MOSI SCK and SS as output
SPCR = ((0 << 7) //disable SPI interupts
|(1 << 6) //enable SPI
|(0 << 5) //DORD = 0 to set MSB is 1st to transfer
|(1 << 4) //setting device to Master mode
|(1 << 3) //settitng SPI mode
|(1 << 2) //^
|(0 << 1) //setting SPI clock to Fosc/16
|(1 << 0)); //^
SPSR = (0 << 0); //setting SPI clock x2 - disabled
PORTB |= (1 << SPI_SS); //Pull slave select high
}
friends,please tell me how to configure and using SPI in atmel?and also working of SPI