Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
Diff: main.cpp
- Revision:
- 10:90a9aa4482e8
- Parent:
- 9:a169dc80e58f
- Child:
- 11:da25ed58aab0
--- a/main.cpp Tue Jul 31 21:22:18 2018 +0000 +++ b/main.cpp Tue Jul 31 22:54:29 2018 +0000 @@ -23,39 +23,18 @@ bool flag4=false; volatile bool buf1ready=false; volatile bool buf2ready=false; -uint16_t address=0x0001; - - -void insertionSort(uint16_t array[], uint8_t count) -{ -int i, key, j; -for (i = 1; i < count; i++) -{ - key = array[i]; - j = i-1; - - /* Move elements of arr[0..i-1], that are - greater than key, to one position ahead - of their current position */ - while (j >= 0 && array[j] > key) - { - array[j+1] = array[j]; - j = j-1; - } - array[j+1] = key; -} -} - - +void insertionSort(uint16_t array[], uint8_t count); void interrupcion(); void disp_unoTx_isr(); void disp_unoRx_isr(); void flush_memory(); + int main() { + uint16_t adr=0x0001; freq(400000); event.rise(&interrupcion); reset.rise(&flush_memory); @@ -70,56 +49,37 @@ //write_data(eepr_addr, count_address,&count);//---->>> uint8_t count = data_read(eepr_addr, count_address); uint8_t uid=0x00; - if (count==0xff) { - count=0x0001; - write_data(eepr_addr, count_address,&count);//---->>> - count=0x0000; - pc.printf("%x UID's registrados en memoria\n",count); - } else { - // - - if (count>0&&count<0xff) { - uint16_t array[count]; - pc.printf("\n%x UID's registrados en memoria\n",count); - for(uid=0x00; uid<count; uid++) { - array[uid]=0; - for(uint16_t byte_uid=0x0000; byte_uid<4; byte_uid++) { - //printf("Suma %x",array[uid]); - printf("%02X",data_read(eepr_addr, (uint16_t(uid*4)+uint16_t(byte_uid)+0x0001))); - array[uid] = array[uid]+ data_read(eepr_addr, (uint16_t(uid*4)+uint16_t(byte_uid)+0x0001)); - } - printf("\n"); - //printf("Posicion del arreglo:%d valor:%03X",uid+1,array[uid]); + if (count>0) { + uint16_t array[count]; + pc.printf("\n%x UID's registrados en memoria\n",count); + for(uid=0x00; uid<count; uid++) { + array[uid]=0; + for(uint16_t byte_uid=0x0000; byte_uid<4; byte_uid++) { + //printf("Suma %x",array[uid]); + printf("%02X",data_read(eepr_addr, (uint16_t(uid*4)+uint16_t(byte_uid)+0x0001))); + array[uid] = array[uid]+ data_read(eepr_addr, (uint16_t(uid*4)+uint16_t(byte_uid)+0x0001)); } - - pc.printf("\nValores desordenados "); - for(uint8_t d=0x00;d<count;d++){ - pc.printf("%03X ",array[d]); - } - - pc.printf("\nValores Ordenados "); - insertionSort(array, count); - for(uint8_t d=0x00;d<count;d++){ - pc.printf("%03X ",array[d]); - } - + printf("\n"); + //printf("Posicion del arreglo:%d valor:%03X",uid+1,array[uid]); + } + + pc.printf("\nValores desordenados "); + for(uint8_t d=0x00; d<count; d++) { + pc.printf("%03X ",array[d]); } - - // + pc.printf("\nValores Ordenados "); + insertionSort(array, count); + for(uint8_t d=0x00; d<count; d++) { + pc.printf("%03X ",array[d]); + } } - + else{ + pc.printf("%x UID's registrados en memoria\n",count); + } + adr = (4*uint16_t(count)+1);//--->>Crear posicion de escritura actual - address = (4*uint16_t(count)+1);//--->>Crear posicion de escritura actual - - while(1) { - - - - - - while(flag4==true) { if(!RfChip.PICC_IsNewCardPresent()) continue; @@ -127,16 +87,16 @@ continue; pc.printf("Tarjeta Numero: "); uint8_t *c = &RfChip.uid.uidByte[0]; - enQueue(q,c); + //enQueue(q,c); //count = data_read(eepr_addr, count_address); - write_data(eepr_addr, address,c);//---->>>guardar UID en memoria + write_data(eepr_addr, adr,c);//---->>>guardar UID en memoria for(int j=0; j<4; j++) { - uint8_t car = data_read(eepr_addr, (address+j)); + uint8_t car = data_read(eepr_addr, (adr+j)); pc.printf("%02X",car); } pc.printf("\n"); count++;//------>>>>sumar 1 al contador de UID's - address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura + adr = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura write_data(eepr_addr, count_address,&count);///---->>actualizar en memoria el contador pc.printf("\n"); flag4=false; @@ -148,15 +108,13 @@ void flush_memory() { led4=1; - uint8_t data= 0xff; - write_data(eepr_addr,0x0000,&data); - data = 0x01; - for(uint16_t k=0x0001; k<0x003f; k++) { - int conf = write_data(eepr_addr,k,&data); + uint8_t data = 0x00; + for(uint16_t k=0x0000; k<0x003f; k++) { + write_data(eepr_addr,k,&data); } int j=0; while(j<1) { - for(uint16_t i=0x0000; i<0x002f; i++) { + for(uint16_t i=0x0000; i<0x003f; i++) { uint8_t count = data_read(eepr_addr, i); pc.printf("Posicion de memoria:%d dato:%02X\n",i,count); @@ -209,3 +167,20 @@ +void insertionSort(uint16_t array[], uint8_t count) +{ + int i, key, j; + for (i = 1; i < count; i++) { + key = array[i]; + j = i-1; + + /* Move elements of arr[0..i-1], that are + greater than key, to one position ahead + of their current position */ + while (j >= 0 && array[j] > key) { + array[j+1] = array[j]; + j = j-1; + } + array[j+1] = key; + } +} \ No newline at end of file