00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "AnalogDevices.h"
00029
00030
00031
00032
00033
00034
00035
00036
00037 short AD5391_SetGain(short channell,uint16_t uiGain){
00038 uint8_t inpH=0,inpL=0;
00039 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00040 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00041 else {
00042 #if 0
00043 printf("\n\rSTA:0x%X",I2C_I2STAT);
00044 #endif
00045 WD_Reset();
00046 }
00047 WriteOnI2C(channell);
00048 #if 0
00049 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x40,WriteOnI2C(0x40));
00050 #else
00051 WriteOnI2C(0x40);
00052 #endif
00053 inpH = ((uiGain & 0xFF00) >> 8);
00054 inpL = (uiGain & 0x00FF);
00055
00056 #if 0
00057 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C((inpH)|(1 << 6)));
00058 #else
00059 WriteOnI2C((inpH)|(1 << 6));
00060 #endif
00061
00062 #if 0
00063 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C(inpL));
00064 #else
00065 WriteOnI2C(inpL);
00066 #endif
00067
00068 I2C_SetSTO();
00069 return 0;
00070 }
00071
00072
00073
00074
00075
00076
00077
00078
00079 short AD5391_SetOffset(short channell,uint16_t uiOffset){
00080 uint8_t inpH=0,inpL=0;
00081 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00082 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00083 else ;
00084 WriteOnI2C(channell);
00085 #if 0
00086 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x80,WriteOnI2C(0x80));
00087 #else
00088 WriteOnI2C(0x80);
00089 #endif
00090 inpH = ((uiOffset & 0xFF00) >> 8);
00091 inpL = (uiOffset & 0x00FF);
00092 #if 0
00093 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C((inpH)|(1 << 7)));
00094 #else
00095 WriteOnI2C((inpH)|(1 << 7));
00096 #endif
00097 #if 0
00098 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C(inpL));
00099 #else
00100 WriteOnI2C(inpL);
00101 #endif
00102 I2C_SetSTO();
00103 return 0;
00104 }
00105
00106
00107
00108
00109
00110
00111
00112
00113 void AD5391_SoftReset(void){
00114 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00115 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00116 else ;
00117 WriteOnI2C(0x0F);
00118 WriteOnI2C(0x00);
00119 WriteOnI2C(0x00);
00120 I2C_SetSTO();
00121 }
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131 void AD5391_SoftClr(void){
00132 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00133 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00134 else ;
00135 WriteOnI2C(0x02);
00136 WriteOnI2C(0x00);
00137
00138 WriteOnI2C(0x00);
00139 I2C_SetSTO();
00140 }
00141
00142
00143
00144
00145
00146
00147
00148
00149 void AD5391_SoftPowerDown(void){
00150 I2C_SetSTO();
00151 #if 0
00152 printf("\n\r\tPowerDown");
00153 #endif
00154 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00155 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00156 else ;
00157 WriteOnI2C(0x08);
00158 WriteOnI2C(0x00);
00159 WriteOnI2C(0x00);
00160 I2C_SetSTO();
00161 }
00162
00163
00164
00165
00166
00167
00168
00169
00170 void AD5391_SoftPowerUp(void){
00171 I2C_SetSTO();
00172 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00173 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00174 else ;
00175 #if 0
00176 printf("\n\rWriteOnI2C(0x%X)=0x%X",0x09,WriteOnI2C(0x09));
00177 printf("\n\rWriteOnI2C(0x%X)=0x%X",0x00,WriteOnI2C(0x00));
00178 printf("\n\rWriteOnI2C(0x%X)=0x%X",0x00,WriteOnI2C(0x00));
00179 #else
00180 WriteOnI2C(0x09);
00181 WriteOnI2C(0x00);
00182 WriteOnI2C(0x00);
00183 #endif
00184 I2C_SetSTO();
00185 }
00186
00187
00188
00189
00190
00191
00192
00193
00194 short AD5391_ControlRegisterWrite(void){
00195 I2C_SetSTO();
00196 if ((SendSlaveAdress(I2C_AD5391_W) != 0) || (I2C_I2STAT == 0x20))
00197 {
00198 #if 0
00199 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);
00200 #endif
00201 WD_Reset();
00202 return -1;
00203 }
00204 else {
00205 #if 0
00206 printf("\n\rAD5391_ControlRegisterWrite() - OK - STA:0x%X",I2C_I2STAT);
00207 #endif
00208 WD_Reset();
00209 }
00210 #if 0
00211 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0C,WriteOnI2C(0x0C));
00212 printf("\n\rWriteOnI2C(0x%X)=0x%x",(0x07),WriteOnI2C(0x07));
00213 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x41,WriteOnI2C(0x41));
00214 #else
00215 WriteOnI2C(0x0C);
00216 WriteOnI2C(0x14);
00217 WriteOnI2C(0x0C);
00218
00219
00220
00221 #endif
00222 I2C_SetSTO();
00223 return 0;
00224 }
00225
00226
00227 short AD5391_ControlRegisterRead(void){
00228 I2C_SetSTO();
00229 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00230 {printf("\n\r(1)Error Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00231 else {
00232 #if 0
00233 printf("\n\rSTA:0x%X",I2C_I2STAT);
00234 #else
00235 ;
00236 #endif
00237 }
00238
00239 #if 0
00240 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0C,WriteOnI2C(0x0C));
00241 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0C,WriteOnI2C(0x00));
00242 #else
00243 WriteOnI2C(0x0C);
00244 WriteOnI2C(0x00);
00245 #endif
00246 I2C_SetSTO();
00247 if (SendSlaveAdress(I2C_AD5391_R) != 0 )
00248 {printf("\n\r(2)Error Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00249 else {
00250 #if 0
00251 printf("\n\rSTA:0x%X",I2C_I2STAT);
00252 #else
00253 ;
00254 #endif
00255 ;
00256 }
00257 printf("\n\rRead0:0x%X",ReadOnI2C());
00258 printf("\n\rRead0:0x%X",ReadOnI2C());
00259 I2C_SetSTO();
00260 return 0;
00261 }
00262
00263
00264
00265
00266
00267
00268
00269
00270 int16_t AD5391Write(short channel,uint16_t inp){
00271 int16_t ret=-1;
00272 unsigned char inpH=0,inpL=0;
00273 #if 1
00274 printf("\n\r************\n\rAD5391Write(0x%X,0x%X)",channel,inp);
00275 #endif
00276 I2C_I2DAT = 0;
00277 disableIRQ();
00278 WD_Reset();
00279 if ((ret = SendSlaveAdress(I2C_AD5391_W)) != 0 )
00280 {printf("\n\rError Set slave address = %d,I2STAT=0x%X",ret,I2C_I2STAT);
00281 WD_Reset();
00282 return ret;}
00283 else ;
00284 WD_Reset();
00285 ret = WriteOnI2C(channel);
00286 WD_Reset();
00287 inpH = ((inp & 0xFF00) >> 8);
00288 WD_Reset();
00289 inpL = (inp & 0x00FF);
00290 #if 0
00291 printf("\n\rinp=0x%X,inpH=0x%X,inpL=0x%X",inp,inpH,inpL);
00292 #endif
00293 WD_Reset();
00294 ret = WriteOnI2C((inpH |(1 << 7) | (1 << 6)));
00295 WD_Reset();
00296 ret = WriteOnI2C(inpL);
00297 WD_Reset();
00298 I2C_SetSTO();
00299 WD_Reset();
00300 enableIRQ();
00301 return 0;
00302 }
00303 short AD5391_Init(void){
00304 if (SendSlaveAdress(I2C_AD5391_W) != 0 )
00305 {
00306 #if 1
00307 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);
00308 #endif
00309 WD_Reset();
00310 I2C_SetSTO();
00311 return 0xFF;
00312 }
00313 else {
00314 #if 0
00315 printf("\n\rSTA:0x%X",I2C_I2STAT);
00316 #endif
00317 I2C_SetSTO();
00318 WD_Reset();
00319 return 0;
00320 }
00321 return 0;
00322 }
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332 short AD5382_SetGain(short channell,uint16_t uiGain){
00333 uint8_t inpH=0,inpL=0;
00334 WD_Reset();
00335 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00336 {
00337 #if 0
00338 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);WD_Reset();
00339 #else
00340 WD_Reset();
00341 #endif
00342 return -1;}
00343 else
00344 #if 0
00345 printf("\n\rSG:STA:0x%X",I2C_I2STAT);
00346 #else
00347 ;
00348 #endif
00349 #if 0
00350 printf("\n\rWrite PointerByte - WriteOnI2C(0x%X)=0x%X",channell,WriteOnI2C(channell));
00351 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x40,WriteOnI2C(0x40));
00352 #else
00353 WD_Reset();
00354 WriteOnI2C(channell);
00355 WD_Reset();
00356 WriteOnI2C(0x40);
00357 #endif
00358 WD_Reset();
00359 inpH = ((uiGain & 0xFF00) >> 8);
00360 WD_Reset();
00361 inpL = (uiGain & 0x00FF);
00362 #if 0
00363 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C((inpH)|(1 << 6)));
00364 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C(inpL));
00365 #else
00366 WriteOnI2C((inpH)|(1 << 6));WD_Reset();
00367 WriteOnI2C(inpL);WD_Reset();
00368 #endif
00369 WD_Reset();
00370 I2C_SetSTO();
00371 return 0;
00372 }
00373
00374
00375
00376
00377
00378
00379
00380
00381 short AD5382_SetOffset(short channell,uint16_t uiOffset){
00382 uint8_t inpH=0,inpL=0;
00383 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00384 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00385 else
00386 #if 0
00387 printf("\n\rSTA:0x%X",I2C_I2STAT);
00388 #else
00389 ;
00390 #endif
00391 #if 0
00392 printf("\n\rWrite PointerByte - WriteOnI2C(0x%X)=0x%X",channell,WriteOnI2C(channell));
00393 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x80,WriteOnI2C(0x80));
00394 #else
00395 WD_Reset();
00396 WriteOnI2C(channell);
00397 WD_Reset();
00398 WriteOnI2C(0x80);
00399 #endif
00400 inpH = ((uiOffset & 0xFF00) >> 8);WD_Reset();
00401 inpL = (uiOffset & 0x00FF);WD_Reset();
00402 #if 0
00403 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C((inpH)|(1 << 7)));
00404 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x0F,WriteOnI2C(inpL));
00405 #else
00406 WD_Reset();
00407 WriteOnI2C((inpH)|(1 << 7));
00408 WD_Reset();
00409 WriteOnI2C(inpL);
00410 #endif
00411 WD_Reset();
00412 I2C_SetSTO();
00413 return 0;
00414 }
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424 short AD5382_SoftReset(void){
00425 #if 0
00426 printf("\n\rAD5382_SoftReset");
00427 #else
00428 ;
00429 #endif
00430 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00431 {printf("\n\rError Set slave address AD5382_SoftReset, I2STAT=0x%X",I2C_I2STAT);WD_Reset();
00432 I2C_SetSTO();return 0xFF;}
00433 else
00434 #if 0
00435 printf("\n\rSTA:0x%X",I2C_I2STAT);
00436 #else
00437 ;WD_Reset();
00438 #endif
00439 #if 0
00440 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x02,WriteOnI2C(0x0F));
00441 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00442 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00443 #else
00444 WriteOnI2C(0x0F);
00445 WriteOnI2C(0x00);
00446 WriteOnI2C(0x00);
00447 #endif
00448 WD_Reset();
00449 I2C_SetSTO();
00450 return 0;
00451 }
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461 void AD5382_SoftClr(void){
00462 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00463 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00464 else ;
00465 #if 0
00466 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x02,WriteOnI2C(0x02));
00467 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00468 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00469 #else
00470 WriteOnI2C(0x02);
00471 WriteOnI2C(0x00);
00472 WriteOnI2C(0x00);
00473 #endif
00474 I2C_SetSTO();
00475 }
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485 short AD5382_SoftPowerDown(void){
00486 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00487 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00488 else ;
00489 #if 0
00490 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x08,WriteOnI2C(0x08));
00491 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00492 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00493 #else
00494 WriteOnI2C(0x08);
00495 WriteOnI2C(0x00);
00496 WriteOnI2C(0x00);
00497 #endif
00498 I2C_SetSTO();
00499 return 0;
00500 }
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511 short AD5382_SoftPowerUp(void){
00512 if (SendSlaveAdress(I2C_AD5382_W) != 0 )
00513 {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return -1;}
00514 else ;
00515 #if 0
00516 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x09,WriteOnI2C(0x09));
00517 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00518 printf("\n\rWriteOnI2C(0x%X)=0x%x",0x00,WriteOnI2C(0x00));
00519 #else
00520 WriteOnI2C(0x09);
00521 WriteOnI2C(0x00);
00522 WriteOnI2C(0x00);
00523 #endif
00524 I2C_SetSTO();
00525 return 0;
00526 }
00527
00528
00529
00530
00531
00532
00533
00534 short AD5382_ControlRegister(void){
00535 I2C_SetSTO();
00536 if ((SendSlaveAdress(I2C_AD5382_W) != 0 ) || (I2C_I2STAT == 0x20))
00537 {printf("\n\rError Set slave address AD5382_ControlRegister '0x%X', I2STAT=0x%X",I2C_AD5382_W,I2C_I2STAT);return -1;}
00538 else {
00539 #if 0 //OK
00540 printf("\n\rSTA:0x%X",I2C_I2STAT);
00541 #endif
00542 WD_Reset();
00543 }
00544 #if 0
00545 printf("\n\rA:D(0x%X)=0x%X",0x0C,WriteOnI2C(0x0C));
00546 printf("\n\rA:D1(0x%X)=0x%X",(0x14 | (1 << 3)),WriteOnI2C((0x14)|(1 << 3)));
00547 printf("\n\rA:D2(0x%X)=0x%X",0x04,WriteOnI2C(0x01));
00548 #else
00549 WriteOnI2C(0x0C);
00550 WriteOnI2C((0x14)|(1 << 3));
00551 WriteOnI2C(0x01);
00552 #endif
00553 WD_Reset();
00554 I2C_SetSTO();
00555 return 0;
00556 }
00557 int16_t AD5382Write(short channel,uint16_t inp){
00558 int16_t ret=-1;
00559 unsigned char inpH=0,inpL=0;
00560
00561 I2C_I2DAT = 0;
00562
00563 I2C_SetSTO();
00564 if ((ret = SendSlaveAdress(I2C_AD5382_W)) != 0 )
00565 {printf("\n\rError Set slave address = %d,I2STAT=0x%X",ret,I2C_I2STAT);return ret;}
00566 else ;
00567 ret = WriteOnI2C((0x00 + channel) );
00568 inpH = ((inp & 0xFF00) >> 8);
00569 inpL = (inp & 0x00FF);
00570 #if 0
00571 printf("\n\rinp=0x%X,inpH=0x%X,inpL=0x%X",inp,inpH,inpL);
00572 #endif
00573 ret = WriteOnI2C(inpH |(1 << 7) | (1 << 6));
00574 ret = WriteOnI2C(inpL);
00575 I2C_SetSTO();
00576 enableIRQ();
00577 return 0;
00578 }
00579 int16_t AD7414_5Read(uint8_t what){
00580 uint16_t ret=0,oT2,T2;
00581 uint8_t T1,oT1,pom=0;
00582 switch(what) {
00583 case 0:
00584 I2C_I2DAT = 0;
00585 #if 0
00586 printf("\n\rAD7114Read->SendSlaveAdress00");
00587 #endif
00588 disableIRQ();
00589 if(((pom=SendSlaveAdress(I2C_AD7414_0_W_GND)) != 0) || (I2C_I2STAT != 0x20)) {enableIRQ();return -1;}
00590 #if 0
00591 printf("\n\rAD7114Read->SendSlaveAdress01");
00592 #endif
00593 enableIRQ();
00594
00595 I2C_SetSTO();
00596 if (SendSlaveAdress(I2C_AD7414_0_R_GND) != 0) return -1;
00597 oT2=T2=ReadOnI2C();
00598 T2=(T2 << 2);
00599 I2C_I2CONSET |= I2C_FLAG_AA;
00600
00601 oT1=T1=ReadOnI2C();
00602
00603 T1 &= 0xC0; T1 = (T1 >> 6);
00604 T2 = (T2 | T1);
00605 if ((T2 & 0x300) == 1)
00606 ret = (((T2&0x1FF)/512)/4);
00607 else ret = (T2/4);
00608 #if 0
00609 printf("\n\r0:Temp=%d",ret);
00610 #endif
00611 I2C_SetSTO();
00612 break;
00613 case 1:
00614 I2C_I2DAT = 0;
00615
00616 if(((pom=SendSlaveAdress(I2C_AD7415_0_W_VDD)) != 0) || (I2C_I2STAT != 0x20)){enableIRQ();return -1;}
00617
00618 enableIRQ();
00619
00620 I2C_SetSTO();
00621 SendSlaveAdress(I2C_AD7415_0_R_VDD);
00622 T2=ReadOnI2C();
00623 T2=(T2 << 2);
00624 I2C_I2CONSET |= I2C_FLAG_AA;
00625
00626 T1=ReadOnI2C();
00627 T1 &= 0xC0;
00628 T1 = (T1 >> 6);
00629 T2 = (T2 | T1);
00630 if ((T2 & 0x300) == 1)
00631 ret = (((T2&0x1FF)/512)/4);
00632 else ret = (T2/4);
00633 I2C_SetSTO();
00634
00635 break;
00636 case 2:
00637 I2C_I2DAT = 0;
00638
00639 if(((pom=SendSlaveAdress(I2C_AD7414_1_W_GND)) != 0) || (I2C_I2STAT != 0x20)){enableIRQ();return -1;}
00640
00641 enableIRQ();
00642
00643 I2C_SetSTO();
00644 SendSlaveAdress(I2C_AD7414_1_R_GND);
00645 T2=ReadOnI2C();
00646 T2=(T2 << 2);
00647 I2C_I2CONSET |= I2C_FLAG_AA;
00648 T1=ReadOnI2C();
00649 T1 &= 0xC0;
00650 T1 = (T1 >> 6);
00651 T2 = (T2 | T1);
00652 if ((T2 & 0x300) == 1)
00653 ret = (((T2&0x1FF)/512)/4);
00654 else ret = (T2/4);
00655 I2C_SetSTO();
00656
00657 break;
00658 case 3:
00659 I2C_I2DAT = 0;
00660 if(((pom=SendSlaveAdress(I2C_AD7414_1_W_VDD)) != 0) || (I2C_I2STAT != 0x20)){enableIRQ();return -1;}
00661 enableIRQ();
00662 I2C_SetSTO();
00663 SendSlaveAdress(I2C_AD7414_1_R_VDD);
00664 T2=ReadOnI2C();
00665 T2=(T2 << 2);
00666 I2C_I2CONSET |= I2C_FLAG_AA;
00667 T1=ReadOnI2C();
00668 T1 &= 0xC0;
00669 T1 = (T1 >> 6);
00670 T2 = (T2 | T1);
00671 if ((T2 & 0x300) == 1)
00672 ret = (((T2&0x1FF)/512)/4);
00673 else ret = (T2/4);
00674 I2C_SetSTO();
00675
00676 break;
00677 case 4:
00678 I2C_I2DAT = 0;
00679 if(((pom=SendSlaveAdress(I2C_AD7414_2_W)) != 0) || (I2C_I2STAT != 0x20)){enableIRQ();return -1;}
00680 enableIRQ();
00681 I2C_SetSTO();
00682 SendSlaveAdress(I2C_AD7414_2_R);
00683 T2=ReadOnI2C();
00684 T2=(T2 << 2);
00685 I2C_I2CONSET |= I2C_FLAG_AA;
00686 T1=ReadOnI2C();
00687 T1 &= 0xC0;
00688 T1 = (T1 >> 6);
00689 T2 = (T2 | T1);
00690 if ((T2 & 0x300) == 1)
00691 ret = (((T2&0x1FF)/512)/4);
00692 else ret = (T2/4);
00693 I2C_SetSTO();
00694
00695 break;
00696 case 5:
00697 I2C_I2DAT = 0;
00698
00699 SendSlaveAdress(I2C_AD7414_3_W);
00700
00701 enableIRQ();
00702
00703 I2C_SetSTO();
00704 SendSlaveAdress(I2C_AD7414_3_R);
00705 T2=ReadOnI2C();
00706 T2=(T2 << 2);
00707 I2C_I2CONSET |= I2C_FLAG_AA;
00708 T1=ReadOnI2C();
00709 T1 &= 0xC0;
00710 T1 = (T1 >> 6);
00711 T2 = (T2 | T1);
00712 if ((T2 & 0x300) == 1)
00713 ret = (((T2&0x1FF)/512)/4);
00714 else ret = (T2/4);
00715 I2C_SetSTO();
00716
00717 break;
00718 case 6:
00719 I2C_I2DAT = 0;
00720 #if 0
00721 printf("\n\rAD7114Read->SendSlaveAdress2");
00722 #endif
00723 SendSlaveAdress(I2C_AD7414_0_W_F);
00724 if (I2C_I2STAT == 0x20)
00725 {
00726 I2C_SetSTO();
00727 return -1;
00728 }
00729 #if 0
00730 printf("\n\rAD7114Read->SendSlaveAdress3");
00731 #endif
00732 enableIRQ();
00733
00734 I2C_SetSTO();
00735 SendSlaveAdress(I2C_AD7414_0_R_F);
00736 T2=ReadOnI2C();
00737 T2=(T2 << 2);
00738 I2C_I2CONSET |= I2C_FLAG_AA;
00739 T1=ReadOnI2C();
00740 T1 &= 0xC0;
00741 T1 = (T1 >> 6);
00742 T2 = (T2 | T1);
00743 if ((T2 & 0x300) == 1)
00744 ret = (((T2&0x1FF)/512)/4);
00745 else ret = (T2/4);
00746 I2C_SetSTO();
00747
00748 break; default: break;
00749 }
00750 return ret;
00751 }
00752 int16_t AD7997_ReadAnalogValue(short sChannel){
00753 int16_t ret=0;
00754 int8_t H=0,L=0;
00755 uint16_t sFirstRead=0,sSecondRead=0;
00756 AD7997_ConfigRegister(sChannel);
00757 short sReadChannel=0;
00758 if (SendSlaveAdress(I2C_AD7997BRU_1_H_W) != 0 )
00759 {
00760 #if 1
00761 printf("\n\rError Set slave address, 2STAT=0x%X",I2C_I2STAT);
00762 #endif
00763 return I2C_I2STAT;
00764 }
00765 else {
00766 #if 0
00767 printf("\n\rSTA:0x%X",I2C_I2STAT);
00768 #else
00769 ;
00770 #endif
00771 }
00772 WriteOnI2C(AD7997_RES_REG);
00773 I2C_SetSTO();
00774 if (SendSlaveAdress(I2C_AD7997BRU_1_H_R) != 0 )
00775 {
00776 #if 1
00777 printf("\n\rError Set slave address, 2STAT=0x%X",I2C_I2STAT);
00778 return -1;
00779 #else
00780 return -1;
00781 #endif
00782 }
00783 else {
00784 #if 0
00785 printf("\n\rSTA:0x%X",I2C_I2STAT);
00786 #else
00787 WD_Reset();
00788 #endif
00789 }
00790 sFirstRead = ReadOnI2C();
00791 sSecondRead = ReadOnI2C();
00792 sReadChannel = (((sFirstRead & 0xF0) >> 4)+1);
00793 #if 0
00794 printf("\n\rRead[%d]=0x%X%X, sReadChannel=%d",(((sFirstRead & 0x70) >> 4)+1),\
00795 (sFirstRead),sSecondRead,sReadChannel);
00796 #endif
00797 H = (sFirstRead << 8);
00798 L = (sSecondRead);
00799 ret=((H + L) & 0x0FFF);
00800 I2C_SetSTO();
00801 return ret;
00802 }
00803 short AD7997_SetCycleTimeRegister(short sMode){
00804 #if 1
00805 printf("\n\r\tAD7997_STR_REG.WriteOnI2C(0x%X)=0x%X",(AD7997_STR_REG),WriteOnI2C(AD7997_STR_REG));
00806 printf("\n\r\tSelect CycleTime.WriteOnI2C(0x%X)=0x%X",sMode,WriteOnI2C(sMode));
00807 #else
00808 WriteOnI2C(AD7997_STR_REG);
00809 WriteOnI2C(sMode);
00810 #endif
00811 I2C_SetSTO();
00812 }
00813 void AD7997_ConfigRegister(short sChannel){
00814 if (SendSlaveAdress(I2C_AD7997BRU_1_H_W) != 0 ) {printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);return;}
00815
00816 #if 0
00817 printf("\n\r\tSelect ConfReg.WriteOnI2C(0x%X)=0x%X",(AD7997_CONF_REG),WriteOnI2C(AD7997_CONF_REG));
00818 #else
00819 WriteOnI2C(AD7997_CONF_REG);
00820 #endif
00821 if (sChannel > 4)
00822 {
00823 #if 0
00824 printf("\n\r\t>4\n\r\tH:WriteOnI2C(0x%X)=0x%X",(1 << (sChannel-5)),WriteOnI2C((1 << (sChannel-5))) );
00825 printf("\n\r\tL:WriteOnI2C(0x%X)=0x%X",(1<<3),WriteOnI2C((1<<3)) );
00826 #else
00827 WriteOnI2C((1 << (sChannel-5)));
00828 WriteOnI2C((1<<3));
00829 #endif
00830 }else
00831 {
00832 #if 0
00833 printf("\n\r\t<4\n\rH:WriteOnI2C(0x%X)=0x%X",0,WriteOnI2C(0) );
00834 printf("\n\r\tL:WriteOnI2C(0x%X)=0x%X",(1<< (sChannel+3)),WriteOnI2C((1 << (sChannel + 3))) );
00835 #else
00836 WriteOnI2C(0);
00837 WriteOnI2C((1 << (sChannel + 3)));
00838 #endif
00839 }
00840 I2C_SetSTO();
00841 }