Arduino to Peripheral Module adapter library
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
Index | Name | Pmod |
---|---|---|
0 | pa1 | 1 |
1 | pa2 | 2 |
2 | pa3 | 3 |
3 | pa4 | 4 |
4 | pb1 | 7 |
5 | pb2 | 8 |
6 | pb3 | 9 |
7 | pb4 | 10 |
MAX14661 Multiplexer Abstraction
mux_a[17]
is an array of integers representing the bit mask of a multiplexer switch arranged in Arduino order
Index | Pin | Name |
---|---|---|
0 | D0 | RX |
1 | D1 | TX |
2 | D2 | D3 |
3 | D3 | D4 |
4 | D4 | PB1 |
5 | D5 | PB2 |
6 | D6 | PB3 |
7 | D7 | PB4 |
8 | D8 | D8 |
9 | D9 | D9 |
10 | D10 | PA1 |
11 | D11 | PA2 |
12 | D12 | PA3 |
13 | D13 | PA4 |
14 | D14 | SDA |
15 | D15 | SCL |
16 | na | 0 |
mux_p[9]
is an array of integers representing the bit mask of a multiplexer switch arranged in Pmod order
Index | Pin | Name |
---|---|---|
0 | D10 | PA1 |
1 | D11 | PA2 |
2 | D12 | PA3 |
3 | D13 | PA4 |
4 | D4 | PB1 |
5 | D5 | PB2 |
6 | D6 | PB3 |
7 | D7 | PB4 |
8 | na | 0 |
ARD2PMD.h@0:d42cfc64e43e, 2014-02-10 (annotated)
- Committer:
- gsteiert
- Date:
- Mon Feb 10 03:10:39 2014 +0000
- Revision:
- 0:d42cfc64e43e
- Child:
- 2:722a0e1df9a9
Initial commit of ARD2PMD
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:d42cfc64e43e | 34 | * ARD2PMD a2p(p28, p27); |
gsteiert | 0:d42cfc64e43e | 35 | * |
gsteiert | 0:d42cfc64e43e | 36 | * int main() { |
gsteiert | 0:d42cfc64e43e | 37 | * a2p.setMux((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 | 0:d42cfc64e43e | 51 | ARD2PMD(PinName sda, PinName scl, int addr = 0x98); |
gsteiert | 0:d42cfc64e43e | 52 | |
gsteiert | 0:d42cfc64e43e | 53 | ~ARD2PMD(); |
gsteiert | 0:d42cfc64e43e | 54 | |
gsteiert | 0:d42cfc64e43e | 55 | /** Name the register addresses |
gsteiert | 0:d42cfc64e43e | 56 | */ |
gsteiert | 0:d42cfc64e43e | 57 | enum MUXsignals { |
gsteiert | 0:d42cfc64e43e | 58 | RX = MAX14661::SW01, |
gsteiert | 0:d42cfc64e43e | 59 | TX = MAX14661::SW02, |
gsteiert | 0:d42cfc64e43e | 60 | D2 = MAX14661::SW03, |
gsteiert | 0:d42cfc64e43e | 61 | D3 = MAX14661::SW04, |
gsteiert | 0:d42cfc64e43e | 62 | PB1 = MAX14661::SW05, |
gsteiert | 0:d42cfc64e43e | 63 | PB2 = MAX14661::SW06, |
gsteiert | 0:d42cfc64e43e | 64 | PB3 = MAX14661::SW07, |
gsteiert | 0:d42cfc64e43e | 65 | PB4 = MAX14661::SW08, |
gsteiert | 0:d42cfc64e43e | 66 | D8 = MAX14661::SW09, |
gsteiert | 0:d42cfc64e43e | 67 | D9 = MAX14661::SW10, |
gsteiert | 0:d42cfc64e43e | 68 | PA1 = MAX14661::SW11, |
gsteiert | 0:d42cfc64e43e | 69 | PA2 = MAX14661::SW12, |
gsteiert | 0:d42cfc64e43e | 70 | PA3 = MAX14661::SW13, |
gsteiert | 0:d42cfc64e43e | 71 | PA4 = MAX14661::SW14, |
gsteiert | 0:d42cfc64e43e | 72 | SDA = MAX14661::SW15, |
gsteiert | 0:d42cfc64e43e | 73 | SCL = MAX14661::SW16 |
gsteiert | 0:d42cfc64e43e | 74 | }; |
gsteiert | 0:d42cfc64e43e | 75 | |
gsteiert | 0:d42cfc64e43e | 76 | /** Opens all mux switches |
gsteiert | 0:d42cfc64e43e | 77 | */ |
gsteiert | 0:d42cfc64e43e | 78 | void clearMux(); |
gsteiert | 0:d42cfc64e43e | 79 | |
gsteiert | 0:d42cfc64e43e | 80 | /** Simultaneously sets both mux channels |
gsteiert | 0:d42cfc64e43e | 81 | * |
gsteiert | 0:d42cfc64e43e | 82 | * @param chA the signals to route through channel A |
gsteiert | 0:d42cfc64e43e | 83 | * @param chB the signals to route through channel B |
gsteiert | 0:d42cfc64e43e | 84 | */ |
gsteiert | 0:d42cfc64e43e | 85 | void setMux(int chA, int chB); |
gsteiert | 0:d42cfc64e43e | 86 | |
gsteiert | 0:d42cfc64e43e | 87 | /** Convert peripheral pin index to mux bit |
gsteiert | 0:d42cfc64e43e | 88 | * |
gsteiert | 0:d42cfc64e43e | 89 | * @param index the index [7-0] of desired pin on the peripheral connector |
gsteiert | 0:d42cfc64e43e | 90 | */ |
gsteiert | 0:d42cfc64e43e | 91 | int iToMux(int index); |
gsteiert | 0:d42cfc64e43e | 92 | |
gsteiert | 0:d42cfc64e43e | 93 | private: |
gsteiert | 0:d42cfc64e43e | 94 | MAX14661 _mux; |
gsteiert | 0:d42cfc64e43e | 95 | }; |
gsteiert | 0:d42cfc64e43e | 96 | |
gsteiert | 0:d42cfc64e43e | 97 | #endif |