px-fwlib 0.10.0
Cross-platform embedded library and documentation for 8/16/32-bit microcontrollers generated with Doxygen 1.9.2
px_board.h
1#ifndef __PX_BOARD_H__
2#define __PX_BOARD_H__
3/* =============================================================================
4 ____ ___ ____ ___ _ _ ___ __ __ ___ __ __ TM
5 | _ \ |_ _| / ___| / _ \ | \ | | / _ \ | \/ | |_ _| \ \/ /
6 | |_) | | | | | | | | | | \| | | | | | | |\/| | | | \ /
7 | __/ | | | |___ | |_| | | |\ | | |_| | | | | | | | / \
8 |_| |___| \____| \___/ |_| \_| \___/ |_| |_| |___| /_/\_\
9
10 Copyright (c) 2015 Pieter Conradie <https://piconomix.com>
11
12 License: MIT
13 https://github.com/piconomix/px-fwlib/blob/master/LICENSE.md
14
15 Title: px_board.h : Arduino UNO R3 Board
16 Author(s): Pieter Conradie
17 Creation Date: 2015-01-30
18
19============================================================================= */
20/**
21 * @ingroup BOARDS_AVR
22 * @defgroup BOARDS_AVR_ARDUINO_UNO px_board.h : Arduino UNO R3 Board
23 *
24 * ![Arduino UNO R3 Board](arduino_uno_r3.jpg)
25 *
26 * Image Copyright (c) [Arduino SA](http://www.arduino.cc).
27 * License: [Creative Commons Attribution ShareAlike 3.0](http://creativecommons.org/licenses/by-sa/3.0/legalcode)
28 *
29 * File(s):
30 * - boards/avr/arduino_uno/inc/px_board.h
31 * - boards/avr/arduino_uno/inc/px_board_gpio.h
32 * - boards/avr/arduino_uno/src/px_board.c
33 *
34 * @{
35 */
36
37/* _____STANDARD INCLUDES____________________________________________________ */
38
39/* _____PROJECT INCLUDES_____________________________________________________ */
40#include "px_defs.h"
41#include "px_board_gpio.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46/* _____DEFINITIONS__________________________________________________________ */
47/// Board name
48#define PX_BOARD_ARDUINO_UNO
49
50/// Processor frequency in Hz
51#ifndef F_CPU
52#define F_CPU 16000000ul
53#endif
54
55/// @name ADC Channel mux definitions
56/// @{
57#define ADC0 0
58#define ADC1 1
59#define ADC2 2
60#define ADC3 3
61/// @}
62
63/* _____TYPE DEFINITIONS_____________________________________________________ */
64/// Identify which GPIO pins are used for Chip Select in board_spi_cs_lo() and board_spi_cs_hi()
65typedef enum
66{
67 PX_BOARD_SPI_CS_NONE = 0, ///< Slave Select pin
68 PX_BOARD_SPI_SS, ///< Slave Select pin
69 PX_BOARD_SPI_D2, ///< Digital 2
70 PX_BOARD_SPI_D3, ///< Digital 3
71 PX_BOARD_SPI_D4, ///< Digital 4
72 PX_BOARD_SPI_D5, ///< Digital 5
73 PX_BOARD_SPI_D6, ///< Digital 6
74 PX_BOARD_SPI_D7, ///< Digital 7
75 PX_BOARD_SPI_D8, ///< Digital 8
76 PX_BOARD_SPI_D9, ///< Digital 9
78
79/* _____GLOBAL VARIABLES_____________________________________________________ */
80
81/* _____GLOBAL FUNCTION DECLARATIONS_________________________________________ */
82/**
83 * Initialise the board hardware.
84 */
85extern void px_board_init(void);
86
87/**
88 * Set specified SPI Chip Select low
89 *
90 * @param cs_id ID which GPIO pin must be used for Chip Select
91 */
92extern void px_board_spi_cs_lo(uint8_t cs_id);
93
94/**
95 * Set specified SPI Chip Select high
96 *
97 * @param cs_id ID which GPIO pin must be used for Chip Select
98 */
99extern void px_board_spi_cs_hi(uint8_t cs_id);
100
101/**
102 * Blocking delay for specified number of microseconds.
103 *
104 * @param delay_us Number of microseconds to block
105 */
106extern void px_board_delay_us(uint16_t delay_us);
107
108/**
109 * Blocking delay for specified number of milliseconds.
110 *
111 * @param delay_ms Number of milliseconds to block
112 */
113void px_board_delay_ms(uint16_t delay_ms);
114
115/* _____MACROS_______________________________________________________________ */
116/// Enable LED (shared with SPI clock)
117#define PX_LED_ON() PX_GPIO_OUT_SET_HI(PX_GPIO_LED)
118/// Disable LED (shared with SPI clock)
119#define PX_LED_OFF() PX_GPIO_OUT_SET_LO(PX_GPIO_LED)
120/// Toggle LED (shared with SPI clock)
121#define PX_LED_TOGGLE() PX_GPIO_OUT_TOGGLE(PX_GPIO_LED)
122
123#ifdef __cplusplus
124}
125#endif
126
127/// @}
128#endif
@ PX_BOARD_SPI_D2
Digital 2.
Definition: px_board.h:69
@ PX_BOARD_SPI_CS_NONE
Do not perform a chip select.
Definition: px_board.h:55
@ PX_BOARD_SPI_D9
Digital 9.
Definition: px_board.h:76
@ PX_BOARD_SPI_SS
Slave Select pin.
Definition: px_board.h:68
@ PX_BOARD_SPI_D3
Digital 3.
Definition: px_board.h:70
@ PX_BOARD_SPI_D7
Digital 7.
Definition: px_board.h:74
@ PX_BOARD_SPI_D5
Digital 5.
Definition: px_board.h:72
@ PX_BOARD_SPI_D8
Digital 8.
Definition: px_board.h:75
@ PX_BOARD_SPI_D4
Digital 4.
Definition: px_board.h:71
@ PX_BOARD_SPI_D6
Digital 6.
Definition: px_board.h:73
void px_board_delay_us(uint16_t delay_us)
Blocking delay for specified number of microseconds.
Definition: px_board.c:222
void px_board_init(void)
Initialise the board hardware.
Definition: px_board.c:168
px_board_spi_cs_t
Identify which GPIO pins are used for CS in px_board_spi_cs_lo() and px_board_spi_cs_hi()
Definition: px_board.h:54
void px_board_delay_ms(uint16_t delay_ms)
Blocking delay for specified number of milliseconds.
Definition: px_board.c:234
void px_board_spi_cs_hi(uint8_t cs_id)
Set specified SPI Chip Select high.
Definition: px_board.c:192
void px_board_spi_cs_lo(uint8_t cs_id)
Set specified SPI Chip Select low.
Definition: px_board.c:180