Na sungil / NM500_Test_Socket
Revision:
1:f23d9ead1017
Parent:
0:f7ea94750875
Child:
2:4a75bdce2735
diff -r f7ea94750875 -r f23d9ead1017 Test.cpp
--- a/Test.cpp	Tue Jul 18 07:32:39 2017 +0000
+++ b/Test.cpp	Fri Nov 24 00:33:13 2017 +0000
@@ -8,6 +8,7 @@
 FILE *fp=NULL;
 
 
+
 DigitalOut SDCard_CS(D10);
 
 unsigned char vector[NEURONSIZE];
@@ -16,6 +17,7 @@
 extern int GCR_Conn_fail;
 extern int MINIF_Conn_fail;
 extern int MAXIF_Conn_fail;
+extern int AIF_Conn_fail;
 extern int NCR_Conn_fail;
 extern int Memory_fail;
 
@@ -68,17 +70,54 @@
     {
         error("Could not open file for write\n");
     }
-    fclose(fp);   
+    fclose(fp); 
     printf("SD Init OK\n");
 }
 void RESET_Test(void)
 {
+    
+    printf("\nRESET Test\n");
+
+    //nomal mode
+    //printf("NOMAL MODE \n");
     int nsr = read(NM_NSR);
+    //printf("NSR : 0x%x \n",nsr);
     int gcr = read(NM_GCR);
+    //printf("GCR : 0x%x \n",gcr);
     int minif = read(NM_MINIF);
-    int maxif = read(NM_MAXIF);  
+    //printf("MINIF : 0x%x \n",minif);
+    int maxif = read(NM_MAXIF);
+    //printf("MAXIF : 0x%x \n",maxif);
+    int dist = read(NM_DIST);
+    //printf("dist : 0x%x \n",dist);
+    int cat = read(NM_CAT);
+    //printf("cat : 0x%x \n",cat);   
+    int ncount = read(NM_NCOUNT);
+    //printf("ncount : 0x%x \n",ncount);
+
+
 
-    //printf("RESET Test\n");
+    //sr mode
+   // printf("\nSR MODE \n");
+    write(NM_NSR,0x10);
+//    int comp = read(NM_COMP);
+//    printf("COMP : 0x%x \n",comp);
+    //nsr = read(NM_NSR);
+    //printf("NSR : 0x%x \n",nsr);
+    //minif = read(NM_MINIF);
+    //printf("MINIF : 0x%x \n",minif);
+    int ncr = read(NM_NCR);
+    //printf("ncr : 0x%x \n",ncr);
+    //dist = read(NM_DIST);
+    //printf("dist : 0x%x \n",dist);
+    //cat = read(NM_CAT);
+    //printf("cat : 0x%x \n",cat); 
+    int aif = read(NM_AIF);
+    //printf("aif : 0x%x \n",aif);
+    int nid = read(NM_NID);
+    //printf("nid : 0x%x \n",nid);
+    
+    write(NM_NSR,0x00);
     
     if(nsr != 0x00)
         Reset_fail = 1;
@@ -88,61 +127,66 @@
         Reset_fail = 1;
     if(maxif != 0x4000)
         Reset_fail = 1;
- 
+    if(dist != 0xffff)
+        Reset_fail = 1;
+    if(cat != 0xffff)
+        Reset_fail = 1;
+    if(ncr != 0x01)
+        Reset_fail = 1;
+    if(aif != 0x4000)
+        Reset_fail = 1;
+    if(nid != 0x0000)
+        Reset_fail = 1;
+    
     if(Reset_fail == 0)
         printf("Reset Test Pass\n");
-    else
+    else{
+        printf("Reset Test Fail\n");
         printf("Reset the NM500 and proceed\n");
-//    printf("NSR : 0x%x\n", nsr);
-//    printf("GCR : 0x%x\n", gcr);
-//    printf("MINIF : 0x%x\n", minif);
-//    printf("MAXIF : 0x%x\n", maxif);
-
-    
+    }
 }
 //각 레지스터의 데이터가 깨지는 것이 없는지 확인
 void Connection_test(void)
 {
     ///////////NSR 시작//////////////
-    //기존 NSR 백업
-    int init_NSR = read(NM_NSR);
-    //NSR의 데이터에 0xaa write
-    write(NM_NSR, 0xaa);
-    //사용하는 비트만 & 연산
-    int temp_NSR = read(NM_NSR)& 0x1f;
-    //printf("NSR : 0x%x\n", temp_NSR);
-    if(temp_NSR != 0xa){
-        printf("NSR Connection error\n");
-        NSR_Conn_fail=1;
-        Connection = 1;
-    }
-    
-    //NSR의 데이터를 0x55로 변경하여 write
-    write(NM_NSR, 0x055);
-    temp_NSR = read(NM_NSR)&0x1f;
-    //printf("NSR : 0x%x",temp_NSR);
-    if(temp_NSR != 0x19){
-        printf("NSR Connection error\n"); 
-        NSR_Conn_fail=1;
-        Connection = 1;
-    }  
-    if(NSR_Conn_fail == 0)
-        //printf("NSR_Connetion PASS \n");
-        
-    //NSR을 초기 저장값으로 복원
-    write(NM_NSR, init_NSR);
+    printf("\nConnection Test\n");
+//    //기존 NSR 백업
+//    //int init_NSR = read(NM_NSR);
+//    //NSR의 데이터에 0xaa write
+//    write(NM_NSR, 0xaa);
+//    //사용하는 비트만 & 연산
+//    int temp_NSR = read(NM_NSR)& 0x3f;
+//    //printf("NSR : 0x%x\n", temp_NSR);
+//    if(temp_NSR != 0x2a){
+//        printf("NSR Connection error\n");
+//        NSR_Conn_fail=1;
+//        Connection = 1;
+//    }
+//    
+//    //NSR의 데이터를 0x55로 변경하여 write
+//    write(NM_NSR, 0x055);
+//    temp_NSR = read(NM_NSR)&0x3f;
+//    //printf("NSR : 0x%x\n",temp_NSR);
+//    if(temp_NSR != 0x19){
+//        printf("NSR Connection error\n"); 
+//        NSR_Conn_fail=1;
+//        Connection = 1;
+//    }  
+////    if(NSR_Conn_fail == 0)
+////        printf("NSR_Connetion PASS \n");
+//        
+//    //NSR을 초기 저장값으로 복원
+//    write(NM_NSR, 0);
 
     ////////////NSR 종료////////////
     
     
-    ///////////GCR 시작//////////////
-    unsigned int init_GCR = read(NM_GCR);
-    
+    ///////////GCR 시작//////////////    
     //write GCR 0xaa
     write(NM_GCR, 0xaa);
     //GCR Read
     unsigned int temp_GCR = read(NM_GCR);
-    //printf("GCR : 0x%x\n", temp_GCR);
+   // printf("GCR : 0x%x\n", temp_GCR);
     
     //GCR data가 깨졌을 경우
     if(temp_GCR != 0xaa){
@@ -160,72 +204,64 @@
         Connection = 1;
         printf("GCR Connection error\n");
     }
-    
-    if(GCR_Conn_fail == 0)
-       // printf("GCR Connection PASS\n");
-    write(NM_GCR, init_GCR);
+
     ///////////GCR 종료//////////////
     
     
     
     ///////////MINIF 시작//////////////
-    
-    //write minif 0xaa
-    write(NM_MINIF, 0xaa);
+        
+    write(NM_MINIF, 0xaaaa);
     int temp_MINIF = read(NM_MINIF);
     //printf("MINIF : 0x%x\n", temp_MINIF);
     //minif data 확인
-    if(temp_MINIF != 0xaa){
+    if(temp_MINIF != 0xaaaa){
         MINIF_Conn_fail = 1;
         Connection = 1;
         printf("MINIF Connection error\n");
     }
     //write MINIF 0x55
-    write(NM_MINIF, 0x55);
+    write(NM_MINIF, 0x5555);
     temp_MINIF = read(NM_MINIF);
     //printf("MINIF : 0x%x\n", temp_MINIF);
     //MINIF test
-    if(temp_MINIF != 0x55){
+    if(temp_MINIF != 0x5555){
         MINIF_Conn_fail = 1;
         Connection = 1;
         printf("MINIF Connection error\n");
     }
+       
+       //////////END MINIF/////////////////
+       
+      ///////////MAXIF 시작//////////////
     
-    if(MINIF_Conn_fail == 0)
-       // printf("MINIF Connection PASS\n");
-    ///////////MINIF 종료//////////////
 
-    ///////////MAXIFIF 시작//////////////
-    //write MAXIF 0xaa
-    write(NM_MAXIF, 0xaa);
+    //write maxif 0xaaaa
+    
+    write(NM_MAXIF, 0xaaaa);
     int temp_MAXIF = read(NM_MAXIF);
     //printf("MAXIF : 0x%x\n", temp_MAXIF);
-    //MAXIF test
-    if(temp_MAXIF != 0xaa){
+    //maxif data 확인
+    if(temp_MAXIF != 0xaaaa){
         MAXIF_Conn_fail = 1;
         Connection = 1;
         printf("MAXIF Connection error\n");
     }
     //write MAXIF 0x55
-    write(NM_MAXIF, 0x55);
+    write(NM_MAXIF, 0x5555);
     temp_MAXIF = read(NM_MAXIF);
     //printf("MAXIF : 0x%x\n", temp_MAXIF);
     //MAXIF test
-    if(temp_MAXIF != 0x55){
+    if(temp_MAXIF != 0x5555){
         MAXIF_Conn_fail = 1;
         Connection = 1;
         printf("MAXIF Connection error\n");
-    }
-    
-    if(MAXIF_Conn_fail == 0)
-      //  printf("MAXIF Connection PASS\n");
-    ///////////MAXIF 종료//////////////
-    
-   
+    }      
+    //////////END MAXIF/////////////////
+
+
     ///////////NCR 시작//////////////
     //NSR 저장
-    init_NSR = read(NM_NSR);
-    //printf("init NSR : 0x%x\n", init_NSR);
     //SR Mode 전환
     write(NM_NSR, 0x10);
     int init_NCR = read(NM_NCR);
@@ -233,7 +269,7 @@
     //write NCR 0xaa
     write(NM_NCR, 0xaa);
     int temp_NCR = read(NM_NCR);
-  //  printf("NCR : 0x%x\n", temp_NCR);
+    //printf("NCR : 0x%x\n", temp_NCR);
     //NCR test
     if(temp_NCR != 0xaa){
         NCR_Conn_fail = 1;
@@ -250,18 +286,35 @@
         Connection = 1;
         printf("NCR Connection error\n");
     }
-    
-    if(NCR_Conn_fail == 0)
-     //   printf("NCR Connection PASS\n");
-    write(NM_NCR, init_NCR);
-    //restore Nomal Mode
-//    printf("init NSR : 0x%x\n", init_NSR);
-    //NSR 복원
-    write(NM_NSR, init_NSR);
-    ///////////NCR 종료//////////////    
+
+///////////NCR 종료//////////////    
+
+/////////////////AIF
+
+    write(NM_AIF, 0xaaaa);
+    int temp_AIF = read(NM_AIF);
+    //printf("AIF : 0x%x\n", temp_AIF);
+    //AIF test
+    if(temp_AIF != 0xaaaa){
+        AIF_Conn_fail = 1;
+        Connection = 1;
+        printf("AIF Connection error\n");
+    }
+    //write AIF 0x55
+    write(NM_AIF, 0x5555);
+    temp_AIF = read(NM_AIF);
+   /// printf("AIF : 0x%x\n", temp_AIF);
+    //AIF test
+    if(temp_AIF != 0x5555){
+        AIF_Conn_fail = 1;
+        Connection = 1;
+        printf("AIF Connection error\n");
+    }
+
+    write(NM_NSR, 0x00);
     
     if(Connection == 1)
-        error("Connection Test Fail\n");
+        printf("Connection Test Fail\n");
     else
         printf("Connection Test Pass\n");
 }
@@ -493,7 +546,7 @@
         printf(".");
     } 
     printf("\n");
-    printf("NCOUNT : %d\n",ncnt);
+//    printf("NCOUNT : %d\n",ncnt);
     //학습 완료 후 ncount가 MAXNEURONS보다 작을 경우
     if(ncnt == MAXNEURONS/2)
         return 1;       //데이지체인 불량
@@ -751,7 +804,7 @@
 {
     int distance, cat, nid;
     //number of neuron 1156
-    for(int i=1;i<=MAXNEURONS;i++){          
+        for(int i=1;i<=MAXNEURONS;i++){          
         if(i%2 == 1){
             for(int j =0;j<DATA_CNT;j=j+2){   
                 vector[j] = i>>8;          //upper bit save
@@ -773,6 +826,7 @@
 
         //input : data, data length      output : distance, category, Neuron ID      return 인식된 데이터 갯수
         int nsr = classify(vector, NEURONSIZE, &distance, &cat, &nid);
+
         id_fail = nsr & 0x70;
         if(id_fail == 0)
             nsr_fail = 1;