kobe leysen / DAQ

Dependents:   TEST

Committer:
leysenkobe
Date:
Wed Mar 19 10:29:32 2014 +0000
Revision:
0:88f8e80dc5fd
Child:
1:d8a3df4b70f6
version 0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leysenkobe 0:88f8e80dc5fd 1 #include "ADC.h"
leysenkobe 0:88f8e80dc5fd 2 #include "mbed.h"
leysenkobe 0:88f8e80dc5fd 3 #include "stdint.h"
leysenkobe 0:88f8e80dc5fd 4
leysenkobe 0:88f8e80dc5fd 5 Serial bb(USBTX, USBRX);
leysenkobe 0:88f8e80dc5fd 6
leysenkobe 0:88f8e80dc5fd 7 DigitalIn busy(p26);
leysenkobe 0:88f8e80dc5fd 8 DigitalIn sdout(p22);
leysenkobe 0:88f8e80dc5fd 9 DigitalOut cnvst(p27);
leysenkobe 0:88f8e80dc5fd 10 DigitalOut sdclk(p21);
leysenkobe 0:88f8e80dc5fd 11
leysenkobe 0:88f8e80dc5fd 12 DigitalOut scin(p23);
leysenkobe 0:88f8e80dc5fd 13 DigitalOut sccs(p25);
leysenkobe 0:88f8e80dc5fd 14 DigitalOut scclk(p24);
leysenkobe 0:88f8e80dc5fd 15
leysenkobe 0:88f8e80dc5fd 16 ADC::ADC(void)
leysenkobe 0:88f8e80dc5fd 17 {
leysenkobe 0:88f8e80dc5fd 18 bb.baud(115200);
leysenkobe 0:88f8e80dc5fd 19
leysenkobe 0:88f8e80dc5fd 20 this->BIPOLAR = true;
leysenkobe 0:88f8e80dc5fd 21 this->TEN = true;
leysenkobe 0:88f8e80dc5fd 22 this->PD = false;
leysenkobe 0:88f8e80dc5fd 23 this->IMPULSE = true;
leysenkobe 0:88f8e80dc5fd 24 this->WARP = true;
leysenkobe 0:88f8e80dc5fd 25 this->OB_2C = true;
leysenkobe 0:88f8e80dc5fd 26
leysenkobe 0:88f8e80dc5fd 27 sccs = 1;
leysenkobe 0:88f8e80dc5fd 28 this->setADC();
leysenkobe 0:88f8e80dc5fd 29 }
leysenkobe 0:88f8e80dc5fd 30
leysenkobe 0:88f8e80dc5fd 31 ADC::~ADC(void)
leysenkobe 0:88f8e80dc5fd 32 {
leysenkobe 0:88f8e80dc5fd 33 }
leysenkobe 0:88f8e80dc5fd 34
leysenkobe 0:88f8e80dc5fd 35 //GETTERS
leysenkobe 0:88f8e80dc5fd 36 uint16_t ADC::measure(void)
leysenkobe 0:88f8e80dc5fd 37 {
leysenkobe 0:88f8e80dc5fd 38 //Hier gaan we de data uitlezen...
leysenkobe 0:88f8e80dc5fd 39 uint16_t data;
leysenkobe 0:88f8e80dc5fd 40
leysenkobe 0:88f8e80dc5fd 41 //1. new data conversion
leysenkobe 0:88f8e80dc5fd 42 cnvst = 0;
leysenkobe 0:88f8e80dc5fd 43 wait_us(1);
leysenkobe 0:88f8e80dc5fd 44
leysenkobe 0:88f8e80dc5fd 45 //2. nakijken of busy 0 is, of wachten tot hij 0 is.
leysenkobe 0:88f8e80dc5fd 46 while(busy == 1);
leysenkobe 0:88f8e80dc5fd 47 cnvst = 1;
leysenkobe 0:88f8e80dc5fd 48
leysenkobe 0:88f8e80dc5fd 49 //3. eerste byte vullen
leysenkobe 0:88f8e80dc5fd 50 for (int i = 15; i >= 8; i--)
leysenkobe 0:88f8e80dc5fd 51 {
leysenkobe 0:88f8e80dc5fd 52 sdclk = 1;
leysenkobe 0:88f8e80dc5fd 53 wait_us(1);
leysenkobe 0:88f8e80dc5fd 54
leysenkobe 0:88f8e80dc5fd 55 data |= sdout <<i;
leysenkobe 0:88f8e80dc5fd 56 sdclk = 0;
leysenkobe 0:88f8e80dc5fd 57 wait_us(1);
leysenkobe 0:88f8e80dc5fd 58 }
leysenkobe 0:88f8e80dc5fd 59
leysenkobe 0:88f8e80dc5fd 60 //4. tweede byte vullen
leysenkobe 0:88f8e80dc5fd 61 for (int i = 7; i >= 0; i--)
leysenkobe 0:88f8e80dc5fd 62 {
leysenkobe 0:88f8e80dc5fd 63 sdclk = 1;
leysenkobe 0:88f8e80dc5fd 64 wait_us(1);
leysenkobe 0:88f8e80dc5fd 65
leysenkobe 0:88f8e80dc5fd 66 data |= sdout <<i;
leysenkobe 0:88f8e80dc5fd 67 sdclk = 0;
leysenkobe 0:88f8e80dc5fd 68 wait_us(1);
leysenkobe 0:88f8e80dc5fd 69 }
leysenkobe 0:88f8e80dc5fd 70 return(data);
leysenkobe 0:88f8e80dc5fd 71 }
leysenkobe 0:88f8e80dc5fd 72 bool ADC::getBIPOLAR(void)
leysenkobe 0:88f8e80dc5fd 73 {
leysenkobe 0:88f8e80dc5fd 74 return(this->BIPOLAR);
leysenkobe 0:88f8e80dc5fd 75 }
leysenkobe 0:88f8e80dc5fd 76 bool ADC::getTEN(void)
leysenkobe 0:88f8e80dc5fd 77 {
leysenkobe 0:88f8e80dc5fd 78 return(this->TEN);
leysenkobe 0:88f8e80dc5fd 79 }
leysenkobe 0:88f8e80dc5fd 80 bool ADC::getPD(void)
leysenkobe 0:88f8e80dc5fd 81 {
leysenkobe 0:88f8e80dc5fd 82 return(this->PD);
leysenkobe 0:88f8e80dc5fd 83 }
leysenkobe 0:88f8e80dc5fd 84 bool ADC::getIMPULSE(void)
leysenkobe 0:88f8e80dc5fd 85 {
leysenkobe 0:88f8e80dc5fd 86 return(this->IMPULSE);
leysenkobe 0:88f8e80dc5fd 87 }
leysenkobe 0:88f8e80dc5fd 88 bool ADC::getWARP(void)
leysenkobe 0:88f8e80dc5fd 89 {
leysenkobe 0:88f8e80dc5fd 90 return(this->WARP);
leysenkobe 0:88f8e80dc5fd 91 }
leysenkobe 0:88f8e80dc5fd 92 bool ADC::getOB_2C(void)
leysenkobe 0:88f8e80dc5fd 93 {
leysenkobe 0:88f8e80dc5fd 94 return(this->OB_2C);
leysenkobe 0:88f8e80dc5fd 95 }
leysenkobe 0:88f8e80dc5fd 96
leysenkobe 0:88f8e80dc5fd 97
leysenkobe 0:88f8e80dc5fd 98 //SETTERS
leysenkobe 0:88f8e80dc5fd 99 void ADC::setBIPOLAR(bool bipolar)
leysenkobe 0:88f8e80dc5fd 100 {
leysenkobe 0:88f8e80dc5fd 101 this->BIPOLAR = bipolar;
leysenkobe 0:88f8e80dc5fd 102 this->setADC();
leysenkobe 0:88f8e80dc5fd 103 }
leysenkobe 0:88f8e80dc5fd 104 void ADC::setTEN(bool ten)
leysenkobe 0:88f8e80dc5fd 105 {
leysenkobe 0:88f8e80dc5fd 106 this->TEN = ten;
leysenkobe 0:88f8e80dc5fd 107 this->setADC();
leysenkobe 0:88f8e80dc5fd 108 }
leysenkobe 0:88f8e80dc5fd 109 void ADC::setPD(bool pd)
leysenkobe 0:88f8e80dc5fd 110 {
leysenkobe 0:88f8e80dc5fd 111 this->PD = pd;
leysenkobe 0:88f8e80dc5fd 112 this->setADC();
leysenkobe 0:88f8e80dc5fd 113 }
leysenkobe 0:88f8e80dc5fd 114 void ADC::setIMPULSE(bool impulse)
leysenkobe 0:88f8e80dc5fd 115 {
leysenkobe 0:88f8e80dc5fd 116 this->IMPULSE = impulse;
leysenkobe 0:88f8e80dc5fd 117 this->setADC();
leysenkobe 0:88f8e80dc5fd 118 }
leysenkobe 0:88f8e80dc5fd 119 void ADC::setWARP(bool warp)
leysenkobe 0:88f8e80dc5fd 120 {
leysenkobe 0:88f8e80dc5fd 121 this->WARP = warp;
leysenkobe 0:88f8e80dc5fd 122 this->setADC();
leysenkobe 0:88f8e80dc5fd 123 }
leysenkobe 0:88f8e80dc5fd 124 void ADC::setOB_2C(bool ob_2c)
leysenkobe 0:88f8e80dc5fd 125 {
leysenkobe 0:88f8e80dc5fd 126 this->OB_2C = ob_2c;
leysenkobe 0:88f8e80dc5fd 127 this->setADC();
leysenkobe 0:88f8e80dc5fd 128 }
leysenkobe 0:88f8e80dc5fd 129
leysenkobe 0:88f8e80dc5fd 130
leysenkobe 0:88f8e80dc5fd 131 //privates
leysenkobe 0:88f8e80dc5fd 132 void ADC::setADC(void)
leysenkobe 0:88f8e80dc5fd 133 {
leysenkobe 0:88f8e80dc5fd 134 //onze data opmaken
leysenkobe 0:88f8e80dc5fd 135 char data = 0;
leysenkobe 0:88f8e80dc5fd 136 data |= this->BIPOLAR << 7;
leysenkobe 0:88f8e80dc5fd 137 data |= this->TEN << 6;
leysenkobe 0:88f8e80dc5fd 138 data |= this->PD << 5;
leysenkobe 0:88f8e80dc5fd 139 data |= this->IMPULSE << 4;
leysenkobe 0:88f8e80dc5fd 140 data |= this->WARP << 3;
leysenkobe 0:88f8e80dc5fd 141 data |= this->OB_2C << 2;
leysenkobe 0:88f8e80dc5fd 142 data |= 0 << 1;
leysenkobe 0:88f8e80dc5fd 143 data |= 0 << 0;
leysenkobe 0:88f8e80dc5fd 144
leysenkobe 0:88f8e80dc5fd 145 //Timing diagrama uitvoeren
leysenkobe 0:88f8e80dc5fd 146 scclk = 0;
leysenkobe 0:88f8e80dc5fd 147 //1. SCCS LAAG MAKEN
leysenkobe 0:88f8e80dc5fd 148 sccs = 0;
leysenkobe 0:88f8e80dc5fd 149 wait_us(1);
leysenkobe 0:88f8e80dc5fd 150
leysenkobe 0:88f8e80dc5fd 151 //2. STARTBIT VERZENDEN
leysenkobe 0:88f8e80dc5fd 152 scin=1;
leysenkobe 0:88f8e80dc5fd 153 scclk = 1;
leysenkobe 0:88f8e80dc5fd 154 wait_us(1);
leysenkobe 0:88f8e80dc5fd 155
leysenkobe 0:88f8e80dc5fd 156 scclk = 0;
leysenkobe 0:88f8e80dc5fd 157 wait_us(1);
leysenkobe 0:88f8e80dc5fd 158
leysenkobe 0:88f8e80dc5fd 159 //3. onze data verwerken
leysenkobe 0:88f8e80dc5fd 160 for (int i = 7; i >= 0; i--)
leysenkobe 0:88f8e80dc5fd 161 {
leysenkobe 0:88f8e80dc5fd 162 scin = (data >> i) & 1;
leysenkobe 0:88f8e80dc5fd 163 scclk = 1;
leysenkobe 0:88f8e80dc5fd 164 wait_us(1);
leysenkobe 0:88f8e80dc5fd 165
leysenkobe 0:88f8e80dc5fd 166 scclk = 0;
leysenkobe 0:88f8e80dc5fd 167 wait_us(1);
leysenkobe 0:88f8e80dc5fd 168 }
leysenkobe 0:88f8e80dc5fd 169
leysenkobe 0:88f8e80dc5fd 170 //4. SCCS HOOG MAKEN
leysenkobe 0:88f8e80dc5fd 171 sccs = 1;
leysenkobe 0:88f8e80dc5fd 172 scclk = 0;
leysenkobe 0:88f8e80dc5fd 173 wait_us(1);
leysenkobe 0:88f8e80dc5fd 174 }