mirror of
git://projects.qi-hardware.com/ben-wpan.git
synced 2024-11-25 20:14:40 +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:
parent
814cf6fd78
commit
ec7c93789a
@ -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. */
|
/* disable the UART so that we can meddle with these pins as well. */
|
||||||
UCSR1B = 0;
|
spi_off();
|
||||||
_delay_ms(1);
|
_delay_ms(1);
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
@ -115,7 +115,5 @@ int gpio(uint8_t port, uint8_t data, uint8_t dir, uint8_t mask, uint8_t *res)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
spi_init();
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,13 @@
|
|||||||
#include "spi.h"
|
#include "spi.h"
|
||||||
|
|
||||||
|
|
||||||
|
static int spi_initialized = 0;
|
||||||
|
|
||||||
|
|
||||||
void spi_begin(void)
|
void spi_begin(void)
|
||||||
{
|
{
|
||||||
|
if (!spi_initialized)
|
||||||
|
spi_init();
|
||||||
CLR(nSS);
|
CLR(nSS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +46,13 @@ void spi_end(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void spi_off(void)
|
||||||
|
{
|
||||||
|
spi_initialized = 0;
|
||||||
|
UCSR1B = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void spi_init(void)
|
void spi_init(void)
|
||||||
{
|
{
|
||||||
SET(nSS);
|
SET(nSS);
|
||||||
@ -55,4 +67,6 @@ void spi_init(void)
|
|||||||
UCSR1B = 1 << RXEN1 | 1 << TXEN1;
|
UCSR1B = 1 << RXEN1 | 1 << TXEN1;
|
||||||
/* enable receiver and transmitter */
|
/* enable receiver and transmitter */
|
||||||
UBRR1 = 0; /* reconfirm the bit rate */
|
UBRR1 = 0; /* reconfirm the bit rate */
|
||||||
|
|
||||||
|
spi_initialized = 1;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
void spi_begin(void);
|
void spi_begin(void);
|
||||||
uint8_t spi_io(uint8_t v);
|
uint8_t spi_io(uint8_t v);
|
||||||
void spi_end(void);
|
void spi_end(void);
|
||||||
|
void spi_off(void);
|
||||||
void spi_init(void);
|
void spi_init(void);
|
||||||
|
|
||||||
#define spi_send(v) (void) spi_io(v)
|
#define spi_send(v) (void) spi_io(v)
|
||||||
|
Loading…
Reference in New Issue
Block a user