Dependencies:   mbed qnode2 MFRC522-2 eeprom Buffer2

Revision:
6:2ca2ebe5b5ed
Parent:
5:24335ea5e4d3
Child:
7:f62ffbdfa977
--- a/main.cpp	Mon Jul 30 00:48:05 2018 +0000
+++ b/main.cpp	Mon Jul 30 03:53:05 2018 +0000
@@ -16,6 +16,7 @@
 MFRC522    RfChip   (p5, p6, p7, p8, p21);
 circular_buf_t buf; // ---->BUFFER CIRCULAR buf
 InterruptIn event(p16);
+InterruptIn reset(p15,PullDown);
 bool flag1=false;
 bool flag2=false;
 bool flag3=false;
@@ -28,11 +29,13 @@
 void interrupcion();
 void disp_unoTx_isr();
 void disp_unoRx_isr();
+void flush_memory();
 
 int main()
 {
     freq(400000);
     event.rise(&interrupcion);
+    reset.rise(&flush_memory);
     disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq);
     disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq);
     struct Queue *q = createQueue();
@@ -40,11 +43,16 @@
     buf.buffer = (uint8_t*) malloc(buf.size);
     enable=0;
     RfChip.PCD_Init();
-    uint8_t count = 0; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados
+    //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);
+    if (count==0xff){
+    count=0x0001;
     write_data(eepr_addr, count_address,&count);//---->>>
-    count = data_read(eepr_addr, count_address);
-    pc.printf("%d UID's registrados en memoria\n",count);
-    address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura
+    count=0x0000;
+    }
+    pc.printf("%x UID's registrados en memoria\n",count);
+    address = (4*uint16_t(count)+1);//--->>Crear posicion de escritura actual
     while(1) {
         while(flag4==true) {
             if(!RfChip.PICC_IsNewCardPresent())
@@ -54,8 +62,7 @@
             pc.printf("Tarjeta Numero: ");
             uint8_t *c = &RfChip.uid.uidByte[0];
             enQueue(q,c);
-            count = data_read(eepr_addr, count_address);
-            address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura
+            //count = data_read(eepr_addr, count_address);
             write_data(eepr_addr, address,c);//---->>>guardar UID en memoria
             for(int j=0; j<4; j++) {
                 uint8_t car = data_read(eepr_addr, (address+j));
@@ -63,6 +70,7 @@
             }
             pc.printf("\n");
             count++;//------>>>>sumar 1 al contador de UID's
+            address = (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;
@@ -71,12 +79,23 @@
 }
 
 
-
+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);
+    }
+    printf("Memoria borrada\n");
+    led4=0;
+}
 
 
 void interrupcion()
 {
-    led4=0;
+    
     flag4=true;
 }
 
@@ -109,3 +128,6 @@
     }
 
 }
+
+
+