Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
main.cpp@0:031eeed95323, 2018-07-27 (annotated)
- 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?
User | Revision | Line number | New 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 | } |