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 #include "ex1.h"
00028 #define DO_MENU "i - init, H/L - all H/L, m - DO_MENU e - exit"
00029
00030 void DoMenu()
00031 {
00032 char str[2]={0,0},smer=0,cChannel= 0;
00033 unsigned int iC=0;
00034 int32_t ret=0;
00035 #if 1
00036 printf("\n\r%s",DO_MENU);WD_Reset();
00037 #else
00038 WD_Reset();
00039 #endif
00040 do
00041 {
00042 WD_Reset();
00043 switch (str[0])
00044 {
00045 case 'i':
00046 case 'I':
00047 #if 1
00048 printf("\n\r\tDO_MAX_Init(1)=%x",DO_MAX_Init(1));
00049 printf("\n\r\tDO_MAX_Init(0)=%x",DO_MAX_Init(0));
00050 #else
00051 if ((ret = DO_MAX_Init(0)))
00052 {
00053 #if 1
00054 printf("\n\rError Initalize DO.0(0x%X) (I2C_I2STAT=0x%X)",ret,I2C_I2STAT);WD_Reset();
00055 #else
00056 WD_Reset();
00057 #endif
00058 }
00059 if ((ret = DO_MAX_Init(1)))
00060 {
00061 #if 1
00062 printf("\n\rError Initalize DO.1(0x%X) (I2C_I2STAT=0x%X)",ret,I2C_I2STAT);WD_Reset();
00063 #else
00064 WD_Reset();
00065 #endif
00066 }
00067 return;
00068 #endif
00069 WD_Reset();
00070 str[0]=0;
00071 break;
00072 case 'h':
00073 case 'H':
00074 #if 1
00075 printf("\n\r\H=%X",DO_H());
00076 #else
00077 ;
00078 #endif
00079 str[0]=0;
00080 break;
00081 case 'l':
00082 case 'L':
00083 #if 1
00084 printf("\n\r\tL=%X",DO_L());
00085 #else
00086 ;
00087 #endif
00088 str[0]=0;
00089 break;
00090 case 'm':
00091 case 'M':
00092 printf("\n\r%s",DO_MENU);
00093 WD_Reset();
00094 str[0]=0;
00095 break;
00096 case 'e':
00097 case 'E':
00098 printf("\n\rExiDOMenu");
00099 return;
00100 default:
00101 str[0]=0;
00102 break;
00103 }
00104 if ((UART0_LSR & 0x01)==1)
00105 {str[0]=(char) UARTgetchar(0);str[1]='\x0';continue;}
00106 }while(1);
00107 #if 1
00108 printf("\n\rExit DO");
00109 #endif
00110 }
00111 #define AD7997_MENU "\n\rR - ReadConfRegister, (1,2,3,4,5,6,7,8) - Read Channel\n\rS - SetSycleTime \n\rt - H/L-0/1Change chip \n\rE - Exit"
00112
00113 void AD7997_Menu()
00114 {
00115 char str[1],sChip=0;
00116 int i=500;
00117 uint32_t chipAddress_W=I2C_AD7997BRU_1_H_W;
00118 uint32_t chipAddress_R=I2C_AD7997BRU_1_H_R;
00119 printf("\n\r*** AD5397_MENU ***%s\n\r\tCHIP %d",AD7997_MENU,sChip);
00120 do
00121 {
00122 WD_Reset();
00123 switch (str[0])
00124 {
00125 case 's':
00126 case 'S':
00127 printf("\n\r\tCHIP(R,W):(0x%X,0x%X)",chipAddress_R,chipAddress_W);
00128 if (SendSlaveAdress(chipAddress_W) != 0 ) {
00129 #if 1
00130 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);
00131 #endif
00132 return I2C_I2STAT;
00133 }
00134 AD7997_SetCycleTimeRegister(1);
00135 str[0]=0;
00136 break;
00137 case 'r':
00138 case 'R':
00139 printf("\n\r\tCHIP(R,W):(0x%X,0x%X)",chipAddress_R,chipAddress_W);
00140 if (SendSlaveAdress(chipAddress_W) != 0 ){
00141 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);
00142 I2C_SetSTO();return;}
00143 else {
00144 #if 1
00145 printf("\n\rOK - STA:0x%X",I2C_I2STAT);
00146 #endif
00147 ;
00148 }
00149 while( i!=0 ) i--;
00150 if (WriteOnI2C(AD7997_CONF_REG) != 0x28) {
00151 printf("\n\rError(1)=0x%X",I2C_I2STAT);
00152 I2C_SetSTO();
00153 return;}
00154 I2C_SetSTO();
00155 while( i!=0 ) i--;
00156 if (SendSlaveAdress(chipAddress_R) != 0 )
00157 {
00158 printf("\n\rError Set slave address, I2STAT=0x%X",I2C_I2STAT);
00159 I2C_SetSTO();return;
00160 }else {
00161 #if 0
00162 printf("\n\rSTA:0x%X",I2C_I2STAT);
00163 #endif
00164 ;
00165 }
00166 printf("\n\rH:ReadOnI2C()=0x%X",ReadOnI2C());
00167
00168 I2C_SetSTO();
00169 str[0]=0;
00170 break;
00171 case 'h':
00172 case 'H':
00173 printf("\n\r*** AD5397_MENU ***%s",AD7997_MENU);
00174 str[0]=0;
00175 break;
00176 case 'e':
00177 case 'E':
00178 return;
00179 case 't':
00180 case 'T':
00181 switch(sChip)
00182 {
00183 case 0:
00184 sChip=1;chipAddress_W=I2C_AD7997BRU_1_H_W;chipAddress_R=I2C_AD7997BRU_1_H_R;
00185 break;
00186 case 1:
00187 sChip=0;chipAddress_W=I2C_AD7997BRU_1_L_W;chipAddress_R=I2C_AD7997BRU_1_L_R;
00188 break;
00189 }
00190 printf("\n\rChip number changed to:%d",sChip);
00191 str[0]=0;
00192 break;
00193
00194 str[0]=0;
00195 break;
00196 case '3':
00197 printf("\n\r\tCHIP(R,W):(0x%X,0x%X)",chipAddress_R,chipAddress_W);
00198 printf("\n\rAD7997_ReadAnalogValue(0x%X)=0x%X",3,AD7997_ReadAnalogValue(3));
00199 str[0]=0;
00200 break;
00201 default:
00202
00203 if ((str[0] > 0x30)&& (str[0] < 0x39))
00204 {
00205 printf("\n\rChannel %d=0x%X",(str[0] - 0x30),AD7997_ReadAnalogValue((str[0] - 0x30)));
00206
00207 }else
00208 if (str[0] != 0) printf("\n\rdefault AD7997 %c",str[0]);
00209 str[0]=0;
00210 break;
00211 }
00212 if ((UART0_LSR & 0x01)==1){str[0]=(char) UARTgetchar(0);str[1]='\x0';} else continue;
00213 }while(1);
00214 }
00215
00216 #define A_MENU "\n\ri-init, c-Select Chip, l-soft clear, p/m-Select Channel, +/- - value up/down, f-SelectFunction, u/d-up/down, s-set the parameters h-help, e-exit"
00217 void AMenu(void)
00218 {
00219 char str[1]={0,0};
00220 short Address=0,sChannel=0;
00221 short sFunc=0,ret=0;
00222 unsigned int uiADval=0,uiOffset=0x2000;
00223 uint16_t uiGain=0x1FFF;
00224 char sChip=0;
00225 printf("%s",A_MENU);
00226 do{
00227 WD_Reset();
00228 if ((UART0_LSR & 0x01)==1)
00229 {str[0]=(char) UARTgetchar(0);str[1]='\x0';continue;}
00230 switch(str[0])
00231 {
00232 case '0':
00233 switch(sChip)
00234 {
00235 case 0:
00236 AD5382Write(sChannel,0);
00237 break;
00238 default:
00239 AD5391Write(sChannel,0);
00240 break;
00241 }
00242 str[0]=0;
00243 break;
00244 case '1':
00245 switch(sChip)
00246 {
00247 case 0:
00248 AD5382Write(sChannel,0x100);
00249 break;
00250 default:
00251 AD5391Write(sChannel,0x100);
00252 break;
00253 }
00254 str[0]=0;
00255 break;
00256 case '2':
00257 switch(sChip)
00258 {
00259 case 0:
00260 AD5382Write(sChannel,0x200);
00261 break;
00262 default:
00263 AD5391Write(sChannel,0x200);
00264 break;
00265 }
00266 str[0]=0;
00267 break;
00268 case '3':
00269 switch(sChip)
00270 {
00271 case 0:AD5382Write(sChannel,0x300);
00272 break;
00273 default:
00274 break;
00275 }
00276 str[0]=0;AD5391Write(sChannel,0x300);
00277 break;
00278 case '4':
00279 switch(sChip)
00280 {
00281 case 0:AD5382Write(sChannel,0x400);
00282 break;
00283
00284 default:AD5391Write(sChannel,0x400);
00285 break;
00286 }
00287 str[0]=0;
00288 break;
00289 case '5':
00290 switch(sChip)
00291 {
00292 case 0:AD5382Write(sChannel,0x500);
00293 break;
00294
00295 default:AD5391Write(sChannel,0x500);
00296 break;
00297 }
00298 str[0]=0;
00299 break;
00300 case '6':
00301 switch(sChip)
00302 {
00303 case 0:AD5382Write(sChannel,0x600);
00304 break;
00305 default:AD5391Write(sChannel,0x600);
00306 break;
00307 }
00308 str[0]=0;
00309 break;
00310 case '7':
00311 switch(sChip)
00312 {
00313 case 0:AD5382Write(sChannel,0x700);
00314 break;
00315 default:AD5391Write(sChannel,0x700);
00316 break;
00317 }
00318 str[0]=0;
00319 break;
00320 case '8':
00321 switch(sChip)
00322 {
00323 case 0:AD5382Write(sChannel,0x800);
00324 break;
00325
00326 default:AD5391Write(sChannel,0x800);
00327 break;
00328 }
00329 str[0]=0;
00330 break;
00331 case '9':
00332 switch(sChip)
00333 {
00334 case 0:AD5382Write(sChannel,0x999);
00335 break;
00336
00337 default:AD5391Write(sChannel,0x999);
00338 break;
00339 }
00340 str[0]=0;
00341 break;
00342 case 'l':
00343 case 'L':
00344 uiADval=0;
00345 uiOffset=0x2000;
00346 uiGain=0x1FFF;
00347 switch(sChip)
00348 {
00349 case 0:
00350 printf("\n\r\tAD5382 SoftClear");
00351 AD5382_SoftClr();
00352 break;
00353 deflaut:
00354 printf("\n\r\tAD5391 SoftClear");
00355 AD5391_SoftClr();
00356 break;
00357 }
00358 str[0]=0;
00359 break;
00360 case 'u':
00361 case 'U':
00362 switch(sChip)
00363 {
00364 case 0:
00365 printf("\n\r\tAD5382 UP");
00366 AD5382_SoftPowerUp();
00367 break;
00368 default:
00369 printf("\n\r\tAD5391 UP");
00370 AD5391_SoftPowerUp();
00371 break;
00372 }
00373 str[0]=0;
00374 break;
00375 case 'd':
00376 case 'D':
00377 switch(sChip)
00378 {
00379 case 0:
00380 printf("\n\r\tAD5382 DOWN");
00381 AD5382_SoftPowerDown();
00382 break;
00383 default:
00384 printf("\n\r\tAD5391 DOWN");
00385 AD5391_SoftPowerDown();
00386 break;
00387 }
00388 str[0]=0;
00389 break;
00390 case 'i':
00391 case 'I':
00392 sChannel=0;
00393 uiGain = 0x1FFF;
00394 uiOffset = 0x2000;
00395 uiADval = 0;
00396 switch(sChip)
00397 {
00398 case 0:
00399 #if 1
00400 printf("\n\rAD5382_ControlRegisterWrite=0x%x",AD5382_ControlRegister());WD_Reset();
00401 #else
00402 AD5382_ControlRegister();WD_Reset();
00403 #endif
00404 str[0]=0;
00405 break;
00406 default:
00407 #if 1
00408 printf("\n\rAD5391_ControlRegisterWrite=0x%x",AD5391_ControlRegisterWrite());WD_Reset();
00409 #else
00410 AD5391_ControlRegisterWrite());WD_Reset();
00411 #endif
00412 }
00413
00414 str[0]=0;
00415 break;
00416 case 'F':
00417 case 'f':
00418 if( (++sFunc) > 2) sFunc = 0;
00419 switch(sFunc)
00420 {
00421 case 0:
00422 printf("\n\r\tSelected value manipulation\n\r\tuiADval = %d",uiADval);
00423 break;
00424 case 1:
00425 printf("\n\r\tSelected gain manipulation\n\r\tgain = %d",uiGain);
00426 break;
00427 case 2:
00428 printf("\n\r\tSelected offset manipulatAD5382Writeion\n\r\toffset = %d",uiOffset);
00429 break;
00430 }
00431 str[0]=0;
00432 break;
00433 case '+':
00434 switch(sFunc)
00435 {
00436 case 0:
00437 if ((uiADval+=10) > 0x3FFF) uiADval = 0;
00438 printf("\n\r\tValue [%X/%d]=0x%X",sChip,sChannel,uiADval);
00439 break;
00440 case 1:
00441 if ((uiGain+=10) > 0x1FFF) uiGain=0x1FFF;
00442 printf("\n\r\tGain [%X/%d]=%d",sChip,sChannel,uiGain);
00443 break;
00444 case 2:
00445 if ((++uiOffset) > 0x3FFF) uiOffset=0x3FFF;
00446 printf("\n\r\tOffset [%X/%d]=%d",sChip,sChannel,uiOffset);
00447 break;
00448 }
00449 str[0]='s';
00450 break;
00451 case '-':
00452 switch(sFunc)
00453 {
00454 case 0:
00455 if ((uiADval-=10) < 0) uiADval=0x3FFF;
00456 printf("\n\r\tValue [%X/%d]=0x%X",sChip,sChannel,uiADval);
00457 break;
00458 case 1:
00459 if ((uiGain-=10) < 0) uiGain=0x3FFF;
00460 printf("\n\r\tGain [%X/%d]=%d",sChip,sChannel,uiGain);
00461 break;
00462 case 2:
00463 if ((uiOffset-=10) < 0) uiOffset=0;
00464 printf("\n\r\tOffset [%X/%d]=%d",sChip,sChannel,uiOffset);
00465 break;
00466 }
00467 str[0]='s';
00468 break;
00469 case 's':
00470 case 'S':
00471 switch(sChip)
00472 {
00473 case 0:
00474 printf("\n\rSet The Parameters of AD5382[%d]:\n\r\tgain:%d, Offset:%d Value:0x%X",sChannel,uiGain,uiOffset,uiADval);
00475
00476
00477 if (I2C_Status() == True) {
00478 if(((ret=AD5382Write(sChannel,uiADval)) != -1)&&(ret != 255)) {
00479 #if 1
00480 printf("\n\rAnalo AD5382Write(%d,0x%x)=0x%x",sChannel,uiADval,ret);
00481 #else
00482 WD_Reset();
00483 #endif
00484 }else printf("\n\rI2C is Off !!!");
00485 }
00486 break;
00487 default:
00488 printf("\n\rSet The Parameters of AD5391:\n\r\t%d, gain:%d, Offset:%d",sChannel,uiGain,uiOffset);
00489
00490
00491 AD5391Write(sChannel,uiADval);
00492 break;
00493 }
00494 str[0]=0;
00495 break;
00496 case 'c':
00497 case 'C':
00498 sChip = ~sChip;
00499 if (sChip == 0) printf("\n\r\tChip = AD5382");
00500 else printf("\n\r\tChip = AD5391");
00501 str[0]=0;
00502 break;
00503 case 'p':
00504 case 'P':
00505 if ((++sChannel) > 12) sChannel=0;
00506 printf("\n\r\tChannel [0x%X]=%d",sChip,(sChannel));
00507 str[0]=0;
00508 break;
00509 case 'm':
00510 case 'M':
00511 if ((--sChannel)<0)
00512 sChannel = 12;
00513 printf("\n\r\tChannel [0x%X]=%d",sChip,sChannel);
00514 str[0]=0;
00515 break;
00516 case 'h':
00517 case 'H':
00518 printf("%s",A_MENU);
00519 str[0]=0;
00520 break;
00521 case 'e':
00522 case 'E':
00523 return;
00524 }
00525 }while(1);
00526 }
00527 #define RAMTRON_HELP "\n\rRamtron:i = init r = read, w = write, +/-, h = help, e = exit"
00528 void RMenu(void)
00529 {
00530 char str[1]={'i',0};
00531 unsigned char chTmp=0;
00532 short Address=0,ret;
00533 printf("%s",RAMTRON_HELP);
00534 do{
00535 WD_Reset();
00536 switch(str[0])
00537 {
00538 case 'i':
00539 case 'I':
00540 #if 1
00541 printf("\n\rRamtron init=0x%X",RamtronInit());
00542 #else
00543 if (RamtronInit()!=0)
00544 {
00545 #if 1
00546 printf("\n\rError RamtronInit.STAT:0x%X",I2C_I2STAT);
00547 return;
00548 #else
00549 WD_Reset();
00550 return;
00551 #endif
00552 }
00553 #endif
00554 str[0]=0;
00555 break;
00556 case '+':
00557 Address++;
00558 printf("\n\r\tAddress = %d",(Address));WD_Reset();
00559 str[0]=0;
00560 break;
00561 case '-':
00562 Address--;
00563 if (Address < 0) Address = 0;
00564 printf("\n\r\tAddress = %d",(Address));WD_Reset();
00565 str[0]=0;
00566 break;
00567 case 'r':
00568 case 'R':
00569 printf("\n\r\tRamtronReadByte(0x%x)=0x%x ('%c')",Address,(chTmp=RamtronReadByte(Address)),chTmp);WD_Reset();
00570 str[0]=0;
00571 break;
00572 case 'w':
00573 case 'W':
00574 printf("\n\r\tPress key to write [0x%X]",Address);WD_Reset();
00575 str[0]=0;
00576 do{
00577 WD_Reset();
00578 if ((UART0_LSR & 0x01)==1)
00579 {str[0]=(char) UARTgetchar(0);str[1]='\x0';WD_Reset();break;}
00580 else WD_Reset();
00581 }while(1);
00582 RamtronWriteByte(Address,str[0]);WD_Reset();
00583 printf("\n\r\tcheck Write Byte [0x%X]=%c",Address,RamtronReadByte(Address));WD_Reset();
00584 str[0]=0;
00585 break;
00586 case 'e':
00587 case 'E':
00588 printf("\n\rReturn");
00589 return;
00590 case 'h':
00591 case 'H':
00592 printf("\n\r%s",RAMTRON_HELP);
00593 str[0]=0;
00594 break;
00595 default:
00596 str[0]=0;
00597 break;
00598 }
00599 if ((UART0_LSR & 0x01)==1)
00600 {str[0]=(char) UARTgetchar(0);str[1]='\x0';continue;}
00601 }while(1);
00602 }
00603 #define C_MENU "\n\r\ti-CansInit\n\ro-off\n\rx(1,2,3,4)-SendToCAN1,2,4 as station x\n\rr-read on CAN"
00604 void CANMenu(void)
00605 {
00606 char str[1]={'i',0};
00607 uint16_t uiStatus=0;
00608 #if 1
00609 printf("%s",C_MENU);WD_Reset();
00610 #endif
00611 do{
00612 WD_Reset();
00613 switch(str[0])
00614 {
00615 case 'e':
00616 case 'E':
00617 return;
00618 case '1':
00619 SendToCAN1(1,1,(2),(3),(4),(5),(6));
00620 SendToCAN2(1,1,(2),(3),(4),(5),(6));
00621 SendToCAN4(1,1,(2),(3),(4),(5),(6));
00622 iAddress = 1;
00623 printf("\n\rCAN station 1");
00624 str[0]=0;
00625 break;
00626 case '2':
00627 SendToCAN1(2,2,(2),(3),(4),(5),(6));
00628 SendToCAN2(2,2,(2),(3),(4),(5),(6));
00629 SendToCAN4(2,2,(2),(3),(4),(5),(6));
00630 printf("\n\rCAN station 2");
00631 iAddress = 2;
00632 str[0]=0;
00633 break;
00634 case '3':
00635 printf("\n\rCAN station 3");
00636 SendToCAN1(3,3,(2),(3),(4),(5),(6));
00637 SendToCAN2(3,3,(2),(3),(4),(5),(6));
00638 SendToCAN4(3,3,(2),(3),(4),(5),(6));
00639 str[0]=0;
00640 iAddress = 3;
00641 break;
00642 case '4':
00643 printf("\n\rCAN station 4");
00644 SendToCAN1(4,4,(2),(3),(4),(5),(6));
00645 SendToCAN2(4,4,(2),(3),(4),(5),(6));
00646 SendToCAN4(4,4,(2),(3),(4),(5),(6));
00647 iAddress = 4;
00648 str[0]=0;
00649 break;
00650 case 'r':
00651 case 'R':
00652 CanRead();
00653 str[0]=0;
00654 break;
00655 case 'i':
00656 case 'I':
00657 printf("\n\rCANs init");
00658 CansInit(uiStatus);
00659 str[0]=0;
00660 break;
00661 case 'h':
00662 case 'H':
00663 printf("%s",C_MENU);
00664 str[0]=0;
00665 break;
00666 case 'o':
00667 case 'O':
00668 uiStatus=CAN_Off(uiStatus);
00669 str[0]=0;
00670 break;
00671 }
00672 if ((UART0_LSR & 0x01)==1)
00673 {str[0]=(char) UARTgetchar(0);str[1]='\x0';uiStatus=GetStatus();continue;}
00674 WD_Reset();
00675 }while(1);
00676 }