Dependencies:   mbed qnode MFRC522 Buffer

Committer:
alejo5214416
Date:
Sat Jul 28 01:29:46 2018 +0000
Revision:
0:5b0decabe4d8
Comunicacion maestro esclavo con confirmacion de 1S 1Y 1N para solicitudes y respuestas;

Who changed what in which revision?

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