From 1e8df8951a3335e4b45ad0c25a82df3d90d785f3 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 23 Aug 2009 04:01:49 +0000 Subject: Added V2Protocol handlers to the AVRISP project to enter/exit programming mode, and read/write fuses, lockbits, OSCCAL and Signature bytes. Added ShutDown functions for all hardware peripheral drivers, so that peripherals can be turned off after use. --- LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h | 6 +++--- LUFA/Drivers/Peripheral/SPI.h | 10 ++++++++++ LUFA/Drivers/Peripheral/Serial.h | 13 +++++++++++++ LUFA/Drivers/Peripheral/SerialStream.h | 8 ++++++++ 4 files changed, 34 insertions(+), 3 deletions(-) (limited to 'LUFA/Drivers/Peripheral') diff --git a/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h b/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h index 4110a508c7..edcbc57817 100644 --- a/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h +++ b/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h @@ -118,11 +118,11 @@ * \param[in] Mode Mask of ADC settings, including adjustment, prescale, mode and reference */ static inline void ADC_Init(uint8_t Mode); - + /** Turns off the ADC. If this is called, any further ADC operations will require a call to * \ref ADC_Init() before the ADC can be used again. */ - static inline void ADC_Off(void); + static inline void ADC_ShutDown(void); /** Indicates if the ADC is currently enabled. * @@ -145,7 +145,7 @@ #else #define ADC_Init(mode) MACROS{ ADCSRA = ((1 << ADEN) | mode); }MACROE - #define ADC_Off() MACROS{ ADCSRA = 0; }MACROE + #define ADC_ShutDown() MACROS{ ADCSRA = 0; }MACROE #define ADC_GetStatus() ((ADCSRA & (1 << ADEN)) ? true : false) diff --git a/LUFA/Drivers/Peripheral/SPI.h b/LUFA/Drivers/Peripheral/SPI.h index 6048d86a6d..df741d7b87 100644 --- a/LUFA/Drivers/Peripheral/SPI.h +++ b/LUFA/Drivers/Peripheral/SPI.h @@ -108,6 +108,16 @@ SPSR &= ~(1 << SPI2X); } + /** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */ + static inline void SPI_ShutDown(void) + { + DDRB &= ~((1 << 1) | (1 << 2)); + PORTB &= ~((1 << 0) | (1 << 3)); + + SPCR = 0; + SPSR = 0; + } + /** Sends and receives a byte through the SPI interface, blocking until the transfer is complete. * * \param[in] Byte Byte to send through the SPI interface diff --git a/LUFA/Drivers/Peripheral/Serial.h b/LUFA/Drivers/Peripheral/Serial.h index e688cfc022..bde1449e89 100644 --- a/LUFA/Drivers/Peripheral/Serial.h +++ b/LUFA/Drivers/Peripheral/Serial.h @@ -118,6 +118,19 @@ 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) + { + UCSR1A = 0; + UCSR1B = 0; + UCSR1C = 0; + + DDRD &= ~(1 << 3); + PORTD &= ~(1 << 2); + + UBRR1 = 0; + } + /** Transmits a given byte through the USART. * * \param[in] DataByte Byte to transmit through the USART diff --git a/LUFA/Drivers/Peripheral/SerialStream.h b/LUFA/Drivers/Peripheral/SerialStream.h index d3f0014bc8..293fda0768 100644 --- a/LUFA/Drivers/Peripheral/SerialStream.h +++ b/LUFA/Drivers/Peripheral/SerialStream.h @@ -88,6 +88,14 @@ stdout = &USARTStream; } + + /** Turns off the serial stream (and regular USART driver), disabling and returning used hardware to + * their default configuration. + */ + static inline void SerialStream_ShutDown(void) + { + Serial_ShutDown(); + } /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus) -- cgit v1.2.3