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/Common/Common.h | 2 +- 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 +- LUFA/ManPages/ChangeLog.txt | 4 ++-- 6 files changed, 27 insertions(+), 9 deletions(-) (limited to 'LUFA') diff --git a/LUFA/Common/Common.h b/LUFA/Common/Common.h index 04480d514..67bbb9295 100644 --- a/LUFA/Common/Common.h +++ b/LUFA/Common/Common.h @@ -62,7 +62,7 @@ #include "Atomic.h" - #define PROGMEM + #define PROGMEM const #else #include #endif 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. * diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index f05ace33d..ad43258c3 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -9,7 +9,7 @@ * \section Sec_ChangeLogXXXXXX Version XXXXXX * * New: - * - (None) + * - Added support for the UC3B0256 AVR32 microcontroller * * Changed: * - AVRISP programmer project now has a more robust timeout system, allowing for a doubling of the software USART speed @@ -17,7 +17,7 @@ * - Increased the speed of both software and hardware TPI/PDI programming modes of the AVRISP project * * Fixed: - * - (None) + * - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin * * \section Sec_ChangeLog100219 Version 100219 * -- cgit v1.2.3