kobe leysen / DAQ

Dependents:   TEST

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?

UserRevisionLine numberNew 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 }