Dependencies:   mbed qnode2 MFRC522-2 eeprom Buffer2

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