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.
This commit is contained in:
Dean Camera 2010-12-26 14:25:34 +00:00
parent 39ac72f2d1
commit 2073b96d82
18 changed files with 266 additions and 23 deletions

View file

@ -60,6 +60,21 @@
*
* For possible BOARD makefile values, see \ref Group_BoardTypes.
*
* <b>Example Usage:</b>
* \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
*
* @{
*/

View file

@ -59,6 +59,54 @@
*
* For possible BOARD makefile values, see \ref Group_BoardTypes.
*
* <b>Example Usage:</b>
* \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);

View file

@ -59,6 +59,30 @@
*
* For possible BOARD makefile values, see \ref Group_BoardTypes.
*
* <b>Example Usage:</b>
* \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
*
* @{
*/

View file

@ -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.
*
* <b>Example Usage:</b>
* \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
*
* @{
*/

View file

@ -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;

View file

@ -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.
*
* <b>Example Usage:</b>
* \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: */