NM500 Lib
NM500.cpp@8:ad9c8681ca41, 2018-12-17 (annotated)
- Committer:
- Nasungil
- Date:
- Mon Dec 17 04:13:50 2018 +0000
- Revision:
- 8:ad9c8681ca41
- Parent:
- 7:a8ebb0cab33d
- Child:
- 9:06ef3c5d6737
NM500 SocketBoard 180524
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Nasungil | 0:fadd3703a42c | 1 | #include "NM500.h" |
Nasungil | 0:fadd3703a42c | 2 | #include "mbed.h" |
Nasungil | 7:a8ebb0cab33d | 3 | //#include "SDFileSystem.h" |
Nasungil | 0:fadd3703a42c | 4 | |
Nasungil | 7:a8ebb0cab33d | 5 | //SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCK, SD_CS, "sd"); // the pinout on the mbed Cool Components workshop board |
Nasungil | 0:fadd3703a42c | 6 | |
Nasungil | 0:fadd3703a42c | 7 | SPI NM500(SPI_MOSI, SPI_MISO, SPI_SCK); |
Nasungil | 0:fadd3703a42c | 8 | |
Nasungil | 5:dacd883e994d | 9 | //Serial test(SERIAL_TX, SERIAL_RX); |
Nasungil | 7:a8ebb0cab33d | 10 | //extern int Reset_fail; |
Nasungil | 7:a8ebb0cab33d | 11 | //extern int CMN_RC; |
Nasungil | 7:a8ebb0cab33d | 12 | //extern int aif_fail; |
Nasungil | 7:a8ebb0cab33d | 13 | //extern int ncount_fail; |
Nasungil | 7:a8ebb0cab33d | 14 | //extern int Gcr1; |
Nasungil | 7:a8ebb0cab33d | 15 | //extern int Gcr2; |
Nasungil | 7:a8ebb0cab33d | 16 | //extern int Aif1; |
Nasungil | 7:a8ebb0cab33d | 17 | //extern int Aif2; |
Nasungil | 7:a8ebb0cab33d | 18 | //extern int Minif1; |
Nasungil | 7:a8ebb0cab33d | 19 | //extern int Minif2; |
Nasungil | 7:a8ebb0cab33d | 20 | //extern int Maxif1; |
Nasungil | 7:a8ebb0cab33d | 21 | //extern int Maxif2; |
Nasungil | 7:a8ebb0cab33d | 22 | //extern int Cat1; |
Nasungil | 7:a8ebb0cab33d | 23 | //extern int Cat2; |
Nasungil | 7:a8ebb0cab33d | 24 | // |
Nasungil | 7:a8ebb0cab33d | 25 | //extern int Memory1; |
Nasungil | 7:a8ebb0cab33d | 26 | //extern int Memory2; |
Nasungil | 7:a8ebb0cab33d | 27 | // |
Nasungil | 7:a8ebb0cab33d | 28 | //extern char array1[NEURONSIZE]; |
Nasungil | 7:a8ebb0cab33d | 29 | //extern char array2[NEURONSIZE]; |
Nasungil | 6:4bc46c554aed | 30 | |
Nasungil | 6:4bc46c554aed | 31 | |
Nasungil | 7:a8ebb0cab33d | 32 | //FILE *fp=NULL; |
Nasungil | 0:fadd3703a42c | 33 | |
Nasungil | 4:b23c96320c3f | 34 | DigitalOut BC_CS(D9); |
Nasungil | 7:a8ebb0cab33d | 35 | //DigitalOut SDCard_CS(D10); |
Nasungil | 7:a8ebb0cab33d | 36 | //DigitalOut CLK_EN(PA_15); |
Nasungil | 0:fadd3703a42c | 37 | |
Nasungil | 7:a8ebb0cab33d | 38 | //SPI init |
Nasungil | 7:a8ebb0cab33d | 39 | void SPI_Init(void) |
Nasungil | 7:a8ebb0cab33d | 40 | { |
Nasungil | 4:b23c96320c3f | 41 | |
Nasungil | 5:dacd883e994d | 42 | BC_CS = HIGH; //disable |
Nasungil | 7:a8ebb0cab33d | 43 | |
Nasungil | 0:fadd3703a42c | 44 | NM500.format(8,0); |
Nasungil | 8:ad9c8681ca41 | 45 | NM500.frequency(2000000); |
Nasungil | 7:a8ebb0cab33d | 46 | printf("SPI Init OK\n"); |
Nasungil | 1:5cdfdb2e5691 | 47 | |
Nasungil | 7:a8ebb0cab33d | 48 | } |
Nasungil | 7:a8ebb0cab33d | 49 | int begin() |
Nasungil | 7:a8ebb0cab33d | 50 | { |
Nasungil | 1:5cdfdb2e5691 | 51 | return clearNeurons(); //neruon init() |
Nasungil | 0:fadd3703a42c | 52 | } |
Nasungil | 7:a8ebb0cab33d | 53 | //void RESET_Test(void) |
Nasungil | 7:a8ebb0cab33d | 54 | //{ |
Nasungil | 7:a8ebb0cab33d | 55 | // int nsr = read(NM_NSR); |
Nasungil | 7:a8ebb0cab33d | 56 | // int gcr = read(NM_GCR); |
Nasungil | 7:a8ebb0cab33d | 57 | // int minif = read(NM_MINIF); |
Nasungil | 7:a8ebb0cab33d | 58 | // int maxif = read(NM_MAXIF); |
Nasungil | 7:a8ebb0cab33d | 59 | // |
Nasungil | 7:a8ebb0cab33d | 60 | // printf("RESET Test\n"); |
Nasungil | 7:a8ebb0cab33d | 61 | // |
Nasungil | 7:a8ebb0cab33d | 62 | // if(nsr != 0x00) |
Nasungil | 7:a8ebb0cab33d | 63 | // Reset_fail = 1; |
Nasungil | 7:a8ebb0cab33d | 64 | // if(gcr != 0x01) |
Nasungil | 7:a8ebb0cab33d | 65 | // Reset_fail = 1; |
Nasungil | 7:a8ebb0cab33d | 66 | // if(minif != 0x02) |
Nasungil | 7:a8ebb0cab33d | 67 | // Reset_fail = 1; |
Nasungil | 7:a8ebb0cab33d | 68 | // if(maxif != 0x4000) |
Nasungil | 7:a8ebb0cab33d | 69 | // Reset_fail = 1; |
Nasungil | 7:a8ebb0cab33d | 70 | // |
Nasungil | 7:a8ebb0cab33d | 71 | // if(Reset_fail == 0) |
Nasungil | 7:a8ebb0cab33d | 72 | // printf("Reset Test Pass\n"); |
Nasungil | 7:a8ebb0cab33d | 73 | // else |
Nasungil | 7:a8ebb0cab33d | 74 | // error("Reset the NM500 and proceed"); |
Nasungil | 7:a8ebb0cab33d | 75 | //// printf("NSR : 0x%x\n", nsr); |
Nasungil | 7:a8ebb0cab33d | 76 | //// printf("GCR : 0x%x\n", gcr); |
Nasungil | 7:a8ebb0cab33d | 77 | //// printf("MINIF : 0x%x\n", minif); |
Nasungil | 7:a8ebb0cab33d | 78 | //// printf("MAXIF : 0x%x\n", maxif); |
Nasungil | 7:a8ebb0cab33d | 79 | // |
Nasungil | 7:a8ebb0cab33d | 80 | // |
Nasungil | 7:a8ebb0cab33d | 81 | //} |
Nasungil | 0:fadd3703a42c | 82 | //forget |
Nasungil | 0:fadd3703a42c | 83 | void forget() |
Nasungil | 0:fadd3703a42c | 84 | { |
Nasungil | 0:fadd3703a42c | 85 | write(NM_FORGET, 0); |
Nasungil | 0:fadd3703a42c | 86 | } |
Nasungil | 0:fadd3703a42c | 87 | int clearNeurons() |
Nasungil | 0:fadd3703a42c | 88 | { |
Nasungil | 0:fadd3703a42c | 89 | write(NM_FORGET,0); |
Nasungil | 6:4bc46c554aed | 90 | write(NM_NSR, 0x10); |
Nasungil | 0:fadd3703a42c | 91 | for (int i=0; i< NEURONSIZE; i++) write(NM_TESTCOMP,0); |
Nasungil | 6:4bc46c554aed | 92 | write(NM_NSR, 0); |
Nasungil | 7:a8ebb0cab33d | 93 | |
Nasungil | 7:a8ebb0cab33d | 94 | if(read(NM_MINIF)==2) |
Nasungil | 0:fadd3703a42c | 95 | return(0); //clear ok |
Nasungil | 0:fadd3703a42c | 96 | else |
Nasungil | 0:fadd3703a42c | 97 | return(1); //clear error |
Nasungil | 7:a8ebb0cab33d | 98 | |
Nasungil | 0:fadd3703a42c | 99 | } |
Nasungil | 0:fadd3703a42c | 100 | int learn(unsigned char vector[], int length, int category) |
Nasungil | 0:fadd3703a42c | 101 | { |
Nasungil | 0:fadd3703a42c | 102 | broadcast(vector, length); |
Nasungil | 0:fadd3703a42c | 103 | write(NM_CAT,category); |
Nasungil | 0:fadd3703a42c | 104 | return(read(NM_NCOUNT)); |
Nasungil | 0:fadd3703a42c | 105 | } |
Nasungil | 3:3362f56d99fc | 106 | |
Nasungil | 0:fadd3703a42c | 107 | int classify(unsigned char vector[], int length, int* distance, int* category, int* nid) |
Nasungil | 0:fadd3703a42c | 108 | { |
Nasungil | 0:fadd3703a42c | 109 | broadcast(vector, length); |
Nasungil | 0:fadd3703a42c | 110 | *distance = read(NM_DIST); |
Nasungil | 0:fadd3703a42c | 111 | *category = read(NM_CAT) & 0x7FFF; //Degenerated bit15 is masked |
Nasungil | 0:fadd3703a42c | 112 | *nid = read(NM_NID); |
Nasungil | 6:4bc46c554aed | 113 | |
Nasungil | 0:fadd3703a42c | 114 | return(read(NM_NSR)); |
Nasungil | 0:fadd3703a42c | 115 | } |
Nasungil | 5:dacd883e994d | 116 | |
Nasungil | 0:fadd3703a42c | 117 | void setRBF() |
Nasungil | 0:fadd3703a42c | 118 | { |
Nasungil | 0:fadd3703a42c | 119 | int tempNSR=read(NM_NSR); |
Nasungil | 0:fadd3703a42c | 120 | write(NM_NSR, tempNSR & 0xDF); |
Nasungil | 0:fadd3703a42c | 121 | } |
Nasungil | 0:fadd3703a42c | 122 | void setKNN() |
Nasungil | 0:fadd3703a42c | 123 | { |
Nasungil | 0:fadd3703a42c | 124 | int tempNSR = read(NM_NSR); |
Nasungil | 0:fadd3703a42c | 125 | write(NM_NSR, tempNSR | 0x20); |
Nasungil | 0:fadd3703a42c | 126 | } |
Nasungil | 0:fadd3703a42c | 127 | |
Nasungil | 0:fadd3703a42c | 128 | //Read the selected neuron data. |
Nasungil | 0:fadd3703a42c | 129 | int NCOUNT() |
Nasungil | 0:fadd3703a42c | 130 | { |
Nasungil | 0:fadd3703a42c | 131 | return(read(NM_NCOUNT)); |
Nasungil | 0:fadd3703a42c | 132 | } |
Nasungil | 0:fadd3703a42c | 133 | |
Nasungil | 0:fadd3703a42c | 134 | |
Nasungil | 0:fadd3703a42c | 135 | //write data |
Nasungil | 0:fadd3703a42c | 136 | void write(char reg, int data) |
Nasungil | 0:fadd3703a42c | 137 | { |
Nasungil | 0:fadd3703a42c | 138 | NM500.format(8,0); |
Nasungil | 0:fadd3703a42c | 139 | BC_CS = LOW; |
Nasungil | 0:fadd3703a42c | 140 | NM500.write(1); //dummy |
Nasungil | 0:fadd3703a42c | 141 | NM500.write(CM1K+0x80); |
Nasungil | 0:fadd3703a42c | 142 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 143 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 144 | NM500.write(reg); |
Nasungil | 0:fadd3703a42c | 145 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 146 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 147 | NM500.write(1); |
Nasungil | 0:fadd3703a42c | 148 | NM500.write((unsigned char)(data >> 8)); // upper data |
Nasungil | 0:fadd3703a42c | 149 | NM500.write((unsigned char)(data & 0x00FF)); // lower data |
Nasungil | 0:fadd3703a42c | 150 | //for(int i=0;i<10;i++); |
Nasungil | 0:fadd3703a42c | 151 | BC_CS = HIGH; |
Nasungil | 0:fadd3703a42c | 152 | |
Nasungil | 0:fadd3703a42c | 153 | |
Nasungil | 0:fadd3703a42c | 154 | } |
Nasungil | 0:fadd3703a42c | 155 | |
Nasungil | 0:fadd3703a42c | 156 | //read data |
Nasungil | 0:fadd3703a42c | 157 | int read(char reg) |
Nasungil | 0:fadd3703a42c | 158 | { |
Nasungil | 0:fadd3703a42c | 159 | NM500.format(8,0); |
Nasungil | 0:fadd3703a42c | 160 | BC_CS = LOW; //BC enable |
Nasungil | 0:fadd3703a42c | 161 | |
Nasungil | 0:fadd3703a42c | 162 | NM500.write(1); //dummy |
Nasungil | 0:fadd3703a42c | 163 | NM500.write(CM1K); |
Nasungil | 0:fadd3703a42c | 164 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 165 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 166 | NM500.write(reg); |
Nasungil | 0:fadd3703a42c | 167 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 168 | NM500.write(0); |
Nasungil | 0:fadd3703a42c | 169 | NM500.write(1); |
Nasungil | 0:fadd3703a42c | 170 | int data = NM500.write(0); // Send 0 to push upper data out |
Nasungil | 0:fadd3703a42c | 171 | data = (data << 8) + NM500.write(0); // Send 0 to push lower data out |
Nasungil | 0:fadd3703a42c | 172 | BC_CS = HIGH; |
Nasungil | 0:fadd3703a42c | 173 | return(data); |
Nasungil | 0:fadd3703a42c | 174 | } |
Nasungil | 0:fadd3703a42c | 175 | int broadcast(unsigned char vector[], int length) |
Nasungil | 0:fadd3703a42c | 176 | { |
Nasungil | 0:fadd3703a42c | 177 | for(int i=0; i<length-1; i++) |
Nasungil | 0:fadd3703a42c | 178 | write(NM_COMP,vector[i]); |
Nasungil | 0:fadd3703a42c | 179 | write(NM_LCOMP, vector[length-1]); |
Nasungil | 0:fadd3703a42c | 180 | |
Nasungil | 0:fadd3703a42c | 181 | return read(NM_NSR); |
Nasungil | 0:fadd3703a42c | 182 | } |
Nasungil | 0:fadd3703a42c | 183 | |
Nasungil | 7:a8ebb0cab33d | 184 | //int NeuronToSD() |
Nasungil | 7:a8ebb0cab33d | 185 | //{ |
Nasungil | 7:a8ebb0cab33d | 186 | // |
Nasungil | 7:a8ebb0cab33d | 187 | // char neurons[NEURONSIZE]; |
Nasungil | 7:a8ebb0cab33d | 188 | // int aif=0; |
Nasungil | 7:a8ebb0cab33d | 189 | // fp = fopen("/sd/data.txt", "w"); |
Nasungil | 7:a8ebb0cab33d | 190 | // if(fp == NULL) |
Nasungil | 7:a8ebb0cab33d | 191 | // error("Write SD Fail"); |
Nasungil | 7:a8ebb0cab33d | 192 | // fflush(stdin); |
Nasungil | 7:a8ebb0cab33d | 193 | // |
Nasungil | 7:a8ebb0cab33d | 194 | // //save NSR |
Nasungil | 7:a8ebb0cab33d | 195 | // int TempNSR = read(NM_NSR); |
Nasungil | 7:a8ebb0cab33d | 196 | // |
Nasungil | 7:a8ebb0cab33d | 197 | // //read NCOUNT |
Nasungil | 7:a8ebb0cab33d | 198 | // int nm_cnt = read(NM_NCOUNT); |
Nasungil | 7:a8ebb0cab33d | 199 | // if(nm_cnt == 0xFFFF || nm_cnt == 0x7FFF) //change |
Nasungil | 7:a8ebb0cab33d | 200 | // nm_cnt = MAXNEURONS; |
Nasungil | 7:a8ebb0cab33d | 201 | // //printf("NCOUNT : %d\n", nm_cnt); |
Nasungil | 7:a8ebb0cab33d | 202 | // |
Nasungil | 7:a8ebb0cab33d | 203 | // |
Nasungil | 7:a8ebb0cab33d | 204 | // //write NSR-SR Mode |
Nasungil | 7:a8ebb0cab33d | 205 | // write(NM_NSR, 0x10); |
Nasungil | 7:a8ebb0cab33d | 206 | // |
Nasungil | 7:a8ebb0cab33d | 207 | // //reset chain |
Nasungil | 7:a8ebb0cab33d | 208 | // write(NM_RSTCHAIN, 0); |
Nasungil | 7:a8ebb0cab33d | 209 | // |
Nasungil | 7:a8ebb0cab33d | 210 | // //loop until max neruon |
Nasungil | 7:a8ebb0cab33d | 211 | // for(int cnt = 1; cnt<=nm_cnt; cnt++){ |
Nasungil | 7:a8ebb0cab33d | 212 | // |
Nasungil | 7:a8ebb0cab33d | 213 | // //read context |
Nasungil | 7:a8ebb0cab33d | 214 | // int context = read(NM_NCR); |
Nasungil | 7:a8ebb0cab33d | 215 | // //printf("context #%d\t,", context); |
Nasungil | 7:a8ebb0cab33d | 216 | // fprintf(fp,"%d\t", context); |
Nasungil | 7:a8ebb0cab33d | 217 | // |
Nasungil | 7:a8ebb0cab33d | 218 | // //GCR register fail |
Nasungil | 7:a8ebb0cab33d | 219 | // if(context != 5){ |
Nasungil | 7:a8ebb0cab33d | 220 | // if(cnt < MAXNEURONS/2){ //neuron1 fail |
Nasungil | 7:a8ebb0cab33d | 221 | // Gcr1=1; |
Nasungil | 7:a8ebb0cab33d | 222 | // printf("\nNID # %d, GCR # %d \n",cnt,context); |
Nasungil | 7:a8ebb0cab33d | 223 | // } |
Nasungil | 7:a8ebb0cab33d | 224 | // else{ //neruon2 fail |
Nasungil | 7:a8ebb0cab33d | 225 | // Gcr2=1; |
Nasungil | 7:a8ebb0cab33d | 226 | // printf("\nNID # %d, GCR # %d \n",cnt,context); |
Nasungil | 7:a8ebb0cab33d | 227 | // } |
Nasungil | 7:a8ebb0cab33d | 228 | // } |
Nasungil | 7:a8ebb0cab33d | 229 | // char temp_neuron[NEURONSIZE]; |
Nasungil | 7:a8ebb0cab33d | 230 | //// for(int j =0;j<NEURONSIZE;j=j+2){ |
Nasungil | 7:a8ebb0cab33d | 231 | //// temp_neuron[j] = cnt>>8; //upper bit save |
Nasungil | 7:a8ebb0cab33d | 232 | //// temp_neuron[j+1] = cnt; //low bit save |
Nasungil | 7:a8ebb0cab33d | 233 | //// } |
Nasungil | 7:a8ebb0cab33d | 234 | // if(cnt%2 == 1){ |
Nasungil | 7:a8ebb0cab33d | 235 | // for(int j =0;j<DATA_CNT;j=j+2){ |
Nasungil | 7:a8ebb0cab33d | 236 | // temp_neuron[j] = cnt>>8; //upper bit save |
Nasungil | 7:a8ebb0cab33d | 237 | // temp_neuron[j+1] = cnt; //low bit save |
Nasungil | 7:a8ebb0cab33d | 238 | // } |
Nasungil | 7:a8ebb0cab33d | 239 | // for(int j =DATA_CNT;j<NEURONSIZE; j++){ |
Nasungil | 7:a8ebb0cab33d | 240 | // temp_neuron[j] = array1[j]; //upper bit save |
Nasungil | 7:a8ebb0cab33d | 241 | // } |
Nasungil | 7:a8ebb0cab33d | 242 | // } |
Nasungil | 7:a8ebb0cab33d | 243 | // else if(cnt%2 == 0){ |
Nasungil | 7:a8ebb0cab33d | 244 | // for(int j =0;j<DATA_CNT;j=j+2){ |
Nasungil | 7:a8ebb0cab33d | 245 | // temp_neuron[j] = cnt>>8; //upper bit save |
Nasungil | 7:a8ebb0cab33d | 246 | // temp_neuron[j+1] = cnt; //low bit save |
Nasungil | 7:a8ebb0cab33d | 247 | // } |
Nasungil | 7:a8ebb0cab33d | 248 | // for(int j =DATA_CNT;j<NEURONSIZE; j++){ |
Nasungil | 7:a8ebb0cab33d | 249 | // temp_neuron[j] = array2[j]; //upper bit save |
Nasungil | 7:a8ebb0cab33d | 250 | // } |
Nasungil | 7:a8ebb0cab33d | 251 | // } |
Nasungil | 7:a8ebb0cab33d | 252 | // //printf("Neruon Data : "); |
Nasungil | 7:a8ebb0cab33d | 253 | // //read Neuron data |
Nasungil | 7:a8ebb0cab33d | 254 | // for (int j=0; j<NEURONSIZE; j++){ |
Nasungil | 7:a8ebb0cab33d | 255 | // //read COMP |
Nasungil | 7:a8ebb0cab33d | 256 | // neurons[j]=read(NM_COMP); |
Nasungil | 7:a8ebb0cab33d | 257 | // fprintf(fp,"%d,", neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 258 | // //printf("%d,", neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 259 | // if(temp_neuron[j]!= neurons[j]){ |
Nasungil | 7:a8ebb0cab33d | 260 | // |
Nasungil | 7:a8ebb0cab33d | 261 | // if(j<MAXNEURONS/2){ |
Nasungil | 7:a8ebb0cab33d | 262 | // printf("NID # %d Memory Fail\n", cnt); |
Nasungil | 7:a8ebb0cab33d | 263 | // Memory1 = 1; |
Nasungil | 7:a8ebb0cab33d | 264 | // } |
Nasungil | 7:a8ebb0cab33d | 265 | // else{ |
Nasungil | 7:a8ebb0cab33d | 266 | // printf("NID # %d Memory Fail\n", cnt); |
Nasungil | 7:a8ebb0cab33d | 267 | // Memory2 = 1; |
Nasungil | 7:a8ebb0cab33d | 268 | // } |
Nasungil | 7:a8ebb0cab33d | 269 | // printf("# %d : temp %d, neruon %d\n",j, temp_neuron[j],neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 270 | // |
Nasungil | 7:a8ebb0cab33d | 271 | // } |
Nasungil | 7:a8ebb0cab33d | 272 | // |
Nasungil | 6:4bc46c554aed | 273 | // } |
Nasungil | 7:a8ebb0cab33d | 274 | // |
Nasungil | 7:a8ebb0cab33d | 275 | // |
Nasungil | 7:a8ebb0cab33d | 276 | // |
Nasungil | 7:a8ebb0cab33d | 277 | // //read AIF |
Nasungil | 7:a8ebb0cab33d | 278 | // aif=read(NM_AIF); |
Nasungil | 7:a8ebb0cab33d | 279 | // fprintf(fp,"\t%d\t", aif); |
Nasungil | 7:a8ebb0cab33d | 280 | // //printf("AIF : %d,\t", aif); |
Nasungil | 7:a8ebb0cab33d | 281 | // |
Nasungil | 7:a8ebb0cab33d | 282 | // //aif register fail |
Nasungil | 7:a8ebb0cab33d | 283 | // if(aif != 5){ |
Nasungil | 7:a8ebb0cab33d | 284 | // if(cnt <= 576){ //neuron1 fail |
Nasungil | 7:a8ebb0cab33d | 285 | // Aif1=1; |
Nasungil | 7:a8ebb0cab33d | 286 | // printf("\nNID # %d, AIF # %d \n",cnt,aif); |
Nasungil | 7:a8ebb0cab33d | 287 | // } |
Nasungil | 7:a8ebb0cab33d | 288 | // else{ //neruon2 fail |
Nasungil | 7:a8ebb0cab33d | 289 | // Aif2=1; |
Nasungil | 7:a8ebb0cab33d | 290 | // printf("\nNID # %d, AIF # %d \n",cnt,aif); |
Nasungil | 7:a8ebb0cab33d | 291 | // } |
Nasungil | 7:a8ebb0cab33d | 292 | // } |
Nasungil | 7:a8ebb0cab33d | 293 | // |
Nasungil | 7:a8ebb0cab33d | 294 | // //raed minif |
Nasungil | 7:a8ebb0cab33d | 295 | // int minif=read(NM_MINIF); |
Nasungil | 7:a8ebb0cab33d | 296 | // //printf("MINIF : %d,\t", minif); |
Nasungil | 7:a8ebb0cab33d | 297 | // fprintf(fp,"%d\t", minif); |
Nasungil | 7:a8ebb0cab33d | 298 | // |
Nasungil | 7:a8ebb0cab33d | 299 | // //minif register fail |
Nasungil | 7:a8ebb0cab33d | 300 | // if(minif != 3){ |
Nasungil | 7:a8ebb0cab33d | 301 | // if(cnt <= 576){ //neuron1 fail |
Nasungil | 7:a8ebb0cab33d | 302 | // Minif1 = 1; |
Nasungil | 7:a8ebb0cab33d | 303 | // printf("\nNID # %d, MINIF # %d \n",cnt,minif); |
Nasungil | 7:a8ebb0cab33d | 304 | // } |
Nasungil | 7:a8ebb0cab33d | 305 | // else{ //neruon2 fail |
Nasungil | 7:a8ebb0cab33d | 306 | // Minif2 = 1; |
Nasungil | 7:a8ebb0cab33d | 307 | // printf("\nNID # %d, MINIF # %d \n",cnt,minif); |
Nasungil | 7:a8ebb0cab33d | 308 | // } |
Nasungil | 7:a8ebb0cab33d | 309 | // } |
Nasungil | 7:a8ebb0cab33d | 310 | // |
Nasungil | 7:a8ebb0cab33d | 311 | // //read cat |
Nasungil | 7:a8ebb0cab33d | 312 | // int cat = read(NM_CAT) & 0x7FFF; |
Nasungil | 7:a8ebb0cab33d | 313 | // fprintf(fp,"%d\t", cat); |
Nasungil | 7:a8ebb0cab33d | 314 | // fprintf(fp,"\n"); |
Nasungil | 7:a8ebb0cab33d | 315 | // //printf("****CAT : %d\n", cat); |
Nasungil | 7:a8ebb0cab33d | 316 | // |
Nasungil | 7:a8ebb0cab33d | 317 | // //reset chain test |
Nasungil | 7:a8ebb0cab33d | 318 | //// if(cnt > 2 && cat == 1) |
Nasungil | 7:a8ebb0cab33d | 319 | //// CMN_RC = 1; |
Nasungil | 7:a8ebb0cab33d | 320 | // |
Nasungil | 7:a8ebb0cab33d | 321 | // //cat test |
Nasungil | 7:a8ebb0cab33d | 322 | // if(cnt != cat){ |
Nasungil | 7:a8ebb0cab33d | 323 | // printf("cnt : %d , cat : %d \n", cnt, cat); |
Nasungil | 7:a8ebb0cab33d | 324 | // if(cnt <= 576){ |
Nasungil | 7:a8ebb0cab33d | 325 | // Cat1 = 1; |
Nasungil | 7:a8ebb0cab33d | 326 | // printf("\n NM500 #1 Cat Fail # %d\n", cnt); |
Nasungil | 7:a8ebb0cab33d | 327 | // } |
Nasungil | 7:a8ebb0cab33d | 328 | // else { |
Nasungil | 7:a8ebb0cab33d | 329 | // Cat2 = 1; |
Nasungil | 7:a8ebb0cab33d | 330 | // printf("\n NM500 #2 Cat Fail # %d\n", cnt); |
Nasungil | 7:a8ebb0cab33d | 331 | // } |
Nasungil | 7:a8ebb0cab33d | 332 | // } |
Nasungil | 7:a8ebb0cab33d | 333 | // printf("."); |
Nasungil | 7:a8ebb0cab33d | 334 | // } |
Nasungil | 7:a8ebb0cab33d | 335 | // printf("\n"); |
Nasungil | 7:a8ebb0cab33d | 336 | // |
Nasungil | 7:a8ebb0cab33d | 337 | // |
Nasungil | 7:a8ebb0cab33d | 338 | // fclose(fp); |
Nasungil | 7:a8ebb0cab33d | 339 | // write(NM_NSR, TempNSR); // set the NN back to its calling status |
Nasungil | 7:a8ebb0cab33d | 340 | // return read(NM_NCOUNT); |
Nasungil | 7:a8ebb0cab33d | 341 | //} |
Nasungil | 7:a8ebb0cab33d | 342 | // |
Nasungil | 7:a8ebb0cab33d | 343 | // |
Nasungil | 7:a8ebb0cab33d | 344 | //int SDToNeurons() |
Nasungil | 7:a8ebb0cab33d | 345 | //{ |
Nasungil | 7:a8ebb0cab33d | 346 | // int context,aif,minif,cat; |
Nasungil | 7:a8ebb0cab33d | 347 | // char neurons[NEURONSIZE]; |
Nasungil | 7:a8ebb0cab33d | 348 | // fp = fopen("/sd/data.txt", "r"); |
Nasungil | 7:a8ebb0cab33d | 349 | // |
Nasungil | 7:a8ebb0cab33d | 350 | // |
Nasungil | 7:a8ebb0cab33d | 351 | // if(fp == NULL) |
Nasungil | 7:a8ebb0cab33d | 352 | // error("Read SD Fail"); |
Nasungil | 7:a8ebb0cab33d | 353 | // |
Nasungil | 7:a8ebb0cab33d | 354 | // //save NSR |
Nasungil | 7:a8ebb0cab33d | 355 | // int TempNSR = read(NM_NSR); |
Nasungil | 7:a8ebb0cab33d | 356 | // |
Nasungil | 7:a8ebb0cab33d | 357 | // //write NSR-SR Mode |
Nasungil | 7:a8ebb0cab33d | 358 | // write(NM_NSR, 0x10); |
Nasungil | 7:a8ebb0cab33d | 359 | // |
Nasungil | 7:a8ebb0cab33d | 360 | // //reset chain |
Nasungil | 7:a8ebb0cab33d | 361 | // write(NM_RSTCHAIN, 0); |
Nasungil | 7:a8ebb0cab33d | 362 | // |
Nasungil | 7:a8ebb0cab33d | 363 | // //SD data read -> Neurons |
Nasungil | 7:a8ebb0cab33d | 364 | // for(int i=1;i<=MAXNEURONS;i++){ |
Nasungil | 7:a8ebb0cab33d | 365 | // //read context |
Nasungil | 7:a8ebb0cab33d | 366 | // fscanf(fp,"%d", &context); |
Nasungil | 7:a8ebb0cab33d | 367 | // // printf("context # %d ", context); |
Nasungil | 7:a8ebb0cab33d | 368 | // write(NM_GCR,context); |
Nasungil | 7:a8ebb0cab33d | 369 | // |
Nasungil | 7:a8ebb0cab33d | 370 | // |
Nasungil | 7:a8ebb0cab33d | 371 | // //read comp |
Nasungil | 7:a8ebb0cab33d | 372 | // for (int j=0; j<NEURONSIZE; j++){ |
Nasungil | 7:a8ebb0cab33d | 373 | // //read COMP |
Nasungil | 7:a8ebb0cab33d | 374 | // fscanf(fp,"%d,", &neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 375 | // // printf("%d\t,", neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 376 | // write(NM_COMP,neurons[j]); |
Nasungil | 7:a8ebb0cab33d | 377 | // } |
Nasungil | 7:a8ebb0cab33d | 378 | // fscanf(fp,"\t%d\t", &aif); |
Nasungil | 7:a8ebb0cab33d | 379 | // // printf("AIF # %d \t", aif); |
Nasungil | 7:a8ebb0cab33d | 380 | // write(NM_AIF,aif); |
Nasungil | 7:a8ebb0cab33d | 381 | // |
Nasungil | 7:a8ebb0cab33d | 382 | // fscanf(fp,"%d\t", &minif); |
Nasungil | 7:a8ebb0cab33d | 383 | // // printf("MINIF # %d", minif); |
Nasungil | 7:a8ebb0cab33d | 384 | // write(NM_MINIF,minif); |
Nasungil | 7:a8ebb0cab33d | 385 | // |
Nasungil | 7:a8ebb0cab33d | 386 | // fscanf(fp,"%d\t", &cat); |
Nasungil | 7:a8ebb0cab33d | 387 | // // printf("CAT # %d \n", cat); |
Nasungil | 7:a8ebb0cab33d | 388 | // write(NM_CAT,cat); |
Nasungil | 7:a8ebb0cab33d | 389 | // printf("."); |
Nasungil | 7:a8ebb0cab33d | 390 | // |
Nasungil | 7:a8ebb0cab33d | 391 | // } |
Nasungil | 7:a8ebb0cab33d | 392 | // printf("\n"); |
Nasungil | 7:a8ebb0cab33d | 393 | // fclose(fp); |
Nasungil | 7:a8ebb0cab33d | 394 | // write(NM_NSR, TempNSR); // set the NN back to its calling status |
Nasungil | 7:a8ebb0cab33d | 395 | // return NCOUNT(); |
Nasungil | 7:a8ebb0cab33d | 396 | //} |
Nasungil | 2:52da04ab1c78 | 397 | |
Nasungil | 6:4bc46c554aed | 398 | |
Nasungil | 8:ad9c8681ca41 | 399 |