,.

Dependencies:   mbed qnode2 MFRC522-2 eeprom Buffer2

Committer:
alejo5214416
Date:
Fri Jul 27 02:49:21 2018 +0000
Revision:
1:4235920f89f8
Parent:
0:031eeed95323
Child:
2:ed78589d626a
maestro esclavo

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 1:4235920f89f8 7
alejo5214416 0:031eeed95323 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 1:4235920f89f8 29 void interrupcion()
alejo5214416 1:4235920f89f8 30 {
alejo5214416 1:4235920f89f8 31 led4=0;
alejo5214416 1:4235920f89f8 32 flag4=true;
alejo5214416 1:4235920f89f8 33 }
alejo5214416 1:4235920f89f8 34
alejo5214416 0:031eeed95323 35 void disp_unoTx_isr()
alejo5214416 0:031eeed95323 36 {
alejo5214416 0:031eeed95323 37 enable=0;
alejo5214416 0:031eeed95323 38 }
alejo5214416 0:031eeed95323 39
alejo5214416 0:031eeed95323 40 void disp_unoRx_isr()
alejo5214416 0:031eeed95323 41 {
alejo5214416 0:031eeed95323 42 uint8_t b = disp_uno.getc();
alejo5214416 0:031eeed95323 43
alejo5214416 0:031eeed95323 44 if(b!=NULL) {
alejo5214416 0:031eeed95323 45 circular_buf_put(&buf, b);
alejo5214416 0:031eeed95323 46 } else {
alejo5214416 0:031eeed95323 47 uint8_t a;
alejo5214416 0:031eeed95323 48 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 49 if(a=='1') {
alejo5214416 0:031eeed95323 50 circular_buf_get(&buf,&a);
alejo5214416 0:031eeed95323 51 if(a=='S') {
alejo5214416 0:031eeed95323 52 flag1=true;
alejo5214416 0:031eeed95323 53 } else if(a=='Y') {
alejo5214416 0:031eeed95323 54 flag2=true;
alejo5214416 0:031eeed95323 55 } else if(a=='N') {
alejo5214416 0:031eeed95323 56 flag3=true;
alejo5214416 0:031eeed95323 57 }
alejo5214416 1:4235920f89f8 58 } else
alejo5214416 1:4235920f89f8 59 circular_buf_reset(&buf);
alejo5214416 0:031eeed95323 60
alejo5214416 0:031eeed95323 61 }
alejo5214416 0:031eeed95323 62
alejo5214416 0:031eeed95323 63 }
alejo5214416 0:031eeed95323 64
alejo5214416 0:031eeed95323 65
alejo5214416 0:031eeed95323 66 int main()
alejo5214416 0:031eeed95323 67 {
alejo5214416 1:4235920f89f8 68 led3=1;
alejo5214416 1:4235920f89f8 69 led1=1;
alejo5214416 1:4235920f89f8 70 event.rise(&interrupcion);
alejo5214416 0:031eeed95323 71 struct Queue *q = createQueue();
alejo5214416 0:031eeed95323 72 pc.printf("Listo para lectura\n");
alejo5214416 0:031eeed95323 73 buf.size = 5;
alejo5214416 0:031eeed95323 74 buf.buffer = (uint8_t*) malloc(buf.size);
alejo5214416 0:031eeed95323 75 enable=0;
alejo5214416 0:031eeed95323 76 RfChip.PCD_Init();
alejo5214416 0:031eeed95323 77 disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq);
alejo5214416 0:031eeed95323 78 disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq);
alejo5214416 1:4235920f89f8 79 led4=1;
alejo5214416 1:4235920f89f8 80 while(1){
alejo5214416 1:4235920f89f8 81 while(flag4==true){
alejo5214416 1:4235920f89f8 82 if(!RfChip.PICC_IsNewCardPresent())
alejo5214416 1:4235920f89f8 83 continue;
alejo5214416 1:4235920f89f8 84 if (!RfChip.PICC_ReadCardSerial())
alejo5214416 1:4235920f89f8 85 continue;
alejo5214416 1:4235920f89f8 86 pc.printf("Tarjeta Numero: ");
alejo5214416 1:4235920f89f8 87 uint8_t *c = &RfChip.uid.uidByte[0];
alejo5214416 1:4235920f89f8 88 enQueue(q,c);
alejo5214416 1:4235920f89f8 89 ret = write_data(eepr_addr, address,c);
alejo5214416 1:4235920f89f8 90 pc.printf("\n");
alejo5214416 1:4235920f89f8 91 for(int j=0; j<4; j++) {
alejo5214416 1:4235920f89f8 92 uint8_t car = data_read(eepr_addr, (0x0001+j));
alejo5214416 1:4235920f89f8 93 pc.printf("%X",car);
alejo5214416 1:4235920f89f8 94 }
alejo5214416 1:4235920f89f8 95 flag4=false;
alejo5214416 1:4235920f89f8 96 }
alejo5214416 1:4235920f89f8 97 }
alejo5214416 0:031eeed95323 98
alejo5214416 1:4235920f89f8 99 }
alejo5214416 1:4235920f89f8 100
alejo5214416 1:4235920f89f8 101 /*
alejo5214416 1:4235920f89f8 102 led2 = !led2;
alejo5214416 1:4235920f89f8 103 if ( RfChip.PICC_IsNewCardPresent()) {
alejo5214416 1:4235920f89f8 104 led_3=0;
alejo5214416 1:4235920f89f8 105 if (RfChip.PICC_ReadCardSerial()) {
alejo5214416 1:4235920f89f8 106
alejo5214416 1:4235920f89f8 107 LedGreen = 1;
alejo5214416 1:4235920f89f8 108 pc.printf("Tarjeta Numero: ");
alejo5214416 1:4235920f89f8 109 uint8_t * c = &RfChip.uid.uidByte[0];
alejo5214416 1:4235920f89f8 110 enQueue(q,c);
alejo5214416 1:4235920f89f8 111 pc.printf("\n\r");
alejo5214416 1:4235920f89f8 112 wait_ms(200);
alejo5214416 1:4235920f89f8 113 }
alejo5214416 0:031eeed95323 114 }
alejo5214416 1:4235920f89f8 115 */
alejo5214416 0:031eeed95323 116
alejo5214416 0:031eeed95323 117
alejo5214416 0:031eeed95323 118
alejo5214416 1:4235920f89f8 119 if(flag1==true)
alejo5214416 1:4235920f89f8 120 {
alejo5214416 1:4235920f89f8 121 QNode *c= deQueue(q);
alejo5214416 1:4235920f89f8 122 enable=1;
alejo5214416 1:4235920f89f8 123 for(int i=0; i<4; i++) {
alejo5214416 1:4235920f89f8 124 disp_uno.printf("%02X ",c->uid[i]);
alejo5214416 0:031eeed95323 125 }
alejo5214416 1:4235920f89f8 126 enable=1;
alejo5214416 1:4235920f89f8 127 disp_uno.putc('\n');
alejo5214416 1:4235920f89f8 128 flag1=false;
alejo5214416 1:4235920f89f8 129 } else if(flag2==true)
alejo5214416 1:4235920f89f8 130 {
alejo5214416 1:4235920f89f8 131 //enable=1;
alejo5214416 1:4235920f89f8 132 pc.printf("YES\n");
alejo5214416 1:4235920f89f8 133 flag2=false;
alejo5214416 1:4235920f89f8 134 } else if(flag3==true)
alejo5214416 1:4235920f89f8 135 {
alejo5214416 1:4235920f89f8 136 //enable=1;
alejo5214416 1:4235920f89f8 137 pc.printf("NO\n");
alejo5214416 1:4235920f89f8 138 flag3=false;
alejo5214416 0:031eeed95323 139 }
alejo5214416 1:4235920f89f8 140 }
alejo5214416 1:4235920f89f8 141 }
alejo5214416 1:4235920f89f8 142 }