Arduino to Peripheral Module adapter library

Dependents:   ARD2PMD_WebServer

This library assigns the proper pins for an Arduino compatible board with the ard2pmd adapter board.

  • mux I2C pins mux(D14, D15)

Digital I/O

pmd[8] is an array of pointers to the DigitalInOut objects

IndexNamePmod
0pa11
1pa22
2pa33
3pa44
4pb17
5pb28
6pb39
7pb410

MAX14661 Multiplexer Abstraction

mux_a[17] is an array of integers representing the bit mask of a multiplexer switch arranged in Arduino order

IndexPinName
0D0RX
1D1TX
2D2D3
3D3D4
4D4PB1
5D5PB2
6D6PB3
7D7PB4
8D8D8
9D9D9
10D10PA1
11D11PA2
12D12PA3
13D13PA4
14D14SDA
15D15SCL
16na0

mux_p[9] is an array of integers representing the bit mask of a multiplexer switch arranged in Pmod order

IndexPinName
0D10PA1
1D11PA2
2D12PA3
3D13PA4
4D4PB1
5D5PB2
6D6PB3
7D7PB4
8na0
Committer:
gsteiert
Date:
Sat May 10 04:22:17 2014 +0000
Revision:
4:f016a009708c
Parent:
3:18ae8990f74b
Cleaned up example in comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsteiert 0:d42cfc64e43e 1 /* ARD2PMD Board Driver Library
gsteiert 0:d42cfc64e43e 2 *
gsteiert 0:d42cfc64e43e 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
gsteiert 0:d42cfc64e43e 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
gsteiert 0:d42cfc64e43e 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
gsteiert 0:d42cfc64e43e 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
gsteiert 0:d42cfc64e43e 7 * furnished to do so, subject to the following conditions:
gsteiert 0:d42cfc64e43e 8 *
gsteiert 0:d42cfc64e43e 9 * The above copyright notice and this permission notice shall be included in all copies or
gsteiert 0:d42cfc64e43e 10 * substantial portions of the Software.
gsteiert 0:d42cfc64e43e 11 *
gsteiert 0:d42cfc64e43e 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
gsteiert 0:d42cfc64e43e 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
gsteiert 0:d42cfc64e43e 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
gsteiert 0:d42cfc64e43e 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
gsteiert 0:d42cfc64e43e 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
gsteiert 0:d42cfc64e43e 17 */
gsteiert 0:d42cfc64e43e 18
gsteiert 0:d42cfc64e43e 19 #ifndef ARD2PMD_H
gsteiert 0:d42cfc64e43e 20 #define ARD2PMD_H
gsteiert 0:d42cfc64e43e 21
gsteiert 0:d42cfc64e43e 22 #include "mbed.h"
gsteiert 0:d42cfc64e43e 23 #include "MAX14661.h"
gsteiert 0:d42cfc64e43e 24
gsteiert 0:d42cfc64e43e 25
gsteiert 0:d42cfc64e43e 26 /** ARD2PMD Library, Provides utilities for configuring the Maxim ARD2PMD Board
gsteiert 0:d42cfc64e43e 27 *
gsteiert 0:d42cfc64e43e 28 * Example:
gsteiert 0:d42cfc64e43e 29 * @code
gsteiert 0:d42cfc64e43e 30 * // Configure board to pass UART signals to peripheral connector.
gsteiert 0:d42cfc64e43e 31 *
gsteiert 0:d42cfc64e43e 32 * #include "ARD2PMD.h"
gsteiert 0:d42cfc64e43e 33 *
gsteiert 4:f016a009708c 34 * ARD2PMD a2p();
gsteiert 0:d42cfc64e43e 35 *
gsteiert 0:d42cfc64e43e 36 * int main() {
gsteiert 4:f016a009708c 37 * a2p.mux.setAB((ARD2PMD::RX | ARD2PMD::PA3), (ARD2PMD::TX | ARD2PMD::PA2));
gsteiert 0:d42cfc64e43e 38 * }
gsteiert 0:d42cfc64e43e 39 * @endcode
gsteiert 0:d42cfc64e43e 40 */
gsteiert 0:d42cfc64e43e 41 class ARD2PMD
gsteiert 0:d42cfc64e43e 42 {
gsteiert 0:d42cfc64e43e 43 public:
gsteiert 0:d42cfc64e43e 44
gsteiert 0:d42cfc64e43e 45 /** Create a ARD2PMD interface
gsteiert 0:d42cfc64e43e 46 *
gsteiert 0:d42cfc64e43e 47 * @param sda I2C data line pin
gsteiert 0:d42cfc64e43e 48 * @param scl I2C clock line pin
gsteiert 0:d42cfc64e43e 49 * @param addr MAX14661 I2C address
gsteiert 0:d42cfc64e43e 50 */
gsteiert 3:18ae8990f74b 51 ARD2PMD();
gsteiert 0:d42cfc64e43e 52
gsteiert 0:d42cfc64e43e 53 ~ARD2PMD();
gsteiert 0:d42cfc64e43e 54
gsteiert 3:18ae8990f74b 55 /** Initialize the digital pins and PWM
gsteiert 3:18ae8990f74b 56 *
gsteiert 3:18ae8990f74b 57 */
gsteiert 3:18ae8990f74b 58 void init();
gsteiert 3:18ae8990f74b 59
gsteiert 3:18ae8990f74b 60 /** ard2pmd resources mux, digital IO
gsteiert 3:18ae8990f74b 61 */
gsteiert 3:18ae8990f74b 62 MAX14661 mux;
gsteiert 3:18ae8990f74b 63 DigitalInOut pa1;
gsteiert 3:18ae8990f74b 64 DigitalInOut pa2;
gsteiert 3:18ae8990f74b 65 DigitalInOut pa3;
gsteiert 3:18ae8990f74b 66 DigitalInOut pa4;
gsteiert 3:18ae8990f74b 67 DigitalInOut pb1;
gsteiert 3:18ae8990f74b 68 DigitalInOut pb2;
gsteiert 3:18ae8990f74b 69 DigitalInOut pb3;
gsteiert 3:18ae8990f74b 70 DigitalInOut pb4;
gsteiert 3:18ae8990f74b 71
gsteiert 3:18ae8990f74b 72 /** Array of pointers to the DIO pins
gsteiert 3:18ae8990f74b 73 */
gsteiert 3:18ae8990f74b 74 DigitalInOut *pmd[8];
gsteiert 3:18ae8990f74b 75
gsteiert 3:18ae8990f74b 76 /** LUT for multiplexer micro connections
gsteiert 3:18ae8990f74b 77 */
gsteiert 3:18ae8990f74b 78 static const int mux_a[17];
gsteiert 3:18ae8990f74b 79
gsteiert 3:18ae8990f74b 80 /** LUT for multiplexer PMOD connections
gsteiert 3:18ae8990f74b 81 */
gsteiert 3:18ae8990f74b 82 static const int mux_p[9];
gsteiert 3:18ae8990f74b 83
gsteiert 0:d42cfc64e43e 84 /** Name the register addresses
gsteiert 0:d42cfc64e43e 85 */
gsteiert 0:d42cfc64e43e 86 enum MUXsignals {
gsteiert 2:722a0e1df9a9 87 RX = MAX14661::SW01, /**< UART Receive */
gsteiert 2:722a0e1df9a9 88 TX = MAX14661::SW02, /**< UART Transmit */
gsteiert 2:722a0e1df9a9 89 D2 = MAX14661::SW03, /**< Digital 2 */
gsteiert 2:722a0e1df9a9 90 D3 = MAX14661::SW04, /**< Digital 3 */
gsteiert 2:722a0e1df9a9 91 PB1 = MAX14661::SW05, /**< Pmd row B pin 1 */
gsteiert 2:722a0e1df9a9 92 PB2 = MAX14661::SW06, /**< Pmd row B pin 2 */
gsteiert 2:722a0e1df9a9 93 PB3 = MAX14661::SW07, /**< Pmd row B pin 3 */
gsteiert 2:722a0e1df9a9 94 PB4 = MAX14661::SW08, /**< Pmd row B pin 4 */
gsteiert 2:722a0e1df9a9 95 D8 = MAX14661::SW16, /**< Digital 8 */
gsteiert 2:722a0e1df9a9 96 D9 = MAX14661::SW15, /**< Digital 9 */
gsteiert 2:722a0e1df9a9 97 PA1 = MAX14661::SW14, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 98 PA2 = MAX14661::SW13, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 99 PA3 = MAX14661::SW12, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 100 PA4 = MAX14661::SW11, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 101 SDA = MAX14661::SW10, /**< I2C Data */
gsteiert 2:722a0e1df9a9 102 SCL = MAX14661::SW09 /**< I2C Clock */
gsteiert 0:d42cfc64e43e 103 };
gsteiert 0:d42cfc64e43e 104
gsteiert 0:d42cfc64e43e 105 };
gsteiert 0:d42cfc64e43e 106
gsteiert 0:d42cfc64e43e 107 #endif