From c24027f3b5f1ca7bceababc82ea5b897b18dbac1 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 23 Feb 2010 01:03:27 +0000 Subject: Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin. Fix broken AVR8 Serial peripheral driver. --- LUFA/Drivers/Peripheral/AVR32/SPI.h | 1 + LUFA/Drivers/Peripheral/AVR8/SPI.h | 1 + LUFA/Drivers/Peripheral/AVR8/Serial.h | 26 +++++++++++++++++++++----- LUFA/Drivers/Peripheral/AVR8/TWI.h | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) (limited to 'LUFA/Drivers') diff --git a/LUFA/Drivers/Peripheral/AVR32/SPI.h b/LUFA/Drivers/Peripheral/AVR32/SPI.h index e07eb6c76..b7484799a 100644 --- a/LUFA/Drivers/Peripheral/AVR32/SPI.h +++ b/LUFA/Drivers/Peripheral/AVR32/SPI.h @@ -51,6 +51,7 @@ #define __SPI_AVR32_H__ /* Includes: */ + #include #include /* Preprocessor Checks: */ diff --git a/LUFA/Drivers/Peripheral/AVR8/SPI.h b/LUFA/Drivers/Peripheral/AVR8/SPI.h index 3440cc9f1..f466162be 100644 --- a/LUFA/Drivers/Peripheral/AVR8/SPI.h +++ b/LUFA/Drivers/Peripheral/AVR8/SPI.h @@ -51,6 +51,7 @@ #define __SPI_AVR8_H__ /* Includes: */ + #include #include /* Preprocessor Checks: */ diff --git a/LUFA/Drivers/Peripheral/AVR8/Serial.h b/LUFA/Drivers/Peripheral/AVR8/Serial.h index 282528bb0..0421dea73 100644 --- a/LUFA/Drivers/Peripheral/AVR8/Serial.h +++ b/LUFA/Drivers/Peripheral/AVR8/Serial.h @@ -80,7 +80,7 @@ */ static inline bool Serial_IsCharReceived(void); #else - #define Serial_IsCharReceived() /* TODO */ + #define Serial_IsCharReceived() ((UCSR1A & (1 << RXC1)) ? true : false) #endif /* Inline Functions: */ @@ -92,13 +92,27 @@ */ static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed) { - // TODO + UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0); + UCSR1B = ((1 << TXEN1) | (1 << RXEN1)); + UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10)); + + DDRD |= (1 << 3); + PORTD |= (1 << 2); + + UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate)); } /** Turns off the USART driver, disabling and returning used hardware to their default configuration. */ static inline void Serial_ShutDown(void) { - // TODO + UCSR1A = 0; + UCSR1B = 0; + UCSR1C = 0; + + DDRD &= ~(1 << 3); + PORTD &= ~(1 << 2); + + UBRR1 = 0; } /** Transmits a given byte through the USART. @@ -107,7 +121,8 @@ */ static inline void Serial_TxByte(const char DataByte) { - // TODO + while (!(UCSR1A & (1 << UDRE1))); + UDR1 = DataByte; } /** Receives a byte from the USART. @@ -116,7 +131,8 @@ */ static inline uint8_t Serial_RxByte(void) { - // TODO + while (!(UCSR1A & (1 << RXC1))); + return UDR1; } /* Disable C linkage for C++ Compilers: */ diff --git a/LUFA/Drivers/Peripheral/AVR8/TWI.h b/LUFA/Drivers/Peripheral/AVR8/TWI.h index 673f1b071..d169b8230 100644 --- a/LUFA/Drivers/Peripheral/AVR8/TWI.h +++ b/LUFA/Drivers/Peripheral/AVR8/TWI.h @@ -37,7 +37,7 @@ */ /** \ingroup Group_TWI - * @defgroup Group_TWI_AVR8 Series U4, U6 and U7 Model TWI Driver + * @defgroup Group_TWI_AVR8 8-Bit AVR TWI Driver * * Master mode TWI driver for the 8-Bit AVRs containing a hardware TWI module. * -- cgit v1.2.3