kobe leysen / DAQ

Dependents:   TEST

Committer:
leysenkobe
Date:
Wed Mar 19 10:46:01 2014 +0000
Revision:
1:d8a3df4b70f6
Parent:
0:88f8e80dc5fd
Child:
4:cc896bb62196
version 0.2

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 1:d8a3df4b70f6 49 for (int i = 15; i >= 0; i--)
leysenkobe 0:88f8e80dc5fd 50 {
leysenkobe 0:88f8e80dc5fd 51 sdclk = 1;
leysenkobe 0:88f8e80dc5fd 52 wait_us(1);
leysenkobe 0:88f8e80dc5fd 53
leysenkobe 0:88f8e80dc5fd 54 data |= sdout <<i;
leysenkobe 0:88f8e80dc5fd 55 sdclk = 0;
leysenkobe 0:88f8e80dc5fd 56 wait_us(1);
leysenkobe 0:88f8e80dc5fd 57 }
leysenkobe 0:88f8e80dc5fd 58 return(data);
leysenkobe 0:88f8e80dc5fd 59 }
leysenkobe 0:88f8e80dc5fd 60 bool ADC::getBIPOLAR(void)
leysenkobe 0:88f8e80dc5fd 61 {
leysenkobe 0:88f8e80dc5fd 62 return(this->BIPOLAR);
leysenkobe 0:88f8e80dc5fd 63 }
leysenkobe 0:88f8e80dc5fd 64 bool ADC::getTEN(void)
leysenkobe 0:88f8e80dc5fd 65 {
leysenkobe 0:88f8e80dc5fd 66 return(this->TEN);
leysenkobe 0:88f8e80dc5fd 67 }
leysenkobe 0:88f8e80dc5fd 68 bool ADC::getPD(void)
leysenkobe 0:88f8e80dc5fd 69 {
leysenkobe 0:88f8e80dc5fd 70 return(this->PD);
leysenkobe 0:88f8e80dc5fd 71 }
leysenkobe 0:88f8e80dc5fd 72 bool ADC::getIMPULSE(void)
leysenkobe 0:88f8e80dc5fd 73 {
leysenkobe 0:88f8e80dc5fd 74 return(this->IMPULSE);
leysenkobe 0:88f8e80dc5fd 75 }
leysenkobe 0:88f8e80dc5fd 76 bool ADC::getWARP(void)
leysenkobe 0:88f8e80dc5fd 77 {
leysenkobe 0:88f8e80dc5fd 78 return(this->WARP);
leysenkobe 0:88f8e80dc5fd 79 }
leysenkobe 0:88f8e80dc5fd 80 bool ADC::getOB_2C(void)
leysenkobe 0:88f8e80dc5fd 81 {
leysenkobe 0:88f8e80dc5fd 82 return(this->OB_2C);
leysenkobe 0:88f8e80dc5fd 83 }
leysenkobe 0:88f8e80dc5fd 84
leysenkobe 0:88f8e80dc5fd 85
leysenkobe 0:88f8e80dc5fd 86 //SETTERS
leysenkobe 0:88f8e80dc5fd 87 void ADC::setBIPOLAR(bool bipolar)
leysenkobe 0:88f8e80dc5fd 88 {
leysenkobe 0:88f8e80dc5fd 89 this->BIPOLAR = bipolar;
leysenkobe 0:88f8e80dc5fd 90 this->setADC();
leysenkobe 0:88f8e80dc5fd 91 }
leysenkobe 0:88f8e80dc5fd 92 void ADC::setTEN(bool ten)
leysenkobe 0:88f8e80dc5fd 93 {
leysenkobe 0:88f8e80dc5fd 94 this->TEN = ten;
leysenkobe 0:88f8e80dc5fd 95 this->setADC();
leysenkobe 0:88f8e80dc5fd 96 }
leysenkobe 0:88f8e80dc5fd 97 void ADC::setPD(bool pd)
leysenkobe 0:88f8e80dc5fd 98 {
leysenkobe 0:88f8e80dc5fd 99 this->PD = pd;
leysenkobe 0:88f8e80dc5fd 100 this->setADC();
leysenkobe 0:88f8e80dc5fd 101 }
leysenkobe 0:88f8e80dc5fd 102 void ADC::setIMPULSE(bool impulse)
leysenkobe 0:88f8e80dc5fd 103 {
leysenkobe 0:88f8e80dc5fd 104 this->IMPULSE = impulse;
leysenkobe 0:88f8e80dc5fd 105 this->setADC();
leysenkobe 0:88f8e80dc5fd 106 }
leysenkobe 0:88f8e80dc5fd 107 void ADC::setWARP(bool warp)
leysenkobe 0:88f8e80dc5fd 108 {
leysenkobe 0:88f8e80dc5fd 109 this->WARP = warp;
leysenkobe 0:88f8e80dc5fd 110 this->setADC();
leysenkobe 0:88f8e80dc5fd 111 }
leysenkobe 0:88f8e80dc5fd 112 void ADC::setOB_2C(bool ob_2c)
leysenkobe 0:88f8e80dc5fd 113 {
leysenkobe 0:88f8e80dc5fd 114 this->OB_2C = ob_2c;
leysenkobe 0:88f8e80dc5fd 115 this->setADC();
leysenkobe 0:88f8e80dc5fd 116 }
leysenkobe 0:88f8e80dc5fd 117
leysenkobe 0:88f8e80dc5fd 118
leysenkobe 0:88f8e80dc5fd 119 //privates
leysenkobe 0:88f8e80dc5fd 120 void ADC::setADC(void)
leysenkobe 0:88f8e80dc5fd 121 {
leysenkobe 0:88f8e80dc5fd 122 //onze data opmaken
leysenkobe 0:88f8e80dc5fd 123 char data = 0;
leysenkobe 0:88f8e80dc5fd 124 data |= this->BIPOLAR << 7;
leysenkobe 0:88f8e80dc5fd 125 data |= this->TEN << 6;
leysenkobe 0:88f8e80dc5fd 126 data |= this->PD << 5;
leysenkobe 0:88f8e80dc5fd 127 data |= this->IMPULSE << 4;
leysenkobe 0:88f8e80dc5fd 128 data |= this->WARP << 3;
leysenkobe 0:88f8e80dc5fd 129 data |= this->OB_2C << 2;
leysenkobe 0:88f8e80dc5fd 130 data |= 0 << 1;
leysenkobe 0:88f8e80dc5fd 131 data |= 0 << 0;
leysenkobe 0:88f8e80dc5fd 132
leysenkobe 0:88f8e80dc5fd 133 //Timing diagrama uitvoeren
leysenkobe 0:88f8e80dc5fd 134 scclk = 0;
leysenkobe 0:88f8e80dc5fd 135 //1. SCCS LAAG MAKEN
leysenkobe 0:88f8e80dc5fd 136 sccs = 0;
leysenkobe 0:88f8e80dc5fd 137 wait_us(1);
leysenkobe 0:88f8e80dc5fd 138
leysenkobe 0:88f8e80dc5fd 139 //2. STARTBIT VERZENDEN
leysenkobe 0:88f8e80dc5fd 140 scin=1;
leysenkobe 0:88f8e80dc5fd 141 scclk = 1;
leysenkobe 0:88f8e80dc5fd 142 wait_us(1);
leysenkobe 0:88f8e80dc5fd 143
leysenkobe 0:88f8e80dc5fd 144 scclk = 0;
leysenkobe 0:88f8e80dc5fd 145 wait_us(1);
leysenkobe 0:88f8e80dc5fd 146
leysenkobe 0:88f8e80dc5fd 147 //3. onze data verwerken
leysenkobe 0:88f8e80dc5fd 148 for (int i = 7; i >= 0; i--)
leysenkobe 0:88f8e80dc5fd 149 {
leysenkobe 0:88f8e80dc5fd 150 scin = (data >> i) & 1;
leysenkobe 0:88f8e80dc5fd 151 scclk = 1;
leysenkobe 0:88f8e80dc5fd 152 wait_us(1);
leysenkobe 0:88f8e80dc5fd 153
leysenkobe 0:88f8e80dc5fd 154 scclk = 0;
leysenkobe 0:88f8e80dc5fd 155 wait_us(1);
leysenkobe 0:88f8e80dc5fd 156 }
leysenkobe 0:88f8e80dc5fd 157
leysenkobe 0:88f8e80dc5fd 158 //4. SCCS HOOG MAKEN
leysenkobe 0:88f8e80dc5fd 159 sccs = 1;
leysenkobe 0:88f8e80dc5fd 160 scclk = 0;
leysenkobe 0:88f8e80dc5fd 161 wait_us(1);
leysenkobe 0:88f8e80dc5fd 162 }