Converts the MBED in an oscilloscope by using the PC software from http://stampdock.com/ .. same as mbed_sccope, but the stampdock support code is put in a stampdock class. Also a debugged version of mbed_scope, as there was a problem with characters disappearing using putc after using getc which was tricky to find.

Dependencies:   mbed

Committer:
apspijkerman
Date:
Thu Jul 28 11:08:04 2011 +0000
Revision:
0:5b5830ede960

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
apspijkerman 0:5b5830ede960 1
apspijkerman 0:5b5830ede960 2
apspijkerman 0:5b5830ede960 3 #include "mbed.h"
apspijkerman 0:5b5830ede960 4 #include "stampdock.h"
apspijkerman 0:5b5830ede960 5
apspijkerman 0:5b5830ede960 6 Stampdock stampdock;
apspijkerman 0:5b5830ede960 7
apspijkerman 0:5b5830ede960 8 AnalogIn xa(p15);
apspijkerman 0:5b5830ede960 9 AnalogIn ya(p16);
apspijkerman 0:5b5830ede960 10
apspijkerman 0:5b5830ede960 11 // mode0 = low , mode1 = high
apspijkerman 0:5b5830ede960 12 // returns values of 0-65535 ?
apspijkerman 0:5b5830ede960 13
apspijkerman 0:5b5830ede960 14 int readadc(int p1, int p2, int p3, int chan, int mode)
apspijkerman 0:5b5830ede960 15 {
apspijkerman 0:5b5830ede960 16 int ret = 0;
apspijkerman 0:5b5830ede960 17
apspijkerman 0:5b5830ede960 18 if (mode == 0){
apspijkerman 0:5b5830ede960 19 if (chan == 0) ret = xa * 4096;
apspijkerman 0:5b5830ede960 20 if (chan == 1) ret = ya * 4096;
apspijkerman 0:5b5830ede960 21 }
apspijkerman 0:5b5830ede960 22 if (mode == 1){
apspijkerman 0:5b5830ede960 23 if (chan == 0) ret = xa * 256;
apspijkerman 0:5b5830ede960 24 if (chan == 1) ret = ya * 256;
apspijkerman 0:5b5830ede960 25 }
apspijkerman 0:5b5830ede960 26
apspijkerman 0:5b5830ede960 27 return ret;
apspijkerman 0:5b5830ede960 28 }
apspijkerman 0:5b5830ede960 29
apspijkerman 0:5b5830ede960 30 int measure( int chan, int mode)
apspijkerman 0:5b5830ede960 31 {
apspijkerman 0:5b5830ede960 32 int ret = 0;
apspijkerman 0:5b5830ede960 33
apspijkerman 0:5b5830ede960 34 if (mode == 0){
apspijkerman 0:5b5830ede960 35 if (chan == 0) ret = xa * 4096;
apspijkerman 0:5b5830ede960 36 if (chan == 1) ret = ya * 4096;
apspijkerman 0:5b5830ede960 37 }
apspijkerman 0:5b5830ede960 38 if (mode == 1){
apspijkerman 0:5b5830ede960 39 if (chan == 0) ret = xa * 256;
apspijkerman 0:5b5830ede960 40 if (chan == 1) ret = ya * 256;
apspijkerman 0:5b5830ede960 41 }
apspijkerman 0:5b5830ede960 42
apspijkerman 0:5b5830ede960 43 return ret;
apspijkerman 0:5b5830ede960 44 }
apspijkerman 0:5b5830ede960 45 #define boolean int
apspijkerman 0:5b5830ede960 46
apspijkerman 0:5b5830ede960 47 // ChanXMode '0=off, 1=low, 2=high, 3=gnd ?
apspijkerman 0:5b5830ede960 48 // Mode '0=scope, 1=XY, 2=record (3=off ?)
apspijkerman 0:5b5830ede960 49
apspijkerman 0:5b5830ede960 50
apspijkerman 0:5b5830ede960 51
apspijkerman 0:5b5830ede960 52
apspijkerman 0:5b5830ede960 53
apspijkerman 0:5b5830ede960 54 int main() {
apspijkerman 0:5b5830ede960 55 boolean UseChanA = true, UseChanB = true; // Bit
apspijkerman 0:5b5830ede960 56 boolean ready, grid = true, adc = false; // Bit
apspijkerman 0:5b5830ede960 57 int ChanAMode = 0, ChanBMode = 0, mode = 0; // Nib
apspijkerman 0:5b5830ede960 58 int PosA = 128, PosB = 128;
apspijkerman 0:5b5830ede960 59
apspijkerman 0:5b5830ede960 60 int val, valb, ecnt = 0; // Word
apspijkerman 0:5b5830ede960 61 int pval = 0, pvalb = 0; // Bytes
apspijkerman 0:5b5830ede960 62 int x, s, cnt = 0, ptr, speed = 0; // Byte
apspijkerman 0:5b5830ede960 63
apspijkerman 0:5b5830ede960 64 boolean trigMode = true, trigEdge = false, trigSrc = false; // Bit
apspijkerman 0:5b5830ede960 65 int trigLevel = 127; // Byte (128 results in 127 !)
apspijkerman 0:5b5830ede960 66 int mem[100]; // [] mem;
apspijkerman 0:5b5830ede960 67
apspijkerman 0:5b5830ede960 68 //StringBuffer serbuf = new StringBuffer(80);
apspijkerman 0:5b5830ede960 69
apspijkerman 0:5b5830ede960 70 //mem = new int [100];
apspijkerman 0:5b5830ede960 71
apspijkerman 0:5b5830ede960 72 //InitStampdock();
apspijkerman 0:5b5830ede960 73
apspijkerman 0:5b5830ede960 74
apspijkerman 0:5b5830ede960 75 //initpins();
apspijkerman 0:5b5830ede960 76 //initadc(2,1,0);
apspijkerman 0:5b5830ede960 77
apspijkerman 0:5b5830ede960 78 //for (s = 0; s < 100; s++) System.out.print((char) 127 );
apspijkerman 0:5b5830ede960 79 //System.out.print((char) 127 );
apspijkerman 0:5b5830ede960 80 //System.out.print("scope running .. ");
apspijkerman 0:5b5830ede960 81 stampdock.printf("scope running .. ");
apspijkerman 0:5b5830ede960 82
apspijkerman 0:5b5830ede960 83 // reset value of gui buttons if reset
apspijkerman 0:5b5830ede960 84 stampdock.SetValue(1, mode); // System.out.print("!i1,0;"); // mode, 0 is xt scope
apspijkerman 0:5b5830ede960 85
apspijkerman 0:5b5830ede960 86 stampdock.SetValue(102,0); // System.out.print("!i102,1;"); // on/off switch on
apspijkerman 0:5b5830ede960 87 if (grid) stampdock.SetValue(103,1); else stampdock.SetValue(103,0); // System.out.print("!i103,1;"); // grid switch on
apspijkerman 0:5b5830ede960 88 if (adc) stampdock.SetValue(104,1); else stampdock.SetValue(104,0); // System.out.print("!i104,0;"); // ltc1298 off
apspijkerman 0:5b5830ede960 89
apspijkerman 0:5b5830ede960 90 stampdock.SetValue(30, speed); // System.out.print("!i30,0;"); // speed switch 0
apspijkerman 0:5b5830ede960 91 stampdock.SetValue(40, trigLevel); // System.out.print("!i40,128;"); // trigger level 128
apspijkerman 0:5b5830ede960 92 if (trigMode) stampdock.SetValue(41,1); else stampdock.SetValue(41,0); // System.out.print("!i41,1;"); // trigger on
apspijkerman 0:5b5830ede960 93 if (trigEdge) stampdock.SetValue(42,1); else stampdock.SetValue(42,0); // System.out.print("!i42,1;"); // trigger edge
apspijkerman 0:5b5830ede960 94 if (trigSrc) stampdock.SetValue(43,1); else stampdock.SetValue(43,0); // System.out.print("!i43,0;"); // trigger source
apspijkerman 0:5b5830ede960 95
apspijkerman 0:5b5830ede960 96 stampdock.SetValue(10, PosA); // System.out.print("!i10,128;"); // pos chan a
apspijkerman 0:5b5830ede960 97 stampdock.SetValue(12, ChanAMode); // System.out.print("!i12,0;"); // chan a mode
apspijkerman 0:5b5830ede960 98 if (UseChanA) stampdock.SetValue(11,1); else stampdock.SetValue(11,0); // System.out.print("!i11,1;"); // channel a on
apspijkerman 0:5b5830ede960 99
apspijkerman 0:5b5830ede960 100 stampdock.SetValue(20, PosB); // System.out.print("!i20,128;"); // pos chan b
apspijkerman 0:5b5830ede960 101 stampdock.SetValue(22, ChanBMode); // System.out.print("!i22,0;"); // chan b mode
apspijkerman 0:5b5830ede960 102 if (UseChanB) stampdock.SetValue(21,1); else stampdock.SetValue(21,0); // System.out.print("!i21,1;"); // channel b on
apspijkerman 0:5b5830ede960 103
apspijkerman 0:5b5830ede960 104 while (true){
apspijkerman 0:5b5830ede960 105 if (ecnt > 0){ // (ecnt > 1) test speed up
apspijkerman 0:5b5830ede960 106 x = stampdock.GetEvent();
apspijkerman 0:5b5830ede960 107 ecnt = 0;
apspijkerman 0:5b5830ede960 108 }else{
apspijkerman 0:5b5830ede960 109 ecnt++;
apspijkerman 0:5b5830ede960 110 x = 0;
apspijkerman 0:5b5830ede960 111 }
apspijkerman 0:5b5830ede960 112
apspijkerman 0:5b5830ede960 113 if (x != 0){ // do we have a gui click or event ?
apspijkerman 0:5b5830ede960 114 ecnt = 0; // just had an event, so max wait
apspijkerman 0:5b5830ede960 115 s = stampdock.GetValue(x); // get value of gui element x
apspijkerman 0:5b5830ede960 116
apspijkerman 0:5b5830ede960 117 // now handle GUI element x with value/state s
apspijkerman 0:5b5830ede960 118 if (x == 1){ //mode 0=scope, 1=xy, 2=rec(,3 =off ?)
apspijkerman 0:5b5830ede960 119 mode = s;
apspijkerman 0:5b5830ede960 120 //stampdock.printf("#*"); // flush
apspijkerman 0:5b5830ede960 121 // clear graph
apspijkerman 0:5b5830ede960 122 //'DEBUG "!s100,100,200;!c;" 'set blue color , clear screen 17c
apspijkerman 0:5b5830ede960 123 //DEBUG "!sb",3, 100,100,200, ";!c;" 'fast binary way to set color 11c
apspijkerman 0:5b5830ede960 124 //System.out.print("!s100,100,200;!c;");
apspijkerman 0:5b5830ede960 125 stampdock.SetColor(100,100,200);
apspijkerman 0:5b5830ede960 126 stampdock.ClearScreen();
apspijkerman 0:5b5830ede960 127 } else
apspijkerman 0:5b5830ede960 128 if (x == 102){ // on/off switch ??
apspijkerman 0:5b5830ede960 129 // mode = s;
apspijkerman 0:5b5830ede960 130 } else
apspijkerman 0:5b5830ede960 131 if (x == 100){ // turnknob for recorder
apspijkerman 0:5b5830ede960 132 // mode = s;
apspijkerman 0:5b5830ede960 133 } else
apspijkerman 0:5b5830ede960 134 if (x == 103){ // grid on/off switch
apspijkerman 0:5b5830ede960 135 //grid = s;
apspijkerman 0:5b5830ede960 136 if (s == 0) grid = false; else grid = true;
apspijkerman 0:5b5830ede960 137 } else
apspijkerman 0:5b5830ede960 138 if (x == 104){ // ltc1298 on/off switch
apspijkerman 0:5b5830ede960 139 //grid = s;
apspijkerman 0:5b5830ede960 140 if (s == 0) adc = false; else adc = true;
apspijkerman 0:5b5830ede960 141 } else
apspijkerman 0:5b5830ede960 142 if (x == 30){ // speed 0,1,2,3
apspijkerman 0:5b5830ede960 143 speed = s;
apspijkerman 0:5b5830ede960 144 } else
apspijkerman 0:5b5830ede960 145
apspijkerman 0:5b5830ede960 146
apspijkerman 0:5b5830ede960 147
apspijkerman 0:5b5830ede960 148
apspijkerman 0:5b5830ede960 149 if (x == 40){ // trigger level
apspijkerman 0:5b5830ede960 150 trigLevel = 255 - s;
apspijkerman 0:5b5830ede960 151 } else
apspijkerman 0:5b5830ede960 152 if (x == 41){ // trigger on/off
apspijkerman 0:5b5830ede960 153 //trigMode = s;
apspijkerman 0:5b5830ede960 154 if (s == 0) trigMode = false; else trigMode = true;
apspijkerman 0:5b5830ede960 155 } else
apspijkerman 0:5b5830ede960 156 if (x == 42){ // trigger edge
apspijkerman 0:5b5830ede960 157 //trigEdge = s;
apspijkerman 0:5b5830ede960 158 if (s == 0) trigEdge = false; else trigEdge = true;
apspijkerman 0:5b5830ede960 159 } else
apspijkerman 0:5b5830ede960 160 if (x == 43){ // trigger source
apspijkerman 0:5b5830ede960 161 //trigSrc = s;
apspijkerman 0:5b5830ede960 162 if (s == 0) trigSrc = false; else trigSrc = true;
apspijkerman 0:5b5830ede960 163 } else
apspijkerman 0:5b5830ede960 164
apspijkerman 0:5b5830ede960 165 if (x == 10){ // pos chan a
apspijkerman 0:5b5830ede960 166 PosA = s;
apspijkerman 0:5b5830ede960 167 } else
apspijkerman 0:5b5830ede960 168 if (x == 11){ // chan a on/off
apspijkerman 0:5b5830ede960 169 //UseChanA = s;
apspijkerman 0:5b5830ede960 170 if (s == 0) UseChanA = false; else UseChanA = true;
apspijkerman 0:5b5830ede960 171 } else
apspijkerman 0:5b5830ede960 172 if (x == 12){ // chan a mode (0=1.5v, 1=15v, 2=gnd)
apspijkerman 0:5b5830ede960 173 ChanAMode = s;
apspijkerman 0:5b5830ede960 174 } else
apspijkerman 0:5b5830ede960 175
apspijkerman 0:5b5830ede960 176 if (x == 20){ // pos chan b
apspijkerman 0:5b5830ede960 177 PosB = s;
apspijkerman 0:5b5830ede960 178 } else
apspijkerman 0:5b5830ede960 179 if (x == 21){ // chan b on/off
apspijkerman 0:5b5830ede960 180 //UseChanB = s;
apspijkerman 0:5b5830ede960 181 if (s == 0) UseChanB = false; else UseChanB = true;
apspijkerman 0:5b5830ede960 182 } else
apspijkerman 0:5b5830ede960 183 if (x == 22){ // chan b mode (0=1.5v, 1=15v, 2=gnd)
apspijkerman 0:5b5830ede960 184 ChanBMode = s;
apspijkerman 0:5b5830ede960 185 }
apspijkerman 0:5b5830ede960 186 } // if event
apspijkerman 0:5b5830ede960 187
apspijkerman 0:5b5830ede960 188
apspijkerman 0:5b5830ede960 189 if (mode == 0){ // xt scope mode
apspijkerman 0:5b5830ede960 190 // trigger
apspijkerman 0:5b5830ede960 191 if (trigMode){
apspijkerman 0:5b5830ede960 192
apspijkerman 0:5b5830ede960 193 if (trigEdge == false){
apspijkerman 0:5b5830ede960 194 pval = 255;
apspijkerman 0:5b5830ede960 195 }else{
apspijkerman 0:5b5830ede960 196 pval = 0;
apspijkerman 0:5b5830ede960 197 }
apspijkerman 0:5b5830ede960 198 cnt = 0;
apspijkerman 0:5b5830ede960 199 ready = false;
apspijkerman 0:5b5830ede960 200 do {
apspijkerman 0:5b5830ede960 201 cnt++;
apspijkerman 0:5b5830ede960 202 if (cnt == 20) ready = true;
apspijkerman 0:5b5830ede960 203
apspijkerman 0:5b5830ede960 204 if (adc){ // ltc 1298 mode
apspijkerman 0:5b5830ede960 205 if (trigSrc == false){ // chan a
apspijkerman 0:5b5830ede960 206 val = readadc(2,1,0, 0, ChanAMode );
apspijkerman 0:5b5830ede960 207 }else{ // chan b
apspijkerman 0:5b5830ede960 208 val = readadc(2,1,0, 1, ChanBMode ); ;
apspijkerman 0:5b5830ede960 209 }
apspijkerman 0:5b5830ede960 210 }else{ // opamp/transistor mode
apspijkerman 0:5b5830ede960 211
apspijkerman 0:5b5830ede960 212 if (trigSrc == false){ // chan a
apspijkerman 0:5b5830ede960 213 val = measure(0, ChanAMode );
apspijkerman 0:5b5830ede960 214 }else{ // chan b
apspijkerman 0:5b5830ede960 215 val = measure(1, ChanBMode );
apspijkerman 0:5b5830ede960 216 }
apspijkerman 0:5b5830ede960 217
apspijkerman 0:5b5830ede960 218 }
apspijkerman 0:5b5830ede960 219 // now val is the value we want to check trigger on
apspijkerman 0:5b5830ede960 220
apspijkerman 0:5b5830ede960 221 if (trigEdge == false) {
apspijkerman 0:5b5830ede960 222 if (trigLevel < val && trigLevel >= pval) ready = true;
apspijkerman 0:5b5830ede960 223 }else{
apspijkerman 0:5b5830ede960 224 if (trigLevel > val && trigLevel <= pval) ready = true;
apspijkerman 0:5b5830ede960 225 }
apspijkerman 0:5b5830ede960 226 pval = val;
apspijkerman 0:5b5830ede960 227
apspijkerman 0:5b5830ede960 228 }while (!ready);
apspijkerman 0:5b5830ede960 229 } // trigMode
apspijkerman 0:5b5830ede960 230
apspijkerman 0:5b5830ede960 231 ptr = 0; // mem counter
apspijkerman 0:5b5830ede960 232 if (adc){ // ltc 1298 mode
apspijkerman 0:5b5830ede960 233 for (cnt = 0; cnt <= 29; cnt++){
apspijkerman 0:5b5830ede960 234 if (UseChanA){
apspijkerman 0:5b5830ede960 235 //val = readadc(2,1,0, 0, ChanAMode );
apspijkerman 0:5b5830ede960 236 //if (ChanAMode == 0){
apspijkerman 0:5b5830ede960 237 // val = val - (2048-128);
apspijkerman 0:5b5830ede960 238 //}else{
apspijkerman 0:5b5830ede960 239 // val = val >> 4;
apspijkerman 0:5b5830ede960 240 //}
apspijkerman 0:5b5830ede960 241 //mem[ptr] = val;
apspijkerman 0:5b5830ede960 242 mem[ptr] = readadc(2,1,0, 0, ChanAMode );
apspijkerman 0:5b5830ede960 243 }
apspijkerman 0:5b5830ede960 244 ptr++;
apspijkerman 0:5b5830ede960 245
apspijkerman 0:5b5830ede960 246 if (UseChanB){
apspijkerman 0:5b5830ede960 247 //val = readadc(2,1,0, 1, ChanBMode );
apspijkerman 0:5b5830ede960 248 //if (ChanBMode == 0){
apspijkerman 0:5b5830ede960 249 // val = val - (2048-128);
apspijkerman 0:5b5830ede960 250 //}else{
apspijkerman 0:5b5830ede960 251 // val = val >> 4;
apspijkerman 0:5b5830ede960 252 //}
apspijkerman 0:5b5830ede960 253 //mem[ptr] = val;
apspijkerman 0:5b5830ede960 254 mem[ptr] = readadc(2,1,0, 1, ChanBMode );
apspijkerman 0:5b5830ede960 255 }
apspijkerman 0:5b5830ede960 256 ptr++;
apspijkerman 0:5b5830ede960 257
apspijkerman 0:5b5830ede960 258 if (speed > 0){
apspijkerman 0:5b5830ede960 259 if (speed == 1) wait(0.001); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 260 if (speed == 2) wait(0.01 ); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 261 if (speed == 3) wait(0.1 ); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 262 }
apspijkerman 0:5b5830ede960 263 } // for
apspijkerman 0:5b5830ede960 264 }else{ // opamp/transistor mode
apspijkerman 0:5b5830ede960 265 for (cnt = 0; cnt <= 29; cnt++){
apspijkerman 0:5b5830ede960 266 if (UseChanA){
apspijkerman 0:5b5830ede960 267 //val = measure(0, ChanAMode );
apspijkerman 0:5b5830ede960 268 //mem[ptr] = val;
apspijkerman 0:5b5830ede960 269 mem[ptr] = measure(0, ChanAMode );
apspijkerman 0:5b5830ede960 270 }
apspijkerman 0:5b5830ede960 271 ptr++;
apspijkerman 0:5b5830ede960 272
apspijkerman 0:5b5830ede960 273 if (UseChanB){
apspijkerman 0:5b5830ede960 274 //val = measure(1, ChanBMode );
apspijkerman 0:5b5830ede960 275 //mem[ptr] = val;
apspijkerman 0:5b5830ede960 276 mem[ptr] = measure(1, ChanBMode );
apspijkerman 0:5b5830ede960 277 }
apspijkerman 0:5b5830ede960 278 ptr++;
apspijkerman 0:5b5830ede960 279
apspijkerman 0:5b5830ede960 280 if (speed > 0){
apspijkerman 0:5b5830ede960 281 if (speed == 1) wait(0.001); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 282 if (speed == 2) wait(0.01 ); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 283 if (speed == 3) wait(0.1 ); // CPU.delay(speed);
apspijkerman 0:5b5830ede960 284 }
apspijkerman 0:5b5830ede960 285 } // for
apspijkerman 0:5b5830ede960 286 } // !adc
apspijkerman 0:5b5830ede960 287
apspijkerman 0:5b5830ede960 288 // ' clear graph
apspijkerman 0:5b5830ede960 289 // 'DEBUG "!s100,100,200;!c;" 'set blue color , clear screen 17c
apspijkerman 0:5b5830ede960 290 // DEBUG "!sb",3, 100,100,200, ";!c;" 'fast binary way to set color 11c
apspijkerman 0:5b5830ede960 291 //System.out.print("!s100,100,200;!c;");
apspijkerman 0:5b5830ede960 292
apspijkerman 0:5b5830ede960 293 //stampdock.print("#*"); // flush
apspijkerman 0:5b5830ede960 294 //stampdock.SetColor(100,100,200);
apspijkerman 0:5b5830ede960 295 stampdock.SetColor(100,100,200);
apspijkerman 0:5b5830ede960 296 stampdock.ClearScreen();
apspijkerman 0:5b5830ede960 297
apspijkerman 0:5b5830ede960 298 //grid = 0;
apspijkerman 0:5b5830ede960 299 if (grid){
apspijkerman 0:5b5830ede960 300 //'DEBUG "!s128,128,228;" 'set lighter color 14c
apspijkerman 0:5b5830ede960 301 // DEBUG "!sb",3,128,128,228,";" 'fast binary way to set color 8c
apspijkerman 0:5b5830ede960 302 //System.out.print("!s128,128,228;");
apspijkerman 0:5b5830ede960 303 stampdock.SetColor(128,128,228);
apspijkerman 0:5b5830ede960 304
apspijkerman 0:5b5830ede960 305 //'DEBUG "!a20,20,29,19,55,12;" 'slow ascii way draw grid 20c
apspijkerman 0:5b5830ede960 306 //DEBUG "!ab",6,20,20,29,19,55,12,";" 'fast binary way to draw grid 11c
apspijkerman 0:5b5830ede960 307 //System.out.print("!a20,20,29,19,55,12;");
apspijkerman 0:5b5830ede960 308 stampdock.DrawGrid(20,20,29,19,55,12);
apspijkerman 0:5b5830ede960 309
apspijkerman 0:5b5830ede960 310 if (trigMode){
apspijkerman 0:5b5830ede960 311 cnt = trigLevel;
apspijkerman 0:5b5830ede960 312 if (trigSrc == false){
apspijkerman 0:5b5830ede960 313 cnt = 255 - cnt + PosA - 128;
apspijkerman 0:5b5830ede960 314 }else{
apspijkerman 0:5b5830ede960 315 cnt = 255 - cnt + PosB - 128;
apspijkerman 0:5b5830ede960 316 }
apspijkerman 0:5b5830ede960 317
apspijkerman 0:5b5830ede960 318 // 'DEBUG "!l", DEC 1,",", DEC cnt,",", DEC 40,",", DEC cnt, ";" 'slow
apspijkerman 0:5b5830ede960 319 //DEBUG "!lb", 4,1,cnt,40,cnt,";" ' fast
apspijkerman 0:5b5830ede960 320 //System.out.print("!l1,");
apspijkerman 0:5b5830ede960 321 //System.out.print( cnt);
apspijkerman 0:5b5830ede960 322 //System.out.print(",40,");
apspijkerman 0:5b5830ede960 323 //System.out.print( cnt );
apspijkerman 0:5b5830ede960 324 //System.out.print(";");
apspijkerman 0:5b5830ede960 325 stampdock.DrawLine(1,cnt,40,cnt);
apspijkerman 0:5b5830ede960 326 } // end trigMode
apspijkerman 0:5b5830ede960 327 } // end grid
apspijkerman 0:5b5830ede960 328
apspijkerman 0:5b5830ede960 329 //UseChanA = 0;
apspijkerman 0:5b5830ede960 330 //UseChanB = 0;
apspijkerman 0:5b5830ede960 331
apspijkerman 0:5b5830ede960 332 if (UseChanA){
apspijkerman 0:5b5830ede960 333 // draw channel a
apspijkerman 0:5b5830ede960 334 // 'set color black
apspijkerman 0:5b5830ede960 335 // 'DEBUG "!s0,0,0;" 'slow ascii way to set color 8c
apspijkerman 0:5b5830ede960 336 // DEBUG "!sb",3, 0,0,0, ";" 'fast binary way to set color 8c
apspijkerman 0:5b5830ede960 337 //System.out.print("!s0,0,0;");
apspijkerman 0:5b5830ede960 338 stampdock.SetColor(0,0,0);
apspijkerman 0:5b5830ede960 339 /*
apspijkerman 0:5b5830ede960 340 ptr = 0;
apspijkerman 0:5b5830ede960 341 for (cnt = 0; cnt <= 1; cnt++){ // <= 28
apspijkerman 0:5b5830ede960 342 x = mem[ ptr ];
apspijkerman 0:5b5830ede960 343 stampdock.printf("-%d", x );
apspijkerman 0:5b5830ede960 344 ptr = ptr + 2;
apspijkerman 0:5b5830ede960 345 }
apspijkerman 0:5b5830ede960 346 */
apspijkerman 0:5b5830ede960 347 ptr = 0;
apspijkerman 0:5b5830ede960 348 s = mem[ ptr ];
apspijkerman 0:5b5830ede960 349 s = 255 - s + PosA - 128;
apspijkerman 0:5b5830ede960 350 ptr = ptr + 2;
apspijkerman 0:5b5830ede960 351 s -= 60;
apspijkerman 0:5b5830ede960 352
apspijkerman 0:5b5830ede960 353 //if (s < -128) s = -128;
apspijkerman 0:5b5830ede960 354 //if (s > 127) s = 127;
apspijkerman 0:5b5830ede960 355 //if (s < 0) s = 0;
apspijkerman 0:5b5830ede960 356 //if (s > 255) s = 255;
apspijkerman 0:5b5830ede960 357
apspijkerman 0:5b5830ede960 358 //DEBUG "!Pb", 33,20, 0,60 , s ' init poly line cmd in binary mode 38c
apspijkerman 0:5b5830ede960 359 //' 33 is number of bytes we are going to send
apspijkerman 0:5b5830ede960 360 //' 20=dx , 0=dy (which means we only send y values)
apspijkerman 0:5b5830ede960 361 //' 0,60 = start x,y
apspijkerman 0:5b5830ede960 362
apspijkerman 0:5b5830ede960 363 //System.out.print("!P20,0,60,");
apspijkerman 0:5b5830ede960 364 //System.out.print( s );
apspijkerman 0:5b5830ede960 365 /*
apspijkerman 0:5b5830ede960 366 serbuf.clear();
apspijkerman 0:5b5830ede960 367 serbuf.append("!Pb"); // poly line, binary mode
apspijkerman 0:5b5830ede960 368 serbuf.append((char)33); // 33 values follow
apspijkerman 0:5b5830ede960 369 serbuf.append((char)20); // dx=20
apspijkerman 0:5b5830ede960 370 serbuf.append((char) 0); // dy=0 .. so only y values
apspijkerman 0:5b5830ede960 371 serbuf.append((char)60); // x start
apspijkerman 0:5b5830ede960 372 serbuf.append((char) s); // y start
apspijkerman 0:5b5830ede960 373 */
apspijkerman 0:5b5830ede960 374 stampdock.printf("!Pb");
apspijkerman 0:5b5830ede960 375 stampdock.printf("%c%c%c%c%c", 33, 20, 0, 60, s);
apspijkerman 0:5b5830ede960 376 //stampdock.printf("%d%d%d%d%d", 33, 20, 0, 60, s);
apspijkerman 0:5b5830ede960 377
apspijkerman 0:5b5830ede960 378 for (cnt = 0; cnt <= 28; cnt++){
apspijkerman 0:5b5830ede960 379 x = mem[ ptr ];
apspijkerman 0:5b5830ede960 380 x = 255 - x + PosA - 128;
apspijkerman 0:5b5830ede960 381 ptr = ptr + 2;
apspijkerman 0:5b5830ede960 382
apspijkerman 0:5b5830ede960 383 //'' --- slow line ---
apspijkerman 0:5b5830ede960 384 //''val = cnt * 20
apspijkerman 0:5b5830ede960 385 //''DEBUG "!l",DEC val,",",DEC s,",", DEC val+20,",", DEC x,";" ' chars 18
apspijkerman 0:5b5830ede960 386 //'' --- faster line ---
apspijkerman 0:5b5830ede960 387 //''val = cnt * 8
apspijkerman 0:5b5830ede960 388 //''DEBUG "!lb", 4 , val , s, val+8 , x , ";" 'chars 8
apspijkerman 0:5b5830ede960 389 //'' --- fastest line ---
apspijkerman 0:5b5830ede960 390 //DEBUG x 'chars 1 (poly line cmd with constant dx)
apspijkerman 0:5b5830ede960 391
apspijkerman 0:5b5830ede960 392 //System.out.print( "," );
apspijkerman 0:5b5830ede960 393 //System.out.print( x );
apspijkerman 0:5b5830ede960 394
apspijkerman 0:5b5830ede960 395 x -= 60;
apspijkerman 0:5b5830ede960 396 // if (x > 127) x -= 256; // int to char ?
apspijkerman 0:5b5830ede960 397 //serbuf.append((char) x ); // y value of next line
apspijkerman 0:5b5830ede960 398
apspijkerman 0:5b5830ede960 399 //if (x < -128) x = -128;
apspijkerman 0:5b5830ede960 400 //if (x > 127) x = 127;
apspijkerman 0:5b5830ede960 401 //if (x < 0) x = 0;
apspijkerman 0:5b5830ede960 402 //if (x > 255) x = 255;
apspijkerman 0:5b5830ede960 403 stampdock.printf("%c", x ); // y value of next line
apspijkerman 0:5b5830ede960 404 //stampdock.printf("%d.", x );
apspijkerman 0:5b5830ede960 405 //wait(0.01);
apspijkerman 0:5b5830ede960 406
apspijkerman 0:5b5830ede960 407 //s = x;
apspijkerman 0:5b5830ede960 408 }
apspijkerman 0:5b5830ede960 409 //System.out.print(";");
apspijkerman 0:5b5830ede960 410 //serbuf.append(";");
apspijkerman 0:5b5830ede960 411 //System.out.print(serbuf.toString());
apspijkerman 0:5b5830ede960 412 stampdock.printf(";");
apspijkerman 0:5b5830ede960 413 //stampdock.printf(" "); // flush ?
apspijkerman 0:5b5830ede960 414
apspijkerman 0:5b5830ede960 415 } // end UseChanA
apspijkerman 0:5b5830ede960 416
apspijkerman 0:5b5830ede960 417 if (UseChanB){
apspijkerman 0:5b5830ede960 418 //' draw channel b
apspijkerman 0:5b5830ede960 419 //'set color white
apspijkerman 0:5b5830ede960 420 //'DEBUG "!s255,255,255;" 'slow ascii way to set color
apspijkerman 0:5b5830ede960 421 //DEBUG "!sb",3,255,255,255,";" 'fast binary way to set color
apspijkerman 0:5b5830ede960 422 //System.out.print("!s255,255,255;");
apspijkerman 0:5b5830ede960 423 stampdock.SetColor(255,255,255);
apspijkerman 0:5b5830ede960 424
apspijkerman 0:5b5830ede960 425 ptr = 1;
apspijkerman 0:5b5830ede960 426 s = mem[ ptr ];
apspijkerman 0:5b5830ede960 427 s = 255 - s + PosB - 128;
apspijkerman 0:5b5830ede960 428 ptr = ptr + 2;
apspijkerman 0:5b5830ede960 429 s -= 60;
apspijkerman 0:5b5830ede960 430
apspijkerman 0:5b5830ede960 431 //if (s < -128) s = -128;
apspijkerman 0:5b5830ede960 432 //if (s > 127) s = 127;
apspijkerman 0:5b5830ede960 433 // if (s < 0) s = 0;
apspijkerman 0:5b5830ede960 434 //if (s > 255) s = 255;
apspijkerman 0:5b5830ede960 435
apspijkerman 0:5b5830ede960 436 //DEBUG "!Pb", 33,20, 0,60 , s ' init poly line cmd in binary mode 38c
apspijkerman 0:5b5830ede960 437 //' 33 is number of bytes we are going to send
apspijkerman 0:5b5830ede960 438 //' 20=dx , 0=dy (which means we only send y values)
apspijkerman 0:5b5830ede960 439 //' 0,60 = start x,y
apspijkerman 0:5b5830ede960 440
apspijkerman 0:5b5830ede960 441 //System.out.print("!P20,0,60,");
apspijkerman 0:5b5830ede960 442 //System.out.print( s );
apspijkerman 0:5b5830ede960 443 /*
apspijkerman 0:5b5830ede960 444 serbuf.clear();
apspijkerman 0:5b5830ede960 445 serbuf.append("!Pb");
apspijkerman 0:5b5830ede960 446 serbuf.append((char)33);
apspijkerman 0:5b5830ede960 447 serbuf.append((char)20);
apspijkerman 0:5b5830ede960 448 serbuf.append((char) 0);
apspijkerman 0:5b5830ede960 449 serbuf.append((char)60);
apspijkerman 0:5b5830ede960 450 serbuf.append((char) s);
apspijkerman 0:5b5830ede960 451 */
apspijkerman 0:5b5830ede960 452 stampdock.printf("!Pb");
apspijkerman 0:5b5830ede960 453 stampdock.printf("%c%c%c%c%c", 33, 20, 0, 60, s );
apspijkerman 0:5b5830ede960 454 //stampdock.printf("%d%d%d%d%d", 33, 20, 0, 60, s );
apspijkerman 0:5b5830ede960 455
apspijkerman 0:5b5830ede960 456 for (cnt = 0; cnt <= 28; cnt++){
apspijkerman 0:5b5830ede960 457 x = mem[ ptr ];
apspijkerman 0:5b5830ede960 458 x = 255 - x + PosB - 128;
apspijkerman 0:5b5830ede960 459 ptr = ptr + 2;
apspijkerman 0:5b5830ede960 460
apspijkerman 0:5b5830ede960 461 //'' --- slow line ---
apspijkerman 0:5b5830ede960 462 //''val = cnt * 20
apspijkerman 0:5b5830ede960 463 //''DEBUG "!l",DEC val,",",DEC s,",", DEC val+20,",", DEC x,";"
apspijkerman 0:5b5830ede960 464 //'' --- faster line ---
apspijkerman 0:5b5830ede960 465 //''val = cnt * 8
apspijkerman 0:5b5830ede960 466 //''DEBUG "!lb", 4 , val , s, val+8 , x , ";"
apspijkerman 0:5b5830ede960 467 //'' --- fastest line ---
apspijkerman 0:5b5830ede960 468 //DEBUG x 'chars 1 (poly line cmd with constant dx)
apspijkerman 0:5b5830ede960 469
apspijkerman 0:5b5830ede960 470 //System.out.print( "," );
apspijkerman 0:5b5830ede960 471 //System.out.print( x );
apspijkerman 0:5b5830ede960 472
apspijkerman 0:5b5830ede960 473 x -= 60;
apspijkerman 0:5b5830ede960 474 // if (x > 127) x -= 256; // int to char ?
apspijkerman 0:5b5830ede960 475 //serbuf.append((char) x );
apspijkerman 0:5b5830ede960 476
apspijkerman 0:5b5830ede960 477 //if (x < -128) x = -128;
apspijkerman 0:5b5830ede960 478 //if (x > 127) x = 127;
apspijkerman 0:5b5830ede960 479 //if (x < 0) x = 0;
apspijkerman 0:5b5830ede960 480 //if (x > 255) x = 255;
apspijkerman 0:5b5830ede960 481 stampdock.printf("%c", x );
apspijkerman 0:5b5830ede960 482 //stampdock.printf("%d.", x );
apspijkerman 0:5b5830ede960 483 //wait(0.01);
apspijkerman 0:5b5830ede960 484
apspijkerman 0:5b5830ede960 485 //s = x;
apspijkerman 0:5b5830ede960 486 }
apspijkerman 0:5b5830ede960 487 //System.out.print(";");
apspijkerman 0:5b5830ede960 488 //serbuf.append(";");
apspijkerman 0:5b5830ede960 489 //System.out.print(serbuf.toString());
apspijkerman 0:5b5830ede960 490 stampdock.printf(";");
apspijkerman 0:5b5830ede960 491 //stampdock.printf(" "); // flush ?
apspijkerman 0:5b5830ede960 492
apspijkerman 0:5b5830ede960 493 } // end UseChanB
apspijkerman 0:5b5830ede960 494
apspijkerman 0:5b5830ede960 495 //CPU.delay(1);
apspijkerman 0:5b5830ede960 496 } // end xt scope mode
apspijkerman 0:5b5830ede960 497
apspijkerman 0:5b5830ede960 498 if (mode == 2){ // recorder mode
apspijkerman 0:5b5830ede960 499 if (adc){ // ltc1298 mode
apspijkerman 0:5b5830ede960 500 val = readadc(2,1,0, 0, ChanAMode );
apspijkerman 0:5b5830ede960 501 valb = readadc(2,1,0, 1, ChanBMode );
apspijkerman 0:5b5830ede960 502 }else{
apspijkerman 0:5b5830ede960 503 val = measure(0, ChanAMode );
apspijkerman 0:5b5830ede960 504 valb = measure(1, ChanBMode );
apspijkerman 0:5b5830ede960 505 }
apspijkerman 0:5b5830ede960 506
apspijkerman 0:5b5830ede960 507 val = val + PosA - 128; // offset
apspijkerman 0:5b5830ede960 508 valb = valb + PosB - 128;
apspijkerman 0:5b5830ede960 509
apspijkerman 0:5b5830ede960 510 //' set plot color
apspijkerman 0:5b5830ede960 511 //DEBUG "!s0,0,0;"
apspijkerman 0:5b5830ede960 512 //System.out.print("!s0,0,0;");
apspijkerman 0:5b5830ede960 513 stampdock.SetColor(0,0,0);
apspijkerman 0:5b5830ede960 514
apspijkerman 0:5b5830ede960 515 //' plot xy
apspijkerman 0:5b5830ede960 516 //'DEBUG "!p", DEC 610,",", DEC val, ";"
apspijkerman 0:5b5830ede960 517 //' line xy
apspijkerman 0:5b5830ede960 518 //DEBUG "!l", DEC 610,",", DEC val,",", DEC 609,",", DEC pval ,";"
apspijkerman 0:5b5830ede960 519
apspijkerman 0:5b5830ede960 520 //System.out.print("!l610,");
apspijkerman 0:5b5830ede960 521 //System.out.print( val );
apspijkerman 0:5b5830ede960 522 //System.out.print(",609,");
apspijkerman 0:5b5830ede960 523 //System.out.print( pval );
apspijkerman 0:5b5830ede960 524 //System.out.print(";");
apspijkerman 0:5b5830ede960 525 stampdock.DrawLine(610,val,609,pval);
apspijkerman 0:5b5830ede960 526
apspijkerman 0:5b5830ede960 527 pval = val;
apspijkerman 0:5b5830ede960 528
apspijkerman 0:5b5830ede960 529 //' set plot color
apspijkerman 0:5b5830ede960 530 //'DEBUG "!s250,250,250;" 'slow ascii way to set color
apspijkerman 0:5b5830ede960 531 //DEBUG "!sb",3,250,250,250,";" 'fast binary way to set color
apspijkerman 0:5b5830ede960 532 //System.out.print("!s250,250,250;");
apspijkerman 0:5b5830ede960 533 stampdock.SetColor(250,250,250);
apspijkerman 0:5b5830ede960 534
apspijkerman 0:5b5830ede960 535 //' plot xy
apspijkerman 0:5b5830ede960 536 //'DEBUG "!p", DEC 610,",", DEC valb, ";"
apspijkerman 0:5b5830ede960 537 //' line xy
apspijkerman 0:5b5830ede960 538 //DEBUG "!l", DEC 610,",", DEC valb,",", DEC 609,",", DEC pvalb ,";"
apspijkerman 0:5b5830ede960 539
apspijkerman 0:5b5830ede960 540 //System.out.print("!l610,");
apspijkerman 0:5b5830ede960 541 //System.out.print( valb );
apspijkerman 0:5b5830ede960 542 //System.out.print(",609,");
apspijkerman 0:5b5830ede960 543 //System.out.print( pvalb );
apspijkerman 0:5b5830ede960 544 //System.out.print(";");
apspijkerman 0:5b5830ede960 545 stampdock.DrawLine(610,valb,609,pvalb);
apspijkerman 0:5b5830ede960 546
apspijkerman 0:5b5830ede960 547 pvalb = valb;
apspijkerman 0:5b5830ede960 548
apspijkerman 0:5b5830ede960 549 // ' scrol 1 pixel to the left
apspijkerman 0:5b5830ede960 550 //DEBUG "!G20,1;"
apspijkerman 0:5b5830ede960 551 //System.out.print("!G20,1;");
apspijkerman 0:5b5830ede960 552 stampdock.printf("!G20,1;");
apspijkerman 0:5b5830ede960 553 } // end recorder mode
apspijkerman 0:5b5830ede960 554
apspijkerman 0:5b5830ede960 555 if (mode == 1){ // xy scope mode
apspijkerman 0:5b5830ede960 556 if (adc){ // ltc1298 mode
apspijkerman 0:5b5830ede960 557 val = readadc(2,1,0, 0, ChanAMode );
apspijkerman 0:5b5830ede960 558 valb = readadc(2,1,0, 1, ChanBMode );
apspijkerman 0:5b5830ede960 559 }else{
apspijkerman 0:5b5830ede960 560 val = measure(0, ChanAMode );
apspijkerman 0:5b5830ede960 561 valb = measure(1, ChanBMode );
apspijkerman 0:5b5830ede960 562 }
apspijkerman 0:5b5830ede960 563
apspijkerman 0:5b5830ede960 564 //' set plot color
apspijkerman 0:5b5830ede960 565 //'DEBUG "!s200,200,200;" 'slow ascii way to set color
apspijkerman 0:5b5830ede960 566 //DEBUG "!sb",3,200,200,200,";" //fast binary way to set color
apspijkerman 0:5b5830ede960 567 //System.out.print("!s,200,200,200;");
apspijkerman 0:5b5830ede960 568 stampdock.SetColor(200,200,200);
apspijkerman 0:5b5830ede960 569
apspijkerman 0:5b5830ede960 570 //' plot xy
apspijkerman 0:5b5830ede960 571 //DEBUG "!p", DEC val,",", DEC valb, ";"
apspijkerman 0:5b5830ede960 572 //System.out.print("!p");
apspijkerman 0:5b5830ede960 573 //System.out.print( val );
apspijkerman 0:5b5830ede960 574 //System.out.print(",");
apspijkerman 0:5b5830ede960 575 //System.out.print( valb );
apspijkerman 0:5b5830ede960 576 //System.out.print(";");
apspijkerman 0:5b5830ede960 577 stampdock.Plot(val,valb);
apspijkerman 0:5b5830ede960 578
apspijkerman 0:5b5830ede960 579 //' line xy
apspijkerman 0:5b5830ede960 580 //DEBUG "!l", DEC val,",", DEC valb,",", DEC pval,",",DEC pvalb, ";"
apspijkerman 0:5b5830ede960 581
apspijkerman 0:5b5830ede960 582 //System.out.print("!l");
apspijkerman 0:5b5830ede960 583 //System.out.print( val );
apspijkerman 0:5b5830ede960 584 //System.out.print(",");
apspijkerman 0:5b5830ede960 585 //System.out.print( valb );
apspijkerman 0:5b5830ede960 586 //System.out.print(",");
apspijkerman 0:5b5830ede960 587 //System.out.print( pval );
apspijkerman 0:5b5830ede960 588 //System.out.print(",");
apspijkerman 0:5b5830ede960 589 //System.out.print( pvalb );
apspijkerman 0:5b5830ede960 590 //System.out.print(";");
apspijkerman 0:5b5830ede960 591 stampdock.DrawLine(val, valb, pval, pvalb);
apspijkerman 0:5b5830ede960 592
apspijkerman 0:5b5830ede960 593 pval = val;
apspijkerman 0:5b5830ede960 594 pvalb = valb;
apspijkerman 0:5b5830ede960 595
apspijkerman 0:5b5830ede960 596 cnt = cnt + 1;
apspijkerman 0:5b5830ede960 597 if (cnt == 50){
apspijkerman 0:5b5830ede960 598 //stampdock.printf("#*"); // flush
apspijkerman 0:5b5830ede960 599 //' clear graph
apspijkerman 0:5b5830ede960 600 //'DEBUG "!s100,100,200;!c;" 'set blue color , clear screen 17c
apspijkerman 0:5b5830ede960 601 //DEBUG "!sb",3, 100,100,200, ";!c;" 'fast binary way to set color 11c
apspijkerman 0:5b5830ede960 602 //System.out.print("!s,100,100,200;!c;");
apspijkerman 0:5b5830ede960 603 stampdock.SetColor(100,100,200);
apspijkerman 0:5b5830ede960 604 stampdock.ClearScreen();
apspijkerman 0:5b5830ede960 605
apspijkerman 0:5b5830ede960 606 cnt = 0;
apspijkerman 0:5b5830ede960 607 }
apspijkerman 0:5b5830ede960 608
apspijkerman 0:5b5830ede960 609
apspijkerman 0:5b5830ede960 610 } // end xy mode scope
apspijkerman 0:5b5830ede960 611
apspijkerman 0:5b5830ede960 612 } // end while true
apspijkerman 0:5b5830ede960 613 } // end main
apspijkerman 0:5b5830ede960 614
apspijkerman 0:5b5830ede960 615
apspijkerman 0:5b5830ede960 616
apspijkerman 0:5b5830ede960 617
apspijkerman 0:5b5830ede960 618