PetrovIgor

SPI master transfer for Atmega328p

Nov 22nd, 2014
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.57 KB | None | 0 0
  1. // Example of Master Write SPI for Atmega328p
  2. // SS(CE) <=> PB0
  3. #include <avr/io.h>
  4.  
  5. #define bitSet(p,m) ((p) |= (m))
  6. #define bitClear(p,m) ((p) &= ~(m))
  7.  
  8. void SPI_initMaster(void);
  9. void SPI_transferByte(char data);
  10.  
  11. int main(void) {
  12.     SPI_initMaster();
  13.     bitClear(PORTB, 0);
  14.     SPI_transferByte(0b01010101);
  15.     bitSet(PORTB, 1);
  16. }
  17.  
  18. void SPI_initMaster() {
  19.     DDRB = (1 << 0) | (1 << 3) | (1 << 5);
  20.     SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR0);
  21. }
  22.  
  23. void SPI_transferByte(char data) {
  24.     SPDR = data;
  25.     while(!(SPSR & (1 << SPIF)))
  26.       ;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment