Added new CONCAT() and CONCAT_EXPANDED() convenience macros.
This commit is contained in:
parent
7dc77a6abc
commit
7c3867da33
8 changed files with 53 additions and 51 deletions
|
@ -56,14 +56,14 @@
|
|||
*
|
||||
* See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.
|
||||
*/
|
||||
|
||||
|
||||
/** \ingroup Group_Buttons
|
||||
* \defgroup Group_Buttons_MICROPENDOUS_3 MICROPENDOUS_3
|
||||
* \brief Board specific Button driver header for the Micropendous 3 (https://code.google.com/p/micropendous/wiki/Micropendous3).
|
||||
*
|
||||
* See \ref Group_Buttons_MICROPENDOUS_32U2 for more details.
|
||||
*/
|
||||
|
||||
|
||||
/** \ingroup Group_Buttons
|
||||
* \defgroup Group_Buttons_MICROPENDOUS_4 MICROPENDOUS_4
|
||||
* \brief Board specific Button driver header for the Micropendous 4 (https://code.google.com/p/micropendous/wiki/Micropendous4).
|
||||
|
@ -161,19 +161,16 @@
|
|||
#define _BOARD_BUTTON1_MASK (1 << 2)
|
||||
#define _BOARD_BUTTON_PORTLETTER E
|
||||
#endif
|
||||
|
||||
#define _BOARD_BUTTON_CONCAT2(Reg, Letter) Reg ## Letter
|
||||
#define _BOARD_BUTTON_CONCAT(Reg, Letter) _BOARD_BUTTON_CONCAT2(Reg, Letter)
|
||||
|
||||
#define _BOARD_BUTTON_PORT _BOARD_BUTTON_CONCAT(PORT, _BOARD_BUTTON_PORTLETTER)
|
||||
#define _BOARD_BUTTON_PIN _BOARD_BUTTON_CONCAT(PIN, _BOARD_BUTTON_PORTLETTER)
|
||||
#define _BOARD_BUTTON_DDR _BOARD_BUTTON_CONCAT(DDR, _BOARD_BUTTON_PORTLETTER)
|
||||
#define _BOARD_BUTTON_PORT CONCAT_EXPANDED(PORT, _BOARD_BUTTON_PORTLETTER)
|
||||
#define _BOARD_BUTTON_PIN CONCAT_EXPANDED(PIN, _BOARD_BUTTON_PORTLETTER)
|
||||
#define _BOARD_BUTTON_DDR CONCAT_EXPANDED(DDR, _BOARD_BUTTON_PORTLETTER)
|
||||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/** Button mask for the first button on the board. */
|
||||
#define BUTTONS_BUTTON1 _BOARD_BUTTON1_MASK
|
||||
#define BUTTONS_BUTTON1 _BOARD_BUTTON1_MASK
|
||||
|
||||
/* Inline Functions: */
|
||||
#if !defined(__DOXYGEN__)
|
||||
|
|
|
@ -100,12 +100,9 @@
|
|||
#define _BOARD_LED_PORTLETTER B
|
||||
#endif
|
||||
|
||||
#define _BOARD_LED_CONCAT2(Reg, Letter) Reg ## Letter
|
||||
#define _BOARD_LED_CONCAT(Reg, Letter) _BOARD_LED_CONCAT2(Reg, Letter)
|
||||
|
||||
#define _BOARD_LED_PORT _BOARD_LED_CONCAT(PORT, _BOARD_LED_PORTLETTER)
|
||||
#define _BOARD_LED_PIN _BOARD_LED_CONCAT(PIN, _BOARD_LED_PORTLETTER)
|
||||
#define _BOARD_LED_DDR _BOARD_LED_CONCAT(DDR, _BOARD_LED_PORTLETTER)
|
||||
#define _BOARD_LED_PORT CONCAT_EXPANDED(PORT, _BOARD_LED_PORTLETTER)
|
||||
#define _BOARD_LED_PIN CONCAT_EXPANDED(PIN, _BOARD_LED_PORTLETTER)
|
||||
#define _BOARD_LED_DDR CONCAT_EXPANDED(DDR, _BOARD_LED_PORTLETTER)
|
||||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
|
|
|
@ -70,44 +70,44 @@
|
|||
* 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-volatile 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-volatile 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
|
||||
|
@ -131,18 +131,16 @@
|
|||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
#if !defined(__DOXYGEN__)
|
||||
#define __GET_DATAFLASH_MASK2(x, y) x ## y
|
||||
#define __GET_DATAFLASH_MASK(x) __GET_DATAFLASH_MASK2(DATAFLASH_CHIP,x)
|
||||
#endif
|
||||
|
||||
/** Retrieves the Dataflash chip select mask for the given Dataflash chip index.
|
||||
*
|
||||
* \param[in] index Index of the dataflash chip mask to retrieve
|
||||
* \attention This macro will only work correctly on chip index numbers that are compile-time
|
||||
* constants defined by the preprocessor.
|
||||
*
|
||||
* \param[in] index Index of the dataflash chip mask to retrieve.
|
||||
*
|
||||
* \return Mask for the given Dataflash chip's /CS pin
|
||||
*/
|
||||
#define DATAFLASH_CHIP_MASK(index) __GET_DATAFLASH_MASK(index)
|
||||
#define DATAFLASH_CHIP_MASK(index) CONCAT_EXPANDED(DATAFLASH_CHIP, index)
|
||||
|
||||
/* Inline Functions: */
|
||||
/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue