Dependencies:   mbed qnode2 MFRC522-2 eeprom Buffer2

Committer:
alejo5214416
Date:
Fri Jul 27 00:31:50 2018 +0000
Revision:
0:031eeed95323
Child:
1:4235920f89f8
Esclavo Maestro

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 0:031eeed95323 5
alejo5214416 0:031eeed95323 6
alejo5214416 0:031eeed95323 7 DigitalOut led_3(LED3);
alejo5214416 0:031eeed95323 8 DigitalOut led2(LED2);
alejo5214416 0:031eeed95323 9 DigitalOut LedGreen(LED1);
alejo5214416 0:031eeed95323 10 DigitalOut enable(p19);
alejo5214416 0:031eeed95323 11 Serial pc(USBTX, USBRX);
alejo5214416 0:031eeed95323 12 Serial disp_uno(p9, p10); // tx, rx
alejo5214416 0:031eeed95323 13 MFRC522 RfChip (p5, p6, p7, p8, p21);
alejo5214416 0:031eeed95323 14 circular_buf_t buf; // ---->BUFFER CIRCULAR buf
alejo5214416 0:031eeed95323 15 bool flag1=false;
alejo5214416 0:031eeed95323 16 bool flag2=false;
alejo5214416 0:031eeed95323 17 bool flag3=false;
alejo5214416 0:031eeed95323 18 volatile bool buf1ready=false;
alejo5214416 0:031eeed95323 19 volatile bool buf2ready=false;
alejo5214416 0:031eeed95323 20
alejo5214416 0:031eeed95323 21
alejo5214416 0:031eeed95323 22 void disp_unoTx_isr()
alejo5214416 0:031eeed95323 23 {
alejo5214416 0:031eeed95323 24 enable=0;
alejo5214416 0:031eeed95323 25 }
alejo5214416 0:031eeed95323 26
alejo5214416 0:031eeed95323 27 void disp_unoRx_isr()
alejo5214416 0:031eeed95323 28 {
alejo5214416 0:031eeed95323 29 led2=1;
alejo5214416 0:031eeed95323 30 uint8_t b = disp_uno.getc();
alejo5214416 0:031eeed95323 31
alejo5214416 0:031eeed95323 32 if(b!=NULL) {
alejo5214416 0:031eeed95323 33 circular_buf_put(&buf, b);
alejo5214416 0:031eeed95323 34 } else {
alejo5214416 0:031eeed95323 35 uint8_t a;
alejo5214416 0:031eeed95323 36 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 37 if(a=='1') {
alejo5214416 0:031eeed95323 38 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 39 if(a=='S') {
alejo5214416 0:031eeed95323 40 flag1=true;
alejo5214416 0:031eeed95323 41 } else if(a=='Y') {
alejo5214416 0:031eeed95323 42 flag2=true;
alejo5214416 0:031eeed95323 43 } else if(a=='N') {
alejo5214416 0:031eeed95323 44 flag3=true;
alejo5214416 0:031eeed95323 45 }
alejo5214416 0:031eeed95323 46 }else
alejo5214416 0:031eeed95323 47 circular_buf_reset(&buf);
alejo5214416 0:031eeed95323 48
alejo5214416 0:031eeed95323 49 }
alejo5214416 0:031eeed95323 50
alejo5214416 0:031eeed95323 51 }
alejo5214416 0:031eeed95323 52
alejo5214416 0:031eeed95323 53
alejo5214416 0:031eeed95323 54 int main()
alejo5214416 0:031eeed95323 55 {
alejo5214416 0:031eeed95323 56 struct Queue *q = createQueue();
alejo5214416 0:031eeed95323 57 pc.printf("Listo para lectura\n");
alejo5214416 0:031eeed95323 58 buf.size = 5;
alejo5214416 0:031eeed95323 59 buf.buffer = (uint8_t*) malloc(buf.size);
alejo5214416 0:031eeed95323 60 enable=0;
alejo5214416 0:031eeed95323 61 led2=0;
alejo5214416 0:031eeed95323 62 RfChip.PCD_Init();
alejo5214416 0:031eeed95323 63 disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq);
alejo5214416 0:031eeed95323 64 disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq);
alejo5214416 0:031eeed95323 65
alejo5214416 0:031eeed95323 66 while(1) {
alejo5214416 0:031eeed95323 67 led2 = !led2;
alejo5214416 0:031eeed95323 68 if ( RfChip.PICC_IsNewCardPresent()) {
alejo5214416 0:031eeed95323 69 led_3=0;
alejo5214416 0:031eeed95323 70 if (RfChip.PICC_ReadCardSerial()) {
alejo5214416 0:031eeed95323 71
alejo5214416 0:031eeed95323 72 LedGreen = 1;
alejo5214416 0:031eeed95323 73 pc.printf("Tarjeta Numero: ");
alejo5214416 0:031eeed95323 74 uint8_t * c = &RfChip.uid.uidByte[0];
alejo5214416 0:031eeed95323 75 enQueue(q,c);
alejo5214416 0:031eeed95323 76 pc.printf("\n\r");
alejo5214416 0:031eeed95323 77 wait_ms(200);
alejo5214416 0:031eeed95323 78 }
alejo5214416 0:031eeed95323 79 }
alejo5214416 0:031eeed95323 80
alejo5214416 0:031eeed95323 81
alejo5214416 0:031eeed95323 82 if(flag1==true) {
alejo5214416 0:031eeed95323 83 QNode *c= deQueue(q);
alejo5214416 0:031eeed95323 84 enable=1;
alejo5214416 0:031eeed95323 85 for(int i=0; i<4; i++) {
alejo5214416 0:031eeed95323 86 disp_uno.printf("%02X ",c->uid[i]);
alejo5214416 0:031eeed95323 87 }
alejo5214416 0:031eeed95323 88 enable=1;
alejo5214416 0:031eeed95323 89 disp_uno.putc('\n');
alejo5214416 0:031eeed95323 90 flag1=false;
alejo5214416 0:031eeed95323 91 } else if(flag2==true) {
alejo5214416 0:031eeed95323 92 //enable=1;
alejo5214416 0:031eeed95323 93 pc.printf("YES\n");
alejo5214416 0:031eeed95323 94 flag2=false;
alejo5214416 0:031eeed95323 95 } else if(flag3==true) {
alejo5214416 0:031eeed95323 96 //enable=1;
alejo5214416 0:031eeed95323 97 pc.printf("NO\n");
alejo5214416 0:031eeed95323 98 flag3=false;
alejo5214416 0:031eeed95323 99 }
alejo5214416 0:031eeed95323 100
alejo5214416 0:031eeed95323 101 }
alejo5214416 0:031eeed95323 102 }