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.
ADC.cpp@1:d8a3df4b70f6, 2014-03-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |