mille feuille / Mbed 2 deprecated milmod_slaveRevF

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EEPROM24LC01.h"
00003 
00004 //#define def_myAddress 0x8001
00005 
00006 //Bus switch
00007 //TC7MBL3125 nOE
00008 //#define GateClose 1
00009 //#define GateOpen 0
00010 
00011 //TC7MBL3126 OE
00012 #define GateClose 0
00013 #define GateOpen 1
00014 
00015 
00016 #define OffFET 0
00017 #define OnFET 1
00018 #define HOLD 0xff
00019 #define ALL_HOLD 0xff
00020 #define NOTHOLD 0
00021 
00022 //#define test 1
00023 //#define ROMtest 1
00024 //#define debug 1
00025 
00026 //#define SPIfreq 2000000
00027 #define SPIfreq 17000000
00028 
00029 I2C i2c(I2C_SDA,I2C_SCL);        // sda, scl
00030 EEPROM24LC01 eeprom(&i2c, 0x50);
00031 
00032 //DigitalOut myGate(P0_21,0);
00033 DigitalOut Gate1_1(P0_14,1);
00034 DigitalOut Gate1_2(P0_23,1);
00035 DigitalOut Gate1_3(P0_21,1);
00036 DigitalOut Gate1_4(P0_22,1);
00037 DigitalOut Gate2_MISO(P0_20,1);
00038 DigitalOut Gate2_MOSI(P0_19,1);
00039 DigitalOut Gate2_SCK(P0_17,1);
00040 DigitalOut Gate2_4(P0_13,1);
00041 
00042 DigitalInOut myIO1(P0_1);//ng
00043 DigitalInOut myIO2(P0_28);
00044 DigitalInOut myIO3(P0_27);
00045 DigitalInOut myIO4(P0_26);
00046 
00047 DigitalOut myFET(P0_6,0);
00048 
00049 DigitalIn iAddress1(P0_8);
00050 DigitalIn iAddress2(P0_9);
00051 
00052 DigitalOut myled(LED2,0);
00053 
00054 #ifdef debug
00055 Serial pc(USBTX, USBRX); // tx, rx
00056 #endif
00057 
00058 //SPISlave device(P0_26, P0_25, P0_24, P0_15); // mosi, miso, sclk, ssel
00059 //SPISlave device(P0_25, P0_26, P0_24, P0_15); // mosi, miso, sclk, ssel
00060 SPISlave device(P0_25, P0_18, P0_24, P0_15); // mosi, miso, sclk, ssel
00061 
00062 uint8_t address[4];
00063 uint8_t exData[3];
00064 uint8_t gateData;
00065 uint32_t def_myAddress;
00066 uint32_t def_searchAddress;
00067 
00068 void closeAllGate(void);
00069 
00070 #ifdef test
00071 void spiTest(void){
00072     device.reply(0x00);              // Prime SPI with first reply
00073     printf("SPI slave test\r\n");
00074     while(1) {
00075         if(device.receive()) {
00076             int v = device.read();   // Read byte from master
00077             printf("Recieve = %d\r\n",v);
00078             //v = (v + 1) % 0x100;     // Add one to it, modulo 256
00079             device.reply(v+1);         // Make this the next reply
00080             printf("reply = %d\r\n",v);
00081         }
00082     }
00083 }
00084 
00085 void IoTest(void){
00086     int inData[4];
00087     int inAddr1,inAddr2;
00088     
00089     myIO1.input();
00090     myIO2.input();
00091     myIO3.input();
00092     myIO4.input();
00093     
00094     printf("IoTest\r\n");
00095     
00096     while(1){
00097         
00098         inAddr1 = iAddress1;
00099         inAddr2 = iAddress2;
00100         if(inAddr1 == 0){
00101             myIO1.input();
00102             myIO2.input();
00103             myIO3.input();
00104             myIO4.input();
00105             myIO1.mode(PullNone);
00106             myIO2.mode(PullNone);
00107             myIO3.mode(PullNone);
00108             myIO4.mode(PullNone);
00109             inData[0] = myIO1;
00110             inData[1] = myIO2;
00111             inData[2] = myIO3;
00112             inData[3] = myIO4;
00113             printf("inData[0] = %d\r\n",inData[0]);
00114             printf("inData[1] = %d\r\n",inData[1]);
00115             printf("inData[2] = %d\r\n",inData[2]);
00116             printf("inData[3] = %d\r\n\r\n",inData[3]);
00117         }else{
00118             printf("myIOs output\r\n");
00119             myIO1.output();
00120             myIO2.output();
00121             myIO3.output();
00122             myIO4.output();
00123             myIO1.mode(PullUp);
00124             myIO2.mode(PullUp);
00125             myIO3.mode(PullUp);
00126             myIO4.mode(PullUp);
00127             myIO1 = 1;
00128             myIO2 = 1;
00129             myIO3 = 1;
00130             myIO4 = 1;
00131         }
00132         printf("inAddr1 = %d\r\n",inAddr1);
00133         printf("inAddr2 = %d\r\n",inAddr2);
00134         
00135         
00136         Gate1_1 = 1;
00137         Gate1_2 = 1;
00138         Gate1_3 = 1;
00139         Gate1_4 = 1;
00140         Gate2_MISO = 1;
00141         Gate2_MOSI = 1;
00142         Gate2_SCK = 1;
00143         //Gate2_4 = 1;
00144         myFET = 1;
00145         myled = 1;
00146         
00147         
00148         wait(1);
00149         
00150         if(inAddr1==1){
00151             myIO1 = 0;
00152             myIO2 = 0;
00153             myIO3 = 0;
00154             myIO4 = 0;
00155         }
00156         
00157         Gate1_1 = 0;
00158         Gate1_2 = 0;
00159         Gate1_3 = 0;
00160         Gate1_4 = 0;
00161         Gate2_MISO = 0;
00162         Gate2_MOSI = 0;
00163         Gate2_SCK = 0;
00164         //Gate2_4 = 0;
00165         myFET = 0;
00166         myled = 0;
00167         
00168         wait(1);
00169         
00170     }
00171     
00172 }
00173 
00174 #endif
00175 
00176 
00177 #ifdef ROMtest
00178 void EEPROMtest(void){
00179     char bufData[10];
00180     
00181     printf("write test\n\r");
00182     
00183     bufData[0]=0x80;//address1
00184     bufData[1]=0x00;//address2
00185     bufData[2]=0x00;//address3
00186     bufData[3]=0x0D;//address4
00187     bufData[4]=0x04;//extra data
00188     bufData[5]=0x05;//extra data
00189     bufData[6]=0x06;//extra data
00190     bufData[7]=0x07;//gate open pattern number
00191     eeprom.byte8_write( bufData);
00192     
00193     bufData[0]=0xAA;
00194     
00195     printf("end\n\r");
00196     
00197     
00198     bufData[0]=0;
00199     bufData[1]=0;
00200     bufData[2]=0;
00201     bufData[3]=0;
00202     bufData[4]=0;
00203     bufData[5]=0;
00204     bufData[6]=0;
00205     bufData[7]=0;
00206     
00207     
00208     eeprom.readAll( bufData, 8 );
00209     
00210     printf("0:%02x\n\r",bufData[0]);
00211     printf("1:%02x\n\r",bufData[1]);
00212     printf("2:%02x\n\r",bufData[2]);
00213     printf("3:%02x\n\r",bufData[3]);
00214     printf("4:%02x\n\r",bufData[4]);
00215     printf("5:%02x\n\r",bufData[5]);
00216     printf("6:%02x\n\r",bufData[6]);
00217     printf("7:%02x\n\r",bufData[7]);
00218     
00219     printf("\n\r Read again! \n\r\n\r");
00220     
00221     
00222     eeprom.readAll( bufData, 8 );
00223     
00224     printf("0:%02x\n\r",bufData[0]);
00225     printf("1:%02x\n\r",bufData[1]);
00226     printf("2:%02x\n\r",bufData[2]);
00227     printf("3:%02x\n\r",bufData[3]);
00228     printf("4:%02x\n\r",bufData[4]);
00229     printf("5:%02x\n\r",bufData[5]);
00230     printf("6:%02x\n\r",bufData[6]);
00231     printf("7:%02x\n\r",bufData[7]);
00232     
00233     printf("\nend\n\r");   
00234     
00235 
00236     while(1);
00237 }
00238 #endif
00239 
00240 void ReadDataFromEEPROM(void){
00241     int i;
00242     char bufData[8];
00243     char buf;
00244     char buf1,buf2;
00245     
00246     eeprom.readAll( bufData, 8 );
00247 #ifdef debug    
00248     printf("0:%02x\n\r",bufData[0]);
00249     printf("1:%02x\n\r",bufData[1]);
00250     printf("2:%02x\n\r",bufData[2]);
00251     printf("3:%02x\n\r",bufData[3]);
00252     printf("4:%02x\n\r",bufData[4]);
00253     printf("5:%02x\n\r",bufData[5]);
00254     printf("6:%02x\n\r",bufData[6]);
00255     printf("7:%02x\n\r",bufData[7]);
00256 #endif
00257     
00258     for(i=0;i<4;++i){
00259         address[i] = bufData[i];
00260         def_myAddress = (def_myAddress<<8) + bufData[i];
00261 #ifdef debug    
00262         printf("address%d : %02x\n\r",i,address[i]);
00263 #endif
00264     }
00265 #ifdef debug    
00266     printf("def_myAddress %08x\n\r",def_myAddress);
00267 #endif
00268 
00269     buf = 0;
00270     buf1 = iAddress1.read();
00271     if(buf1==0){
00272         buf1 = 1;
00273     }else if(buf1==1){
00274         buf1 = 0;
00275     }
00276     buf = buf1;
00277 
00278 //    buf = iAddress1.read();
00279 
00280     
00281     buf2 = iAddress2.read();
00282     if(buf2==0){
00283         buf2 = 1;
00284     }else if(buf2==1){
00285         buf2 = 0;
00286     }
00287     
00288     buf = (buf<<1) + buf2;
00289 
00290 //    buf = (buf<<1) + iAddress2.read();
00291     
00292     def_myAddress += buf;
00293 
00294 #ifdef debug    
00295     printf("def_myAddress %08x\n\r",def_myAddress);
00296 #endif
00297     
00298     for(i=4;i<7;++i){
00299         exData[i-4] = bufData[i];
00300 #ifdef debug    
00301         printf("exData%d : %02x\n\r",i-4,exData[i-4]);
00302 #endif
00303     }
00304     
00305     gateData = bufData[7];
00306 #ifdef debug    
00307     printf("gateData : %02x\n\r",gateData);
00308 #endif
00309 
00310     def_searchAddress = (def_myAddress & 0x3FFFFFFF) + 0x40000000;
00311 
00312     
00313 }
00314 
00315 /*
00316 void holdMode(int data){
00317     int inData[4];
00318     
00319     myIO1.input();
00320     myIO2.input();
00321     myIO3.input();
00322     myIO4.input();
00323     
00324     if(data == NOTHOLD){
00325         myIO1.mode(PullNone);
00326         myIO2.mode(PullNone);
00327         myIO3.mode(PullNone);
00328         myIO4.mode(PullNone);
00329         
00330         myled = 0;
00331     
00332     }else if(data == HOLD){
00333         
00334         myIO1.mode(PullDown);
00335         myIO2.mode(PullDown);
00336         myIO3.mode(PullDown);
00337         myIO4.mode(PullDown);
00338         
00339         //read
00340         inData[0] = myIO1;
00341         inData[1] = myIO2;
00342         inData[2] = myIO3;
00343         inData[3] = myIO4;
00344         //printf("inData[1]=%d\r\n",inData[1]);
00345         
00346         //closeAllGate();
00347         
00348         //hold
00349         myIO1.output();
00350         myIO2.output();
00351         myIO3.output();
00352         myIO4.output();
00353         
00354         myIO1.mode(PullUp);
00355         myIO2.mode(PullUp);
00356         myIO3.mode(PullUp);
00357         myIO4.mode(PullUp);
00358         
00359         myIO1 = inData[0];
00360         myIO2 = inData[1];
00361         myIO3 = inData[2];
00362         myIO4 = inData[3];
00363         
00364         myled = 1;
00365         
00366     }
00367 }
00368 */
00369 
00370 void holdIOs(int select, int readData){
00371         
00372         if(select == 1){
00373             myIO1.mode(PullDown);
00374             //hold
00375             myIO1.output();
00376             myIO1.mode(PullUp);
00377             myIO1 = readData;
00378             
00379         }else if(select == 2){
00380             myIO2.mode(PullDown);
00381             //hold
00382             myIO2.output();
00383             myIO2.mode(PullUp);
00384             myIO2 = readData;
00385             
00386         }else if(select == 3){
00387             myIO3.mode(PullDown);
00388             //hold
00389             myIO3.output();
00390             myIO3.mode(PullUp);
00391             myIO3 = readData;
00392             
00393         }else if(select == 4){
00394             myIO4.mode(PullDown);
00395             //hold
00396             myIO4.output();
00397             myIO4.mode(PullUp);
00398             myIO4 = readData;
00399             
00400         }
00401     
00402 }
00403 
00404 void holdMode(uint16_t data){
00405     int inData[4];
00406     uint8_t data8,dataBuf;
00407     data8 = data;
00408     //printf("data = %d, data8 = %d\r\n",data,data8);
00409     
00410     myIO1.input();
00411     myIO2.input();
00412     myIO3.input();
00413     myIO4.input();
00414     //read
00415     inData[0] = myIO1;
00416     inData[1] = myIO2;
00417     inData[2] = myIO3;
00418     inData[3] = myIO4;
00419     //printf("inData[0]=%d\r\n",inData[0]);
00420     //printf("inData[1]=%d\r\n",inData[1]);
00421     
00422     if(data == NOTHOLD){
00423         //printf("NOTHOLD\r\n");
00424         myIO1.mode(PullNone);
00425         myIO2.mode(PullNone);
00426         myIO3.mode(PullNone);
00427         myIO4.mode(PullNone);
00428         
00429         myled = 0;
00430         
00431     }else if(data == ALL_HOLD){
00432         //printf("ALL_HOLD\r\n");
00433         holdIOs(1,inData[0]);
00434         holdIOs(2,inData[1]);
00435         holdIOs(3,inData[2]);
00436         holdIOs(4,inData[3]);
00437         
00438         myled = 1;
00439     }else{
00440         dataBuf = data8 & 0b00000001;
00441         if(dataBuf == 1){
00442             //printf("data 1\r\n");
00443             holdIOs(1,inData[0]);
00444         }
00445         
00446         dataBuf = (data8>>1) & 0b00000001;
00447         if(dataBuf == 1){
00448             //printf("data 2\r\n");
00449             holdIOs(2,inData[1]);
00450         }
00451         
00452         dataBuf = (data8>>2) & 0b00000001;
00453         if(dataBuf == 1){
00454             //printf("data 3\r\n");
00455             holdIOs(3,inData[2]);
00456         }
00457         
00458         dataBuf = (data8>>3) & 0b00000001;
00459         if(dataBuf == 1){
00460             //printf("data 4\r\n");
00461             holdIOs(4,inData[3]);
00462         }
00463     }
00464 }
00465 
00466 
00467 
00468 
00469 
00470 void closeAllGate(void){
00471     
00472             Gate1_1 = GateClose;
00473             Gate1_2 = GateClose;
00474             Gate1_3 = GateClose;
00475             Gate1_4 = GateClose;
00476             Gate2_MISO = GateClose;
00477             Gate2_MOSI = GateClose;
00478             Gate2_SCK = GateClose;
00479             Gate2_4 = GateClose;
00480             myFET = OffFET;
00481 }
00482 
00483 void writeMode1(uint16_t mode1, uint16_t mode2){
00484     
00485     switch(mode1){
00486         case 0x01:
00487             holdMode(NOTHOLD);
00488             //close all gate
00489             myFET = OffFET;
00490             //myGate = GateClose;
00491             closeAllGate();
00492             myled = 0;
00493 #ifdef debug
00494             printf("close gate\r\n");
00495 #endif
00496             break;
00497             
00498         case 0x02:
00499             //open gate normal IOs
00500             closeAllGate();
00501             myFET = OffFET;
00502             //myGate = GateOpen;
00503             Gate1_1 = GateOpen;
00504             Gate1_2 = GateOpen;
00505             Gate1_3 = GateOpen;
00506             Gate1_4 = GateOpen;
00507             holdMode(NOTHOLD);
00508             myled = 1;
00509 #ifdef debug
00510             printf("open gate\r\n");
00511 #endif
00512             break;
00513             
00514         case 0x03:
00515             //Detect mode ON
00516             //myGate = GateClose;
00517             closeAllGate();
00518             wait_ms(0.01);
00519             myFET = OnFET;
00520             myled = 1;
00521 #ifdef debug
00522             printf("Detect mode ON\r\n");
00523 #endif
00524             break;
00525             
00526         case 0x04:
00527             //Detect mode OFF
00528             //myGate = GateClose;
00529             closeAllGate();
00530             wait_ms(0.01);
00531             myFET = OffFET;
00532             myled = 0;
00533 #ifdef debug
00534             printf("Detect mode OFF\r\n");
00535 #endif
00536             break;
00537             
00538         case 0x05://LED on
00539             myled = 1;
00540 #ifdef debug
00541             printf("LED ON\r\n");
00542 #endif
00543             break;
00544             
00545         case 0x06://LED off
00546             myled = 0;
00547 #ifdef debug
00548             printf("LED OFF\r\n");
00549 #endif
00550             break;
00551             
00552         case 0x07://SPI gate : MOSI MISO SCK CS
00553             closeAllGate();
00554             Gate2_MOSI = GateOpen;
00555             Gate2_MISO = GateOpen;
00556             Gate2_SCK = GateOpen;
00557             Gate1_4 = GateOpen;
00558             holdMode(NOTHOLD);
00559             myled = 1;
00560             break;
00561             
00562         case 0x08://One way SPI gate : MOSI SCK CS EXtra IO
00563             closeAllGate();
00564             Gate2_MOSI = GateOpen;
00565             Gate1_2 = GateOpen;
00566             Gate2_SCK = GateOpen;
00567             Gate1_4 = GateOpen;
00568             holdMode(NOTHOLD);
00569             myled = 1;
00570             
00571             break;
00572             
00573         case 0x09://SCK as a clock : SCK Extra IOs
00574             closeAllGate();        
00575             Gate1_1 = GateOpen;
00576             Gate1_2 = GateOpen;
00577             Gate2_SCK = GateOpen;
00578             Gate1_4 = GateOpen;
00579             holdMode(NOTHOLD);
00580             myled = 1;
00581         
00582             break;
00583             
00584         case 0x0A://SPI gate : MISO SCK CS
00585             closeAllGate();        
00586             Gate1_1 = GateOpen;
00587             Gate2_MISO = GateOpen;
00588             Gate2_SCK = GateOpen;
00589             Gate1_4 = GateOpen;
00590             holdMode(NOTHOLD);
00591             myled = 1;
00592         
00593             break;
00594             
00595         case 0x0B://hold mode ON
00596             //holdMode(HOLD);
00597             holdMode(mode2);
00598             closeAllGate();
00599             break;
00600             
00601         case 0x0C://hold mode OFF
00602             holdMode(NOTHOLD);
00603             //closeAllGate();
00604             break;
00605             
00606         default:
00607             myFET = OffFET;
00608             //myGate = GateClose;
00609             closeAllGate();
00610             holdMode(NOTHOLD);
00611 #ifdef debug
00612             printf("default\r\n");
00613 #endif
00614             myled = 0;
00615             break;
00616     }
00617 }
00618 
00619 
00620 void writeMode2(uint16_t mode2){
00621     //not yet
00622     
00623 }
00624 
00625 void resetAll(void){
00626     myFET = OffFET;
00627     //myGate = GateClose;
00628     closeAllGate();
00629     myled = 0;
00630 }
00631 
00632 int main() {
00633     uint8_t flg_mode = 0;
00634     uint16_t SpiRdata = 0;
00635     //uint16_t SpiAddr = 0;
00636     uint32_t SpiAddr = 0;
00637     uint16_t SpiIoNo = 0;
00638     uint16_t SpiWrite = 0;
00639     uint8_t resetCounter = 0;
00640     uint8_t flg_ResetMode = 0;
00641 
00642 #ifdef ROMtest
00643     EEPROMtest();
00644     while(1){
00645         ;
00646     }
00647 #endif
00648 
00649 #ifdef test
00650     while(1){
00651         holdMode(0b00001001);
00652         wait(1);
00653         holdMode(0b00000110);
00654         wait(1);
00655         holdMode(0b00000101);
00656         wait(1);
00657         holdMode(0b00001010);
00658         wait(1);
00659     }
00660     spiTest();
00661     IoTest();
00662 #endif
00663     
00664     myIO1.input();
00665     myIO2.input();
00666     myIO3.input();
00667     myIO4.input();
00668     myIO1.mode(PullNone);
00669     myIO2.mode(PullNone);
00670     myIO3.mode(PullNone);
00671     myIO4.mode(PullNone);
00672     
00673     myled = 1;
00674     wait(0.1);
00675     myled = 0;
00676     wait(0.1);
00677     myled = 1;
00678     wait(0.1);
00679     myled = 0;
00680     wait(0.1);
00681     
00682     //myUart.printf("test OK /r/n");
00683     //EEPROMtest();
00684     
00685     ReadDataFromEEPROM();
00686     
00687     //def_myAddress=0x80000001;
00688     //while(1);
00689     
00690     myFET = OffFET;
00691     //myGate = GateClose;
00692     closeAllGate();
00693     
00694     myled = 0;
00695     device.format(8,0);
00696     device.frequency(SPIfreq);
00697     
00698     device.reply(0x00);              // Prime SPI with first reply
00699     
00700 /*
00701 holdMode(HOLD);
00702 while(1){
00703     ;
00704     }
00705 */  
00706   
00707     while(1) {
00708         flg_ResetMode = 0;
00709         if(device.receive()) {
00710             SpiRdata = device.read();
00711 #ifdef debug
00712             printf("device.receive() SpiRdata = %d\r\n",SpiRdata);
00713             printf("flg_mode = %d\r\n",flg_mode);
00714 #endif
00715             //myled = 1;
00716             if(SpiRdata == 0x00){
00717                 ++resetCounter;
00718                 if(resetCounter >= 6){
00719             //if((SpiRdata == 0x00)&&(flg_mode != 1)){//reset
00720                     flg_mode = 0;
00721                     SpiAddr = 0;
00722                     SpiIoNo = 0;
00723                     SpiWrite = 0;
00724                     resetCounter = 0;
00725                     flg_ResetMode = 1;
00726                     
00727                     //resetAll();
00728                     myled = 1;
00729                     wait(0.1);
00730                     myled = 0;
00731                     wait(0.1);
00732                     myled = 1;
00733                     wait(0.1);
00734                     myled = 0;
00735                     wait(0.1);
00736 #ifdef debug
00737                     printf("reset\r\n");
00738 #endif
00739                 }
00740                 
00741             }else{
00742                 resetCounter = 0;
00743             }
00744                 
00745             //}else{//select mode
00746                 
00747                 if((flg_mode == 0) && (flg_ResetMode == 0)) {//read address data
00748                     SpiAddr = SpiRdata;
00749                     flg_mode = 1;
00750 #ifdef debug
00751                     printf("0 flg_mode = %d\r\n",flg_mode);
00752 #endif
00753                 }else if(flg_mode == 1) {//read address data
00754                     SpiAddr = (SpiAddr<<8) + SpiRdata;
00755                     flg_mode = 11;
00756 #ifdef debug
00757                     printf("1 flg_mode = %d\r\n",flg_mode);
00758 #endif
00759                 }else if(flg_mode == 11) {//read address data
00760                     SpiAddr = (SpiAddr<<8) + SpiRdata;
00761                     flg_mode = 12;
00762 #ifdef debug
00763                     printf("11 flg_mode = %d\r\n",flg_mode);
00764 #endif
00765                 }else if(flg_mode == 12) {//read address data
00766                     SpiAddr = (SpiAddr<<8) + SpiRdata;
00767                     flg_mode = 2;
00768 #ifdef debug
00769                     printf("12 flg_mode = %d\r\n",flg_mode);
00770 #endif
00771                 }else if(flg_mode == 2) {//read address data
00772                     SpiIoNo = SpiRdata;
00773                     flg_mode = 3;
00774 #ifdef debug
00775                     printf("2 flg_mode = %d\r\n",flg_mode);
00776 #endif
00777                 }else if(flg_mode == 3) {//read fpga write data
00778                     SpiWrite = SpiRdata;
00779                     flg_mode = 0;
00780 #ifdef debug
00781                     printf("3 flg_mode = %d\r\n",flg_mode);
00782                     printf("SpiAddr = %d\r\n",SpiAddr);
00783                     printf("SpiAddr = %08x\r\n",SpiAddr);
00784                     printf("SpiIoNo = %d\r\n",SpiIoNo);
00785                     printf("SpiWrite = %d\r\n",SpiWrite);
00786 #endif
00787                     
00788                     //Select mode
00789                     if(SpiAddr == def_myAddress){
00790 #ifdef debug
00791                         printf("Select mode\r\n");
00792 #endif
00793                         writeMode1(SpiIoNo,SpiWrite);
00794                         //writeMode2(SpiWrite);
00795                         //myled = 1;
00796                         
00797                         /*while(1) {
00798                             for(int i=0;i<SpiIoNo;++i){
00799                                 myled = 1;
00800                                 wait(0.2);
00801                                 myled = 0;
00802                                 wait(0.2);
00803                             }
00804                             myled = 1;
00805                             wait(1);
00806                             myled = 0;
00807                             wait(1);
00808                         }*/
00809                         
00810                         flg_mode = 0;
00811                         SpiAddr = 0;
00812                         SpiIoNo = 0;
00813                         SpiWrite = 0;
00814                         
00815                     }else if((SpiAddr < 0x80000000)&&(SpiAddr <= def_searchAddress)){
00816                         writeMode1(SpiIoNo,SpiWrite);
00817                         //writeMode2(SpiWrite);
00818                     }else{//not this address
00819                         //flug reset
00820                         flg_mode = 0;
00821                         SpiAddr = 0;
00822                         SpiIoNo = 0;
00823                         SpiWrite = 0;
00824                         myled = 0;
00825 #ifdef debug
00826                         printf("Not me\r\n");
00827 #endif
00828                      
00829                     }
00830                 }
00831             
00832         }
00833     }
00834 }