1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-11-05 09:56:17 +02:00
ben-wpan/atusb/fw2/spi.c
Werner Almesberger f8fbb02bb0 atusb/fw2: further abstract board functions
- atusb.c (main), board.h (board_init), board.c (board_init): moved
  clock and I/O initialization to board file
- board.h (led), board.c (led), atusb.c (main): abstracted LED setting
  in function "led" instead of open-coding it
- spi.c (spi_init): set nSS to 1 before enabling the output, so that we
  don't generate what looks like an empty SPI transaction
2011-02-10 20:49:23 -03:00

46 lines
675 B
C

#include <stdint.h>
#include <avr/io.h>
#include "board.h"
#include "spi.h"
void spi_begin(void)
{
CLR(nSS);
}
uint8_t spi_io(uint8_t v)
{
// while (!(UCSR1A & 1 << UDRE1));
UDR1 = v;
while (!(UCSR1A & 1 << RXC1));
return UDR1;
}
void spi_end(void)
{
// while (!(UCSR1A & 1 << TXC1));
SET(nSS);
}
void spi_init(void)
{
SET(nSS);
OUT(SCLK);
OUT(MOSI);
OUT(nSS);
IN(MISO);
UBRR1 = 0; /* set bit rate to zero to begin */
UCSR1C = 1 << UMSEL11 | 1 << UMSEL10;
/* set MSPI, MSB first, SPI data mode 0 */
UCSR1B = 1 << RXEN1 | 1 << TXEN1;
/* enable receiver and transmitter */
UBRR1 = 0; /* reconfirm the bit rate */
}