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@0:fe5850ccdb6f, 2013-02-26 (annotated)
- Committer:
- Navin
- Date:
- Tue Feb 26 03:45:52 2013 +0000
- Revision:
- 0:fe5850ccdb6f
- Child:
- 1:9d3340bcd863
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Navin | 0:fe5850ccdb6f | 1 | |
Navin | 0:fe5850ccdb6f | 2 | |
Navin | 0:fe5850ccdb6f | 3 | /** |
Navin | 0:fe5850ccdb6f | 4 | * Implements the peripheral access functionalities |
Navin | 0:fe5850ccdb6f | 5 | */ |
Navin | 0:fe5850ccdb6f | 6 | |
Navin | 0:fe5850ccdb6f | 7 | #include "MbedPerAccess.h" |
Navin | 0:fe5850ccdb6f | 8 | #include "error.h" |
Navin | 0:fe5850ccdb6f | 9 | #include "mbed.h" |
Navin | 0:fe5850ccdb6f | 10 | |
Navin | 0:fe5850ccdb6f | 11 | /** |
Navin | 0:fe5850ccdb6f | 12 | * Outputs the given logic level at the given pin |
Navin | 0:fe5850ccdb6f | 13 | */ |
Navin | 0:fe5850ccdb6f | 14 | |
Navin | 0:fe5850ccdb6f | 15 | uint MbedPerAccess::digitalOut(uint pinNo, uint val) |
Navin | 0:fe5850ccdb6f | 16 | { |
Navin | 0:fe5850ccdb6f | 17 | DigitalOut ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, |
Navin | 0:fe5850ccdb6f | 18 | p21, p22, p23, p24, p25, p26, p27, p28, p29, LED1, LED1, LED2, LED3, LED4 |
Navin | 0:fe5850ccdb6f | 19 | }; |
Navin | 0:fe5850ccdb6f | 20 | if (pinNo > _maxDigiOutPins) { |
Navin | 0:fe5850ccdb6f | 21 | |
Navin | 0:fe5850ccdb6f | 22 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 23 | } |
Navin | 0:fe5850ccdb6f | 24 | if (val == 0) { |
Navin | 0:fe5850ccdb6f | 25 | ports[pinNo] = 0; |
Navin | 0:fe5850ccdb6f | 26 | } else { |
Navin | 0:fe5850ccdb6f | 27 | ports[pinNo] = 1; |
Navin | 0:fe5850ccdb6f | 28 | } |
Navin | 0:fe5850ccdb6f | 29 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 30 | } |
Navin | 0:fe5850ccdb6f | 31 | |
Navin | 0:fe5850ccdb6f | 32 | /** |
Navin | 0:fe5850ccdb6f | 33 | * Reads the voltage level at given pin and returns |
Navin | 0:fe5850ccdb6f | 34 | * it's logical value. |
Navin | 0:fe5850ccdb6f | 35 | */ |
Navin | 0:fe5850ccdb6f | 36 | |
Navin | 0:fe5850ccdb6f | 37 | uint MbedPerAccess::digitalIn(uint pinNo, uint * val) |
Navin | 0:fe5850ccdb6f | 38 | { |
Navin | 0:fe5850ccdb6f | 39 | DigitalIn ports[] = {p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, |
Navin | 0:fe5850ccdb6f | 40 | p21, p22, p23, p24, p25, p26, p27, p28, p29 |
Navin | 0:fe5850ccdb6f | 41 | }; |
Navin | 0:fe5850ccdb6f | 42 | if (pinNo > _maxDigiInPins) { |
Navin | 0:fe5850ccdb6f | 43 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 44 | } |
Navin | 0:fe5850ccdb6f | 45 | |
Navin | 0:fe5850ccdb6f | 46 | |
Navin | 0:fe5850ccdb6f | 47 | *val = ports[pinNo]; |
Navin | 0:fe5850ccdb6f | 48 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 49 | } |
Navin | 0:fe5850ccdb6f | 50 | |
Navin | 0:fe5850ccdb6f | 51 | /** |
Navin | 0:fe5850ccdb6f | 52 | * Outputs the analog value. |
Navin | 0:fe5850ccdb6f | 53 | */ |
Navin | 0:fe5850ccdb6f | 54 | |
Navin | 0:fe5850ccdb6f | 55 | uint MbedPerAccess::analogOut(uint pinNo, uint val) |
Navin | 0:fe5850ccdb6f | 56 | { |
Navin | 0:fe5850ccdb6f | 57 | AnalogOut aout(p18); |
Navin | 0:fe5850ccdb6f | 58 | if (val > _maxAnOutVal) { |
Navin | 0:fe5850ccdb6f | 59 | return ERR_INVALID_ARG; |
Navin | 0:fe5850ccdb6f | 60 | } |
Navin | 0:fe5850ccdb6f | 61 | /* Only one analog out */ |
Navin | 0:fe5850ccdb6f | 62 | if (pinNo != 18) { |
Navin | 0:fe5850ccdb6f | 63 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 64 | } |
Navin | 0:fe5850ccdb6f | 65 | aout = val; |
Navin | 0:fe5850ccdb6f | 66 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 67 | } |
Navin | 0:fe5850ccdb6f | 68 | |
Navin | 0:fe5850ccdb6f | 69 | /** |
Navin | 0:fe5850ccdb6f | 70 | * Reads the volatge at the given analog input pin |
Navin | 0:fe5850ccdb6f | 71 | * and returns the digital representation of the same |
Navin | 0:fe5850ccdb6f | 72 | */ |
Navin | 0:fe5850ccdb6f | 73 | |
Navin | 0:fe5850ccdb6f | 74 | uint MbedPerAccess::analogIn(uint pinNo, uint * outVal) |
Navin | 0:fe5850ccdb6f | 75 | { |
Navin | 0:fe5850ccdb6f | 76 | AnalogIn ana_in[] = { p15, p16, p17, p18, p19, p20}; |
Navin | 0:fe5850ccdb6f | 77 | if (pinNo > _maxAnInPins) { |
Navin | 0:fe5850ccdb6f | 78 | return ERR_INVALID_PIN; |
Navin | 0:fe5850ccdb6f | 79 | } |
Navin | 0:fe5850ccdb6f | 80 | |
Navin | 0:fe5850ccdb6f | 81 | *outVal = ana_in[pinNo]; |
Navin | 0:fe5850ccdb6f | 82 | return ERR_SUCCESS; |
Navin | 0:fe5850ccdb6f | 83 | } |