Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Multiplexer.cpp@4:cc896bb62196, 2014-06-03 (annotated)
- Committer:
- leysenkobe
- Date:
- Tue Jun 03 07:32:20 2014 +0000
- Revision:
- 4:cc896bb62196
- Parent:
- 0:88f8e80dc5fd
nieuwe pinnen
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| leysenkobe | 0:88f8e80dc5fd | 1 | #include "Multiplexer.h" |
| leysenkobe | 0:88f8e80dc5fd | 2 | #include "mbed.h" |
| leysenkobe | 0:88f8e80dc5fd | 3 | |
| leysenkobe | 4:cc896bb62196 | 4 | DigitalOut sync(p21); |
| leysenkobe | 4:cc896bb62196 | 5 | DigitalOut sclk_mux(p23); |
| leysenkobe | 4:cc896bb62196 | 6 | DigitalOut din(p22); |
| leysenkobe | 0:88f8e80dc5fd | 7 | |
| leysenkobe | 0:88f8e80dc5fd | 8 | #define ENABLE 7 |
| leysenkobe | 0:88f8e80dc5fd | 9 | #define CSA 6 |
| leysenkobe | 0:88f8e80dc5fd | 10 | #define CSB 5 |
| leysenkobe | 0:88f8e80dc5fd | 11 | #define UNUSED_BIT 4 |
| leysenkobe | 0:88f8e80dc5fd | 12 | #define A3 3 |
| leysenkobe | 0:88f8e80dc5fd | 13 | #define A2 2 |
| leysenkobe | 0:88f8e80dc5fd | 14 | #define A1 1 |
| leysenkobe | 0:88f8e80dc5fd | 15 | #define A0 0 |
| leysenkobe | 0:88f8e80dc5fd | 16 | |
| leysenkobe | 0:88f8e80dc5fd | 17 | //Constructor & Destructor |
| leysenkobe | 0:88f8e80dc5fd | 18 | Multiplexer::Multiplexer(void) |
| leysenkobe | 0:88f8e80dc5fd | 19 | { |
| leysenkobe | 0:88f8e80dc5fd | 20 | sclk_mux = 0; |
| leysenkobe | 0:88f8e80dc5fd | 21 | sync = 1; |
| leysenkobe | 0:88f8e80dc5fd | 22 | din = 0; |
| leysenkobe | 0:88f8e80dc5fd | 23 | |
| leysenkobe | 0:88f8e80dc5fd | 24 | enable = false; |
| leysenkobe | 0:88f8e80dc5fd | 25 | channel = 0; |
| leysenkobe | 0:88f8e80dc5fd | 26 | } |
| leysenkobe | 0:88f8e80dc5fd | 27 | Multiplexer::~Multiplexer(void) |
| leysenkobe | 0:88f8e80dc5fd | 28 | { |
| leysenkobe | 0:88f8e80dc5fd | 29 | } |
| leysenkobe | 0:88f8e80dc5fd | 30 | |
| leysenkobe | 0:88f8e80dc5fd | 31 | //GETTERS |
| leysenkobe | 0:88f8e80dc5fd | 32 | bool Multiplexer::Enabled(void) |
| leysenkobe | 0:88f8e80dc5fd | 33 | { |
| leysenkobe | 0:88f8e80dc5fd | 34 | return(enable); |
| leysenkobe | 0:88f8e80dc5fd | 35 | } |
| leysenkobe | 0:88f8e80dc5fd | 36 | int Multiplexer::getChannel(void) |
| leysenkobe | 0:88f8e80dc5fd | 37 | { |
| leysenkobe | 0:88f8e80dc5fd | 38 | return(channel); |
| leysenkobe | 0:88f8e80dc5fd | 39 | } |
| leysenkobe | 0:88f8e80dc5fd | 40 | |
| leysenkobe | 0:88f8e80dc5fd | 41 | //SETTERS |
| leysenkobe | 0:88f8e80dc5fd | 42 | void Multiplexer::Enable(void) |
| leysenkobe | 0:88f8e80dc5fd | 43 | { |
| leysenkobe | 0:88f8e80dc5fd | 44 | enable = true; |
| leysenkobe | 0:88f8e80dc5fd | 45 | Update(); |
| leysenkobe | 0:88f8e80dc5fd | 46 | } |
| leysenkobe | 0:88f8e80dc5fd | 47 | void Multiplexer::Disable(void) |
| leysenkobe | 0:88f8e80dc5fd | 48 | { |
| leysenkobe | 0:88f8e80dc5fd | 49 | enable = false; |
| leysenkobe | 0:88f8e80dc5fd | 50 | Update(); |
| leysenkobe | 0:88f8e80dc5fd | 51 | } |
| leysenkobe | 0:88f8e80dc5fd | 52 | void Multiplexer::setChannel(int newChannel) |
| leysenkobe | 0:88f8e80dc5fd | 53 | { |
| leysenkobe | 0:88f8e80dc5fd | 54 | if(newChannel>=0 && newChannel<16) |
| leysenkobe | 0:88f8e80dc5fd | 55 | { |
| leysenkobe | 0:88f8e80dc5fd | 56 | channel = newChannel; |
| leysenkobe | 0:88f8e80dc5fd | 57 | Update(); |
| leysenkobe | 0:88f8e80dc5fd | 58 | } |
| leysenkobe | 0:88f8e80dc5fd | 59 | } |
| leysenkobe | 0:88f8e80dc5fd | 60 | |
| leysenkobe | 0:88f8e80dc5fd | 61 | //updater |
| leysenkobe | 0:88f8e80dc5fd | 62 | void Multiplexer::Update(void) |
| leysenkobe | 0:88f8e80dc5fd | 63 | { |
| leysenkobe | 0:88f8e80dc5fd | 64 | |
| leysenkobe | 0:88f8e80dc5fd | 65 | //onze data opmaken |
| leysenkobe | 0:88f8e80dc5fd | 66 | char data = 0; |
| leysenkobe | 0:88f8e80dc5fd | 67 | data |= !enable << ENABLE; |
| leysenkobe | 0:88f8e80dc5fd | 68 | data |= 0 << CSA; |
| leysenkobe | 0:88f8e80dc5fd | 69 | data |= 0 << CSB; |
| leysenkobe | 0:88f8e80dc5fd | 70 | data |= 1 << UNUSED_BIT; |
| leysenkobe | 0:88f8e80dc5fd | 71 | data |= channel; |
| leysenkobe | 0:88f8e80dc5fd | 72 | |
| leysenkobe | 0:88f8e80dc5fd | 73 | //Timing diagrama uitvoeren |
| leysenkobe | 0:88f8e80dc5fd | 74 | sclk_mux = 1; |
| leysenkobe | 0:88f8e80dc5fd | 75 | wait_us(1); |
| leysenkobe | 0:88f8e80dc5fd | 76 | |
| leysenkobe | 0:88f8e80dc5fd | 77 | sclk_mux = 0; |
| leysenkobe | 0:88f8e80dc5fd | 78 | wait_us(1); |
| leysenkobe | 0:88f8e80dc5fd | 79 | |
| leysenkobe | 0:88f8e80dc5fd | 80 | sync = 0; |
| leysenkobe | 0:88f8e80dc5fd | 81 | for (int i = 7; i >= 0; i--) |
| leysenkobe | 0:88f8e80dc5fd | 82 | { |
| leysenkobe | 0:88f8e80dc5fd | 83 | sclk_mux = 1; |
| leysenkobe | 0:88f8e80dc5fd | 84 | din = (data >> i) & 1; |
| leysenkobe | 0:88f8e80dc5fd | 85 | wait_us(1); |
| leysenkobe | 0:88f8e80dc5fd | 86 | |
| leysenkobe | 0:88f8e80dc5fd | 87 | sclk_mux = 0; |
| leysenkobe | 0:88f8e80dc5fd | 88 | wait_us(1); |
| leysenkobe | 0:88f8e80dc5fd | 89 | } |
| leysenkobe | 0:88f8e80dc5fd | 90 | |
| leysenkobe | 0:88f8e80dc5fd | 91 | //terug standaard waarden |
| leysenkobe | 0:88f8e80dc5fd | 92 | sclk_mux = 0; |
| leysenkobe | 0:88f8e80dc5fd | 93 | sync = 1; |
| leysenkobe | 0:88f8e80dc5fd | 94 | din = 0; |
| leysenkobe | 0:88f8e80dc5fd | 95 | } |