Dependencies:   mbed qnode2 MFRC522-2 eeprom Buffer2

Committer:
alejo5214416
Date:
Sat Jul 28 04:13:22 2018 +0000
Revision:
4:2208f7e44ac6
Parent:
3:5d963b3e042f
Child:
5:24335ea5e4d3
fallos al reiniciar el contador

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alejo5214416 0:031eeed95323 1 #include "mbed.h"
alejo5214416 0:031eeed95323 2 #include "MFRC522.h"
alejo5214416 0:031eeed95323 3 #include "qnode.h"
alejo5214416 0:031eeed95323 4 #include "Buffer.h"
alejo5214416 1:4235920f89f8 5 #include "eeprom.h"
alejo5214416 1:4235920f89f8 6 #define eepr_addr 0x50
alejo5214416 4:2208f7e44ac6 7 uint16_t const count_address=0x0000;
alejo5214416 1:4235920f89f8 8
alejo5214416 0:031eeed95323 9
alejo5214416 1:4235920f89f8 10 I2C i2c(p28,p27);
alejo5214416 1:4235920f89f8 11 DigitalOut led4(LED4);
alejo5214416 1:4235920f89f8 12 DigitalOut led3(LED3);
alejo5214416 1:4235920f89f8 13 DigitalOut led1(LED1);
alejo5214416 0:031eeed95323 14 DigitalOut enable(p19);
alejo5214416 0:031eeed95323 15 Serial pc(USBTX, USBRX);
alejo5214416 0:031eeed95323 16 Serial disp_uno(p9, p10); // tx, rx
alejo5214416 0:031eeed95323 17 MFRC522 RfChip (p5, p6, p7, p8, p21);
alejo5214416 0:031eeed95323 18 circular_buf_t buf; // ---->BUFFER CIRCULAR buf
alejo5214416 1:4235920f89f8 19 InterruptIn event(p16);
alejo5214416 0:031eeed95323 20 bool flag1=false;
alejo5214416 0:031eeed95323 21 bool flag2=false;
alejo5214416 0:031eeed95323 22 bool flag3=false;
alejo5214416 1:4235920f89f8 23 bool flag4=false;
alejo5214416 0:031eeed95323 24 volatile bool buf1ready=false;
alejo5214416 0:031eeed95323 25 volatile bool buf2ready=false;
alejo5214416 1:4235920f89f8 26 uint16_t address=0x0001;
alejo5214416 0:031eeed95323 27
alejo5214416 0:031eeed95323 28
alejo5214416 4:2208f7e44ac6 29 void interrupcion();
alejo5214416 4:2208f7e44ac6 30 void disp_unoTx_isr();
alejo5214416 4:2208f7e44ac6 31 void disp_unoRx_isr();
alejo5214416 4:2208f7e44ac6 32
alejo5214416 4:2208f7e44ac6 33 int main()
alejo5214416 4:2208f7e44ac6 34 {
alejo5214416 4:2208f7e44ac6 35 freq(400000);
alejo5214416 4:2208f7e44ac6 36 event.rise(&interrupcion);
alejo5214416 4:2208f7e44ac6 37 disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq);
alejo5214416 4:2208f7e44ac6 38 disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq);
alejo5214416 4:2208f7e44ac6 39 struct Queue *q = createQueue();
alejo5214416 4:2208f7e44ac6 40 buf.size = 5;
alejo5214416 4:2208f7e44ac6 41 buf.buffer = (uint8_t*) malloc(buf.size);
alejo5214416 4:2208f7e44ac6 42 enable=0;
alejo5214416 4:2208f7e44ac6 43 RfChip.PCD_Init();
alejo5214416 4:2208f7e44ac6 44 uint8_t count = 0; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados
alejo5214416 4:2208f7e44ac6 45 write_data(eepr_addr, count_address,&count);//---->>>
alejo5214416 4:2208f7e44ac6 46 count = data_read(eepr_addr, count_address);
alejo5214416 4:2208f7e44ac6 47 pc.printf("%d UID's registrados en memoria\n",count);
alejo5214416 4:2208f7e44ac6 48 address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura
alejo5214416 4:2208f7e44ac6 49 while(1) {
alejo5214416 4:2208f7e44ac6 50 while(flag4==true) {
alejo5214416 4:2208f7e44ac6 51 if(!RfChip.PICC_IsNewCardPresent())
alejo5214416 4:2208f7e44ac6 52 continue;
alejo5214416 4:2208f7e44ac6 53 if (!RfChip.PICC_ReadCardSerial())
alejo5214416 4:2208f7e44ac6 54 continue;
alejo5214416 4:2208f7e44ac6 55 pc.printf("Tarjeta Numero: ");
alejo5214416 4:2208f7e44ac6 56 uint8_t *c = &RfChip.uid.uidByte[0];
alejo5214416 4:2208f7e44ac6 57 enQueue(q,c);
alejo5214416 4:2208f7e44ac6 58 count = data_read(eepr_addr, count_address);
alejo5214416 4:2208f7e44ac6 59 address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura
alejo5214416 4:2208f7e44ac6 60 write_data(eepr_addr, address,c);//---->>>guardar UID en memoria
alejo5214416 4:2208f7e44ac6 61 for(int j=0; j<4; j++) {
alejo5214416 4:2208f7e44ac6 62 uint8_t car = data_read(eepr_addr, (address+j));
alejo5214416 4:2208f7e44ac6 63 pc.printf("%02X",car);
alejo5214416 4:2208f7e44ac6 64 }
alejo5214416 4:2208f7e44ac6 65 pc.printf("\n");
alejo5214416 4:2208f7e44ac6 66 count++;//------>>>>sumar 1 al contador de UID's
alejo5214416 4:2208f7e44ac6 67 write_data(eepr_addr, count_address,&count);///---->>actualizar en memoria el contador
alejo5214416 4:2208f7e44ac6 68 pc.printf("\n");
alejo5214416 4:2208f7e44ac6 69 flag4=false;
alejo5214416 4:2208f7e44ac6 70 }
alejo5214416 4:2208f7e44ac6 71 }
alejo5214416 4:2208f7e44ac6 72 }
alejo5214416 4:2208f7e44ac6 73
alejo5214416 4:2208f7e44ac6 74
alejo5214416 4:2208f7e44ac6 75
alejo5214416 4:2208f7e44ac6 76
alejo5214416 4:2208f7e44ac6 77
alejo5214416 1:4235920f89f8 78 void interrupcion()
alejo5214416 1:4235920f89f8 79 {
alejo5214416 1:4235920f89f8 80 led4=0;
alejo5214416 1:4235920f89f8 81 flag4=true;
alejo5214416 1:4235920f89f8 82 }
alejo5214416 1:4235920f89f8 83
alejo5214416 0:031eeed95323 84 void disp_unoTx_isr()
alejo5214416 0:031eeed95323 85 {
alejo5214416 0:031eeed95323 86 enable=0;
alejo5214416 0:031eeed95323 87 }
alejo5214416 0:031eeed95323 88
alejo5214416 0:031eeed95323 89 void disp_unoRx_isr()
alejo5214416 0:031eeed95323 90 {
alejo5214416 0:031eeed95323 91 uint8_t b = disp_uno.getc();
alejo5214416 0:031eeed95323 92
alejo5214416 0:031eeed95323 93 if(b!=NULL) {
alejo5214416 0:031eeed95323 94 circular_buf_put(&buf, b);
alejo5214416 0:031eeed95323 95 } else {
alejo5214416 0:031eeed95323 96 uint8_t a;
alejo5214416 0:031eeed95323 97 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 98 if(a=='1') {
alejo5214416 0:031eeed95323 99 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 100 if(a=='S') {
alejo5214416 0:031eeed95323 101 flag1=true;
alejo5214416 0:031eeed95323 102 } else if(a=='Y') {
alejo5214416 0:031eeed95323 103 flag2=true;
alejo5214416 0:031eeed95323 104 } else if(a=='N') {
alejo5214416 0:031eeed95323 105 flag3=true;
alejo5214416 0:031eeed95323 106 }
alejo5214416 1:4235920f89f8 107 } else
alejo5214416 1:4235920f89f8 108 circular_buf_reset(&buf);
alejo5214416 0:031eeed95323 109
alejo5214416 0:031eeed95323 110 }
alejo5214416 0:031eeed95323 111
alejo5214416 0:031eeed95323 112 }