
,.
Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
Diff: main.cpp
- Revision:
- 11:da25ed58aab0
- Parent:
- 10:90a9aa4482e8
--- a/main.cpp Tue Jul 31 22:54:29 2018 +0000 +++ b/main.cpp Fri May 24 03:43:43 2019 +0000 @@ -4,6 +4,7 @@ #include "Buffer.h" #include "eeprom.h" #define eepr_addr 0x50 +#define max_size 300 uint16_t const count_address=0x0000; I2C i2c(p28,p27); @@ -25,13 +26,19 @@ volatile bool buf2ready=false; -void insertionSort(uint16_t array[], uint8_t count); +typedef union reg{ + uint8_t uid_reg[4]; + uint32_t clave; + }reg; + + reg dtb[max_size]; + +void insertionSort(reg *regs, uint8_t count); void interrupcion(); void disp_unoTx_isr(); void disp_unoRx_isr(); void flush_memory(); - int main() { uint16_t adr=0x0001; @@ -48,31 +55,40 @@ //count = 0x0001; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados //write_data(eepr_addr, count_address,&count);//---->>> uint8_t count = data_read(eepr_addr, count_address); - uint8_t uid=0x00; + uint16_t uid=0x00; if (count>0) { - uint16_t array[count]; + //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++) { + //array[uid]=0; + for(uint8_t byte_uid=0; 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("%02X",data_read(eepr_addr, (uid*4)+byte_uid+0x01)); + //array[uid] = array[uid]+ data_read(eepr_addr, (uint16_t(uid*4)+uint16_t(byte_uid)+0x0001)); + dtb[uid].uid_reg[byte_uid] = data_read(eepr_addr,(uid*4)+byte_uid+0x01); } + //insertionSort(&dtb[0], count); printf("\n"); //printf("Posicion del arreglo:%d valor:%03X",uid+1,array[uid]); } - pc.printf("\nValores desordenados "); + + pc.printf("\nValores Ordenados "); + insertionSort(&dtb[0], count); for(uint8_t d=0x00; d<count; d++) { - pc.printf("%03X ",array[d]); + for(int i=0;i<4;i++){ + pc.printf("%02X",dtb[d].uid_reg[i]); + } + pc.printf("\n"); } + /* pc.printf("\nValores Ordenados "); - insertionSort(array, count); + insertionSort(dtb, count); for(uint8_t d=0x00; d<count; d++) { - pc.printf("%03X ",array[d]); + pc.printf("%03X ",dtb[d]); } + */ } else{ pc.printf("%x UID's registrados en memoria\n",count); @@ -167,20 +183,21 @@ -void insertionSort(uint16_t array[], uint8_t count) +void insertionSort(reg *regs, uint8_t count) { - int i, key, j; + uint32_t i, key; + int j; for (i = 1; i < count; i++) { - key = array[i]; + key = regs[i].clave; 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]; + while ((j>=0) && (regs[j].clave> key)) { + regs[j+1].clave = regs[j].clave; j = j-1; } - array[j+1] = key; + regs[j+1].clave = key; } } \ No newline at end of file