Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**********************************************************************************************************
- File: SPI.c
- Description: simple interface to the SPI bus
- **********************************************************************************************************/
- #include "HtlStddef.h"
- #include "SPI.h"
- #include <avr/io.h>
- #include <string.h>
- #define uselessData 0x00;
- unsigned int help;
- TBool
- SPIInit(TSPI_Mode aSPIMode){
- DDRB |= ((1<<PB4) | (1<<PB5) | (1<<PB7));
- PORTB &= ~(0xFF);
- SPIgetDefaultValue(&aSPIMode);
- DDRB |= (1<<PB4)|(1<<PB5)|(1<<PB7);
- DDRB &= ~(1<<PB6);
- SPCR |= (1<<SPE);
- PORTB|= (1<<PB4);
- //PRESCALER
- if(aSPIMode.Prescaler>3)
- SPSR |= (1<<SPI2X);
- else
- SPSR &= ~(1<<SPI2X);
- SPCR |= ((0b011&&aSPIMode.Prescaler)<<SPR0);
- //POL
- if(aSPIMode.Cpol)
- SPCR |= (1<<CPOL);
- else
- SPCR &= ~(1<<CPOL);
- //PHA
- if(aSPIMode.Cpha)
- SPCR |= (1<<CPHA);
- else
- SPCR &= ~(1<<CPHA);
- //DATAODER
- if(aSPIMode.DataOrder)
- SPCR |= (1<<DORD);
- else
- SPCR &= ~(1<<DORD);
- //MASTER SLAVE
- if(aSPIMode.MasterSlave)
- SPCR |= (1<<MSTR);
- else
- SPCR &= ~(1<<MSTR);
- return ETRUE;
- }
- void SPIgetDefaultValue(TSPI_Mode* aSPIMode){
- memset( aSPIMode, 0, sizeof(TSPI_Mode));
- aSPIMode->IntEnable = DISABLE_INTERRUPT;
- aSPIMode->Enable = ENABLE;
- aSPIMode->Prescaler = E_SPI_Prescaler_2;
- aSPIMode->Cpol = ECPOL_RISING;
- aSPIMode->Cpha = EPHCA_LEAD_SAMPLE;
- aSPIMode->DataOrder = EDATAORDER_LSB_FIRST;
- aSPIMode->MasterSlave = EMASTER;
- }
- TBool SPIWriteByte(unsigned char aByte){
- PORTB &= ~(1<<PB4);
- SPDR = aByte;
- while(!(SPSR & (1<<SPIF)));
- PORTB |= (1<<PB4);
- return ETRUE;
- }
- TBool SPIReadByte (unsigned char* aByte){
- PORTB &= (1<<PB4);
- SPDR = uselessData;
- while(!(SPSR&(1<<SPIF)));
- *aByte = SPDR;
- PORTB |= (1<<PB4);
- return ETRUE;
- }
- TBool SPIReadWriteBuffer(unsigned char* aReadBuffer, unsigned char* aWriteBuffer, unsigned char aSize){
- return ETRUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement