/* * fw/spi.c - ATmega8 family SPI I/O * * Written 2011, 2013 by Werner Almesberger * Copyright 2011, 2013 Werner Almesberger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #include #include #include #include "board.h" #include "spi.h" uint8_t spi_io(uint8_t v) { // while (!(UCSR1A & 1 << UDRE1)); SPI_DATA = v; SPI_WAIT_DONE(); return SPI_DATA; } void spi_end(void) { // while (!(UCSR1A & 1 << TXC1)); SET(nSS); } void spi_recv_block(uint8_t *buf, uint8_t n) { if (!n) return; SPI_DATA = 0; while (--n) { SPI_WAIT_DONE(); *buf++ = SPI_DATA; SPI_DATA = 0; } SPI_WAIT_DONE(); *buf++ = SPI_DATA; }