marichan022

spi.h

Jan 27th, 2020
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.83 KB | None | 0 0
  1. #include <avr/io.h>
  2.  
  3. #define SS 4
  4. #define MOSI 5
  5. #define MISO 6
  6. #define SCK 7
  7. #define SS_Enable PORTB &= ~(1<<SS)
  8. #define SS_Disable PORTB |= (1<<SS)
  9.  
  10. void SPI_Master_Init()
  11. {
  12.     DDRB |= (1<<MOSI)|(1<<SCK)|(1<<SS);
  13.     DDRB &= ~(1<<MISO);
  14.     SS_Disable;
  15.     SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  16.     SPSR &= ~(1<<SPI2X);
  17. }
  18.  
  19. void SPI_Slave_Init()
  20. {
  21.     DDRB &= ~((1<<MOSI)|(1<<SCK)|(1<<SS));
  22.     DDRB |= (1<<MISO);
  23.     SPCR = (1<<SPE);
  24. }
  25.  
  26. void SPI_Master_Write(char data)
  27. {
  28.     char flush_buffer;
  29.     SPDR = data;
  30.     while(!(SPSR & (1<<SPIF)));
  31.     flush_buffer = SPDR;
  32. }
  33.  
  34. char SPI_Slave_Transmit(char data)
  35. {
  36.     SPDR = data;
  37.     while(!(SPSR & (1<<SPIF)));
  38.     return(SPDR);
  39. }
  40.  
  41. char SPI_Master_Read()
  42. {
  43.     SPDR = 0xFF;
  44.     while(!(SPSR & (1<<SPIF)));
  45.     return(SPDR);
  46. }
  47.  
  48. char SPI_Slave_Receive()
  49. {
  50.     while(!(SPSR & (1<<SPIF)));
  51.     return(SPDR);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment