,.
Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
main.cpp@1:4235920f89f8, 2018-07-27 (annotated)
- 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?
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 | 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 | } |