Lets you control your mbed from an easy to use GUI. Entire project is on git hub: https://github.com/navin-bhaskar/Controller For usage info follow this link http://navinbhaskar.blogspot.in/2013/02/arduino-controller-3.html
MbedPerAccess.cpp@1:9d3340bcd863, 2013-02-26 (annotated)
- Committer:
- Navin
- Date:
- Tue Feb 26 03:51:46 2013 +0000
- Revision:
- 1:9d3340bcd863
- Parent:
- 0:fe5850ccdb6f
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Navin | 1:9d3340bcd863 | 1 | /* |
Navin | 1:9d3340bcd863 | 2 | * This program is free software; you can redistribute it and/or modify |
Navin | 1:9d3340bcd863 | 3 | * it under the terms of the GNU General Public License as published by |
Navin | 1:9d3340bcd863 | 4 | * the Free Software Foundation; either version 2 of the License, or |
Navin | 1:9d3340bcd863 | 5 | * (at your option) any later version. |
Navin | 1:9d3340bcd863 | 6 | * |
Navin | 1:9d3340bcd863 | 7 | * This program is distributed in the hope that it will be useful, |
Navin | 1:9d3340bcd863 | 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
Navin | 1:9d3340bcd863 | 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
Navin | 1:9d3340bcd863 | 10 | * GNU General Public License for more details. |
Navin | 1:9d3340bcd863 | 11 | * |
Navin | 1:9d3340bcd863 | 12 | * You should have received a copy of the GNU General Public License |
Navin | 1:9d3340bcd863 | 13 | * along with this program; if not, write to the Free Software |
Navin | 1:9d3340bcd863 | 14 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
Navin | 1:9d3340bcd863 | 15 | * MA 02110-1301, USA. |
Navin | 1:9d3340bcd863 | 16 | * |
Navin | 1:9d3340bcd863 | 17 | */ |
Navin | 1:9d3340bcd863 | 18 | |
Navin | 1:9d3340bcd863 | 19 | /** |
Navin | 1:9d3340bcd863 | 20 | * \brief Implements the mbed perephiral access interface |
Navin | 1:9d3340bcd863 | 21 | * \author Navin Bhaskar |
Navin | 1:9d3340bcd863 | 22 | */ |
Navin | 0:fe5850ccdb6f | 23 | |
Navin | 0:fe5850ccdb6f | 24 | /** |
Navin | 0:fe5850ccdb6f | 25 | * Implements the peripheral access functionalities |
Navin | 0:fe5850ccdb6f | 26 | */ |
Navin | 0:fe5850ccdb6f | 27 | |
Navin | 0:fe5850ccdb6f | 28 | #include "MbedPerAccess.h" |
Navin | 0:fe5850ccdb6f | 29 | #include "error.h" |
Navin | 0:fe5850ccdb6f | 30 | #include "mbed.h" |
Navin | 0:fe5850ccdb6f | 31 | |
Navin | 0:fe5850ccdb6f | 32 | /** |
Navin | 0:fe5850ccdb6f | 33 | * Outputs the given logic level at the given pin |
Navin | 0:fe5850ccdb6f | 34 | */ |
Navin | 0:fe5850ccdb6f | 35 | |
Navin | 0:fe5850ccdb6f | 36 | uint MbedPerAccess::digitalOut(uint pinNo, uint val) |
Navin | 0:fe5850ccdb6f | 37 | { |
Navin | 0:fe5850ccdb6f | 38 | DigitalOut ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, |
Navin | 0:fe5850ccdb6f | 39 | p21, p22, p23, p24, p25, p26, p27, p28, p29, LED1, LED1, LED2, LED3, LED4 |
Navin | 0:fe5850ccdb6f | 40 | }; |
Navin | 0:fe5850ccdb6f | 41 | if (pinNo > _maxDigiOutPins) { |
Navin | 0:fe5850ccdb6f | 42 | |
Navin | 0:fe5850ccdb6f | 43 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 44 | } |
Navin | 0:fe5850ccdb6f | 45 | if (val == 0) { |
Navin | 0:fe5850ccdb6f | 46 | ports[pinNo] = 0; |
Navin | 0:fe5850ccdb6f | 47 | } else { |
Navin | 0:fe5850ccdb6f | 48 | ports[pinNo] = 1; |
Navin | 0:fe5850ccdb6f | 49 | } |
Navin | 0:fe5850ccdb6f | 50 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 51 | } |
Navin | 0:fe5850ccdb6f | 52 | |
Navin | 0:fe5850ccdb6f | 53 | /** |
Navin | 0:fe5850ccdb6f | 54 | * Reads the voltage level at given pin and returns |
Navin | 0:fe5850ccdb6f | 55 | * it's logical value. |
Navin | 0:fe5850ccdb6f | 56 | */ |
Navin | 0:fe5850ccdb6f | 57 | |
Navin | 0:fe5850ccdb6f | 58 | uint MbedPerAccess::digitalIn(uint pinNo, uint * val) |
Navin | 0:fe5850ccdb6f | 59 | { |
Navin | 0:fe5850ccdb6f | 60 | DigitalIn ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, |
Navin | 0:fe5850ccdb6f | 61 | p21, p22, p23, p24, p25, p26, p27, p28, p29 |
Navin | 0:fe5850ccdb6f | 62 | }; |
Navin | 0:fe5850ccdb6f | 63 | if (pinNo > _maxDigiInPins) { |
Navin | 0:fe5850ccdb6f | 64 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 65 | } |
Navin | 0:fe5850ccdb6f | 66 | |
Navin | 0:fe5850ccdb6f | 67 | |
Navin | 0:fe5850ccdb6f | 68 | *val = ports[pinNo]; |
Navin | 0:fe5850ccdb6f | 69 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 70 | } |
Navin | 0:fe5850ccdb6f | 71 | |
Navin | 0:fe5850ccdb6f | 72 | /** |
Navin | 0:fe5850ccdb6f | 73 | * Outputs the analog value. |
Navin | 0:fe5850ccdb6f | 74 | */ |
Navin | 0:fe5850ccdb6f | 75 | |
Navin | 0:fe5850ccdb6f | 76 | uint MbedPerAccess::analogOut(uint pinNo, uint val) |
Navin | 0:fe5850ccdb6f | 77 | { |
Navin | 0:fe5850ccdb6f | 78 | AnalogOut aout(p18); |
Navin | 0:fe5850ccdb6f | 79 | if (val > _maxAnOutVal) { |
Navin | 0:fe5850ccdb6f | 80 | return ERR_INVALID_ARG; |
Navin | 0:fe5850ccdb6f | 81 | } |
Navin | 0:fe5850ccdb6f | 82 | /* Only one analog out */ |
Navin | 0:fe5850ccdb6f | 83 | if (pinNo != 18) { |
Navin | 0:fe5850ccdb6f | 84 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 85 | } |
Navin | 0:fe5850ccdb6f | 86 | aout = val; |
Navin | 0:fe5850ccdb6f | 87 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 88 | } |
Navin | 0:fe5850ccdb6f | 89 | |
Navin | 0:fe5850ccdb6f | 90 | /** |
Navin | 0:fe5850ccdb6f | 91 | * Reads the volatge at the given analog input pin |
Navin | 0:fe5850ccdb6f | 92 | * and returns the digital representation of the same |
Navin | 0:fe5850ccdb6f | 93 | */ |
Navin | 0:fe5850ccdb6f | 94 | |
Navin | 0:fe5850ccdb6f | 95 | uint MbedPerAccess::analogIn(uint pinNo, uint * outVal) |
Navin | 0:fe5850ccdb6f | 96 | { |
Navin | 0:fe5850ccdb6f | 97 | AnalogIn ana_in[] = { p15, p16, p17, p18, p19, p20}; |
Navin | 0:fe5850ccdb6f | 98 | if (pinNo > _maxAnInPins) { |
Navin | 0:fe5850ccdb6f | 99 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 100 | } |
Navin | 0:fe5850ccdb6f | 101 | |
Navin | 0:fe5850ccdb6f | 102 | *outVal = ana_in[pinNo]; |
Navin | 0:fe5850ccdb6f | 103 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 104 | } |