From 2073b96d82433607bd287e3b6529fd0d3cc428cd Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 26 Dec 2010 14:25:34 +0000 Subject: Added basic driver example use code to the library documentation. Made the USARTStream global public and documented in the SerialStream module, allowing for the serial USART stream to be accessed via its handle rather than via the implicit stdout and stdin streams. --- LUFA/Drivers/Board/Buttons.h | 15 ++++++++++++ LUFA/Drivers/Board/Dataflash.h | 51 +++++++++++++++++++++++++++++++++++++++- LUFA/Drivers/Board/Joystick.h | 24 +++++++++++++++++++ LUFA/Drivers/Board/LEDs.h | 23 ++++++++++++++++++ LUFA/Drivers/Board/Temperature.c | 4 ++-- LUFA/Drivers/Board/Temperature.h | 13 ++++++++-- 6 files changed, 125 insertions(+), 5 deletions(-) (limited to 'LUFA/Drivers/Board') diff --git a/LUFA/Drivers/Board/Buttons.h b/LUFA/Drivers/Board/Buttons.h index d06781dbb..e112683a8 100644 --- a/LUFA/Drivers/Board/Buttons.h +++ b/LUFA/Drivers/Board/Buttons.h @@ -60,6 +60,21 @@ * * For possible BOARD makefile values, see \ref Group_BoardTypes. * + * Example Usage: + * \code + * // Initialise the button driver before first use + * Buttons_Init(); + * + * printf("Waiting for button press...\r\n"); + * + * // Loop until a board button has been pressed + * uint8_t ButtonPress; + * while (!(ButtonPress = Buttons_GetStatus())) {}; + * + * // Display which button was pressed (assuming two board buttons) + * printf("Button pressed: %s\r\n", (ButtonPress == BUTTONS_BUTTON1) ? "Button 1" : "Button 2"); + * \endcode + * * @{ */ diff --git a/LUFA/Drivers/Board/Dataflash.h b/LUFA/Drivers/Board/Dataflash.h index 31e311596..d443c8f5a 100644 --- a/LUFA/Drivers/Board/Dataflash.h +++ b/LUFA/Drivers/Board/Dataflash.h @@ -59,6 +59,54 @@ * * For possible BOARD makefile values, see \ref Group_BoardTypes. * + * Example Usage: + * \code + * // Initialise the SPI and board Dataflash drivers before first use + * SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | + * SPI_SAMPLE_TRAILING | SPI_MODE_MASTER); + * Dataflash_Init(); + * + * uint8_t WriteBuffer[DATAFLASH_PAGE_SIZE]; + * uint8_t ReadBuffer[DATAFLASH_PAGE_SIZE]; + * + * // Fill page write buffer with a repeating pattern + * for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++) + * WriteBuffer[i] = (i & 0xFF); + * + * // Must select the chip of interest first before operating on it + * Dataflash_SelectChip(DATAFLASH_CHIP1); + * + * // Write to the Dataflash's first internal memory buffer + * printf("Writing data to first dataflash buffer:\r\n"); + * Dataflash_SendByte(DF_CMD_BUFF1WRITE); + * Dataflash_SendAddressBytes(0, 0); + * + * for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++) + * Dataflash_SendByte(WriteBuffer[i]); + * + * // Commit the Dataflash's first memory buffer to the non-voltatile FLASH memory + * printf("Committing page to non-volatile memory page index 5:\r\n"); + * Dataflash_SendByte(DF_CMD_BUFF1TOMAINMEMWITHERASE); + * Dataflash_SendAddressBytes(5, 0); + * Dataflash_WaitWhileBusy(); + * + * // Read the page from non-voltatile FLASH memory into the Dataflash's second memory buffer + * printf("Reading data into second dataflash buffer:\r\n"); + * Dataflash_SendByte(DF_CMD_MAINMEMTOBUFF2); + * Dataflash_SendAddressBytes(5, 0); + * Dataflash_WaitWhileBusy(); + * + * // Read the Dataflash's second internal memory buffer + * Dataflash_SendByte(DF_CMD_BUFF2READ); + * Dataflash_SendAddressBytes(0, 0); + * + * for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++) + * ReadBuffer[i] = Dataflash_ReceiveByte(); + * + * // Deselect the chip after use + * Dataflash_DeselectChip(); + * \endcode + * * @{ */ @@ -97,7 +145,8 @@ /* Inline Functions: */ /** Initialises the dataflash driver so that commands and data may be sent to an attached dataflash IC. - * The AVR's SPI driver MUST be initialized before any of the dataflash commands are used. + * + * \note The AVR's SPI driver must be initialized before any of the dataflash commands are used. */ static inline void Dataflash_Init(void); diff --git a/LUFA/Drivers/Board/Joystick.h b/LUFA/Drivers/Board/Joystick.h index 6bf786947..f3c5c9d26 100644 --- a/LUFA/Drivers/Board/Joystick.h +++ b/LUFA/Drivers/Board/Joystick.h @@ -59,6 +59,30 @@ * * For possible BOARD makefile values, see \ref Group_BoardTypes. * + * Example Usage: + * \code + * // Initialise the board Joystick driver before first use + * Joystick_Init(); + * + * printf("Waiting for joystick movement...\r\n"); + * + * // Loop until a the joystick has been moved + * uint8_t JoystickMovement; + * while (!(JoystickMovement = Joystick_GetStatus())) {}; + * + * // Display which direction the joystick was moved in + * printf("Joystick moved:\r\n"); + * + * if (JoystickMovement & (JOY_UP | JOY_DOWN)) + * printf("%s ", (JoystickMovement & JOY_UP) ? "Up" : "Down"); + * + * if (JoystickMovement & (JOY_LEFT | JOY_RIGHT)) + * printf("%s ", (JoystickMovement & JOY_LEFT) ? "Left" : "Right"); + * + * if (JoystickMovement & JOY_PRESSED) + * printf("Pressed"); + * \endcode + * * @{ */ diff --git a/LUFA/Drivers/Board/LEDs.h b/LUFA/Drivers/Board/LEDs.h index a898be28b..b05d55cf8 100644 --- a/LUFA/Drivers/Board/LEDs.h +++ b/LUFA/Drivers/Board/LEDs.h @@ -68,6 +68,29 @@ * compatible code for a board with no LEDs by making a board LED driver (see \ref Page_WritingBoardDrivers) * which contains only stub functions and defines no LEDs. * + * Example Usage: + * \code + * // Initialise the board LED driver before first use + * LEDs_Init(); + * + * // Turn on each of the four LEDs in turn + * LEDs_SetAllLEDs(LEDS_LED1); + * _delay_ms(500); + * LEDs_SetAllLEDs(LEDS_LED1); + * _delay_ms(500); + * LEDs_SetAllLEDs(LEDS_LED1); + * _delay_ms(500); + * LEDs_SetAllLEDs(LEDS_LED1); + * _delay_ms(500); + * + * // Turn on all LEDs + * LEDs_SetAllLEDs(LEDS_ALL_LEDS); + * _delay_ms(1000); + * + * // Turn on LED 1, turn off LED 2, leaving LEDs 3 and 4 in their current state + * LEDs_ChangeLEDs((LEDS_LED1 | LEDS_LED2), LEDS_LED1); + * \endcode + * * @{ */ diff --git a/LUFA/Drivers/Board/Temperature.c b/LUFA/Drivers/Board/Temperature.c index 67d105491..3c8028143 100644 --- a/LUFA/Drivers/Board/Temperature.c +++ b/LUFA/Drivers/Board/Temperature.c @@ -50,10 +50,10 @@ int8_t Temperature_GetTemperature(void) if (Temp_ADC > pgm_read_word(&Temperature_Lookup[0])) return TEMP_MIN_TEMP; - for (uint16_t Index = 0; Index < TEMP_TABLE_SIZE; Index++) + for (uint16_t Index = 0; Index < (sizeof(Temperature_Lookup) / sizeof(Temperature_Lookup[0])); Index++) { if (Temp_ADC > pgm_read_word(&Temperature_Lookup[Index])) - return (Index + TEMP_TABLE_OFFSET); + return (Index + TEMP_TABLE_OFFSET_DEGREES); } return TEMP_MAX_TEMP; diff --git a/LUFA/Drivers/Board/Temperature.h b/LUFA/Drivers/Board/Temperature.h index 8832c0c66..c8b36f586 100644 --- a/LUFA/Drivers/Board/Temperature.h +++ b/LUFA/Drivers/Board/Temperature.h @@ -47,6 +47,16 @@ * current temperature in degrees C. It is designed for and will only work with the temperature sensor located on the * official Atmel USB AVR boards, as each sensor has different characteristics. * + * Example Usage: + * \code + * // Initialise the ADC and board temperature sensor drivers before first use + * ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128); + * Temperature_Init(); + * + * // Display converted temperature in degrees Celcius + * printf("Current Temperature: %d Degrees\r\n", Temperature_GetTemperature()); + * \endcode + * * @{ */ @@ -110,8 +120,7 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) /* Macros: */ - #define TEMP_TABLE_SIZE (sizeof(Temperature_Lookup) / sizeof(Temperature_Lookup[0])) - #define TEMP_TABLE_OFFSET -21 + #define TEMP_TABLE_OFFSET_DEGREES -21 #endif /* Disable C linkage for C++ Compilers: */ -- cgit v1.2.3