Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
main.cpp@4:2208f7e44ac6, 2018-07-28 (annotated)
- Committer:
- alejo5214416
- Date:
- Sat Jul 28 04:13:22 2018 +0000
- Revision:
- 4:2208f7e44ac6
- Parent:
- 3:5d963b3e042f
- Child:
- 5:24335ea5e4d3
fallos al reiniciar el contador
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 | 4:2208f7e44ac6 | 7 | uint16_t const count_address=0x0000; |
alejo5214416 | 1:4235920f89f8 | 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 | 4:2208f7e44ac6 | 29 | void interrupcion(); |
alejo5214416 | 4:2208f7e44ac6 | 30 | void disp_unoTx_isr(); |
alejo5214416 | 4:2208f7e44ac6 | 31 | void disp_unoRx_isr(); |
alejo5214416 | 4:2208f7e44ac6 | 32 | |
alejo5214416 | 4:2208f7e44ac6 | 33 | int main() |
alejo5214416 | 4:2208f7e44ac6 | 34 | { |
alejo5214416 | 4:2208f7e44ac6 | 35 | freq(400000); |
alejo5214416 | 4:2208f7e44ac6 | 36 | event.rise(&interrupcion); |
alejo5214416 | 4:2208f7e44ac6 | 37 | disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq); |
alejo5214416 | 4:2208f7e44ac6 | 38 | disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq); |
alejo5214416 | 4:2208f7e44ac6 | 39 | struct Queue *q = createQueue(); |
alejo5214416 | 4:2208f7e44ac6 | 40 | buf.size = 5; |
alejo5214416 | 4:2208f7e44ac6 | 41 | buf.buffer = (uint8_t*) malloc(buf.size); |
alejo5214416 | 4:2208f7e44ac6 | 42 | enable=0; |
alejo5214416 | 4:2208f7e44ac6 | 43 | RfChip.PCD_Init(); |
alejo5214416 | 4:2208f7e44ac6 | 44 | uint8_t count = 0; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados |
alejo5214416 | 4:2208f7e44ac6 | 45 | write_data(eepr_addr, count_address,&count);//---->>> |
alejo5214416 | 4:2208f7e44ac6 | 46 | count = data_read(eepr_addr, count_address); |
alejo5214416 | 4:2208f7e44ac6 | 47 | pc.printf("%d UID's registrados en memoria\n",count); |
alejo5214416 | 4:2208f7e44ac6 | 48 | address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura |
alejo5214416 | 4:2208f7e44ac6 | 49 | while(1) { |
alejo5214416 | 4:2208f7e44ac6 | 50 | while(flag4==true) { |
alejo5214416 | 4:2208f7e44ac6 | 51 | if(!RfChip.PICC_IsNewCardPresent()) |
alejo5214416 | 4:2208f7e44ac6 | 52 | continue; |
alejo5214416 | 4:2208f7e44ac6 | 53 | if (!RfChip.PICC_ReadCardSerial()) |
alejo5214416 | 4:2208f7e44ac6 | 54 | continue; |
alejo5214416 | 4:2208f7e44ac6 | 55 | pc.printf("Tarjeta Numero: "); |
alejo5214416 | 4:2208f7e44ac6 | 56 | uint8_t *c = &RfChip.uid.uidByte[0]; |
alejo5214416 | 4:2208f7e44ac6 | 57 | enQueue(q,c); |
alejo5214416 | 4:2208f7e44ac6 | 58 | count = data_read(eepr_addr, count_address); |
alejo5214416 | 4:2208f7e44ac6 | 59 | address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura |
alejo5214416 | 4:2208f7e44ac6 | 60 | write_data(eepr_addr, address,c);//---->>>guardar UID en memoria |
alejo5214416 | 4:2208f7e44ac6 | 61 | for(int j=0; j<4; j++) { |
alejo5214416 | 4:2208f7e44ac6 | 62 | uint8_t car = data_read(eepr_addr, (address+j)); |
alejo5214416 | 4:2208f7e44ac6 | 63 | pc.printf("%02X",car); |
alejo5214416 | 4:2208f7e44ac6 | 64 | } |
alejo5214416 | 4:2208f7e44ac6 | 65 | pc.printf("\n"); |
alejo5214416 | 4:2208f7e44ac6 | 66 | count++;//------>>>>sumar 1 al contador de UID's |
alejo5214416 | 4:2208f7e44ac6 | 67 | write_data(eepr_addr, count_address,&count);///---->>actualizar en memoria el contador |
alejo5214416 | 4:2208f7e44ac6 | 68 | pc.printf("\n"); |
alejo5214416 | 4:2208f7e44ac6 | 69 | flag4=false; |
alejo5214416 | 4:2208f7e44ac6 | 70 | } |
alejo5214416 | 4:2208f7e44ac6 | 71 | } |
alejo5214416 | 4:2208f7e44ac6 | 72 | } |
alejo5214416 | 4:2208f7e44ac6 | 73 | |
alejo5214416 | 4:2208f7e44ac6 | 74 | |
alejo5214416 | 4:2208f7e44ac6 | 75 | |
alejo5214416 | 4:2208f7e44ac6 | 76 | |
alejo5214416 | 4:2208f7e44ac6 | 77 | |
alejo5214416 | 1:4235920f89f8 | 78 | void interrupcion() |
alejo5214416 | 1:4235920f89f8 | 79 | { |
alejo5214416 | 1:4235920f89f8 | 80 | led4=0; |
alejo5214416 | 1:4235920f89f8 | 81 | flag4=true; |
alejo5214416 | 1:4235920f89f8 | 82 | } |
alejo5214416 | 1:4235920f89f8 | 83 | |
alejo5214416 | 0:031eeed95323 | 84 | void disp_unoTx_isr() |
alejo5214416 | 0:031eeed95323 | 85 | { |
alejo5214416 | 0:031eeed95323 | 86 | enable=0; |
alejo5214416 | 0:031eeed95323 | 87 | } |
alejo5214416 | 0:031eeed95323 | 88 | |
alejo5214416 | 0:031eeed95323 | 89 | void disp_unoRx_isr() |
alejo5214416 | 0:031eeed95323 | 90 | { |
alejo5214416 | 0:031eeed95323 | 91 | uint8_t b = disp_uno.getc(); |
alejo5214416 | 0:031eeed95323 | 92 | |
alejo5214416 | 0:031eeed95323 | 93 | if(b!=NULL) { |
alejo5214416 | 0:031eeed95323 | 94 | circular_buf_put(&buf, b); |
alejo5214416 | 0:031eeed95323 | 95 | } else { |
alejo5214416 | 0:031eeed95323 | 96 | uint8_t a; |
alejo5214416 | 0:031eeed95323 | 97 | circular_buf_get(&buf,&a); |
alejo5214416 | 0:031eeed95323 | 98 | if(a=='1') { |
alejo5214416 | 0:031eeed95323 | 99 | circular_buf_get(&buf,&a); |
alejo5214416 | 0:031eeed95323 | 100 | if(a=='S') { |
alejo5214416 | 0:031eeed95323 | 101 | flag1=true; |
alejo5214416 | 0:031eeed95323 | 102 | } else if(a=='Y') { |
alejo5214416 | 0:031eeed95323 | 103 | flag2=true; |
alejo5214416 | 0:031eeed95323 | 104 | } else if(a=='N') { |
alejo5214416 | 0:031eeed95323 | 105 | flag3=true; |
alejo5214416 | 0:031eeed95323 | 106 | } |
alejo5214416 | 1:4235920f89f8 | 107 | } else |
alejo5214416 | 1:4235920f89f8 | 108 | circular_buf_reset(&buf); |
alejo5214416 | 0:031eeed95323 | 109 | |
alejo5214416 | 0:031eeed95323 | 110 | } |
alejo5214416 | 0:031eeed95323 | 111 | |
alejo5214416 | 0:031eeed95323 | 112 | } |