1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-11-25 18:57:11 +02:00

atusb/fw/: added "lazy enabling" of UART-SPI after ATUSB_GPIO

- spi.h (spi_off), spi.c: disable the UART
- spi.c (spi_initialized, spi_begin, spi_init): initialize the UART
  if necessary
- board_app.c (gpio): call spi_off to disable the UART instead of
  open-coding the operation
- board_app.c (gpio): don't explicitly re-enable the UART but defer it
  to the next communication
This commit is contained in:
Werner Almesberger 2011-06-09 14:02:26 -03:00
parent 814cf6fd78
commit ec7c93789a
3 changed files with 16 additions and 3 deletions

View File

@ -94,7 +94,7 @@ int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
}
/* disable the UART so that we can meddle with these pins as well. */
UCSR1B = 0;
spi_off();
_delay_ms(1);
switch (port) {
@ -115,7 +115,5 @@ int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
break;
}
spi_init();
return 1;
}

View File

@ -19,8 +19,13 @@
#include "spi.h"
static int spi_initialized = 0;
void spi_begin(void)
{
if (!spi_initialized)
spi_init();
CLR(nSS);
}
@ -41,6 +46,13 @@ void spi_end(void)
}
void spi_off(void)
{
spi_initialized = 0;
UCSR1B = 0;
}
void spi_init(void)
{
SET(nSS);
@ -55,4 +67,6 @@ void spi_init(void)
UCSR1B = 1 << RXEN1 | 1 << TXEN1;
/* enable receiver and transmitter */
UBRR1 = 0; /* reconfirm the bit rate */
spi_initialized = 1;
}

View File

@ -19,6 +19,7 @@
void spi_begin(void);
uint8_t spi_io(uint8_t v);
void spi_end(void);
void spi_off(void);
void spi_init(void);
#define spi_send(v) (void) spi_io(v)