,.
Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
main.cpp@6:2ca2ebe5b5ed, 2018-07-30 (annotated)
- Committer:
- alejo5214416
- Date:
- Mon Jul 30 03:53:05 2018 +0000
- Revision:
- 6:2ca2ebe5b5ed
- Parent:
- 5:24335ea5e4d3
- Child:
- 7:f62ffbdfa977
conteo ok, escritura ok, reset ok, lectura ok. 29-7-18
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 | 1:4235920f89f8 | 9 | I2C i2c(p28,p27); |
alejo5214416 | 1:4235920f89f8 | 10 | DigitalOut led4(LED4); |
alejo5214416 | 1:4235920f89f8 | 11 | DigitalOut led3(LED3); |
alejo5214416 | 1:4235920f89f8 | 12 | DigitalOut led1(LED1); |
alejo5214416 | 0:031eeed95323 | 13 | DigitalOut enable(p19); |
alejo5214416 | 0:031eeed95323 | 14 | Serial pc(USBTX, USBRX); |
alejo5214416 | 0:031eeed95323 | 15 | Serial disp_uno(p9, p10); // tx, rx |
alejo5214416 | 0:031eeed95323 | 16 | MFRC522 RfChip (p5, p6, p7, p8, p21); |
alejo5214416 | 0:031eeed95323 | 17 | circular_buf_t buf; // ---->BUFFER CIRCULAR buf |
alejo5214416 | 1:4235920f89f8 | 18 | InterruptIn event(p16); |
alejo5214416 | 6:2ca2ebe5b5ed | 19 | InterruptIn reset(p15,PullDown); |
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 | 6:2ca2ebe5b5ed | 32 | void flush_memory(); |
alejo5214416 | 4:2208f7e44ac6 | 33 | |
alejo5214416 | 4:2208f7e44ac6 | 34 | int main() |
alejo5214416 | 4:2208f7e44ac6 | 35 | { |
alejo5214416 | 4:2208f7e44ac6 | 36 | freq(400000); |
alejo5214416 | 4:2208f7e44ac6 | 37 | event.rise(&interrupcion); |
alejo5214416 | 6:2ca2ebe5b5ed | 38 | reset.rise(&flush_memory); |
alejo5214416 | 4:2208f7e44ac6 | 39 | disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq); |
alejo5214416 | 4:2208f7e44ac6 | 40 | disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq); |
alejo5214416 | 4:2208f7e44ac6 | 41 | struct Queue *q = createQueue(); |
alejo5214416 | 4:2208f7e44ac6 | 42 | buf.size = 5; |
alejo5214416 | 4:2208f7e44ac6 | 43 | buf.buffer = (uint8_t*) malloc(buf.size); |
alejo5214416 | 4:2208f7e44ac6 | 44 | enable=0; |
alejo5214416 | 4:2208f7e44ac6 | 45 | RfChip.PCD_Init(); |
alejo5214416 | 6:2ca2ebe5b5ed | 46 | //count = 0x0001; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados |
alejo5214416 | 6:2ca2ebe5b5ed | 47 | //write_data(eepr_addr, count_address,&count);//---->>> |
alejo5214416 | 6:2ca2ebe5b5ed | 48 | uint8_t count = data_read(eepr_addr, count_address); |
alejo5214416 | 6:2ca2ebe5b5ed | 49 | if (count==0xff){ |
alejo5214416 | 6:2ca2ebe5b5ed | 50 | count=0x0001; |
alejo5214416 | 4:2208f7e44ac6 | 51 | write_data(eepr_addr, count_address,&count);//---->>> |
alejo5214416 | 6:2ca2ebe5b5ed | 52 | count=0x0000; |
alejo5214416 | 6:2ca2ebe5b5ed | 53 | } |
alejo5214416 | 6:2ca2ebe5b5ed | 54 | pc.printf("%x UID's registrados en memoria\n",count); |
alejo5214416 | 6:2ca2ebe5b5ed | 55 | address = (4*uint16_t(count)+1);//--->>Crear posicion de escritura actual |
alejo5214416 | 4:2208f7e44ac6 | 56 | while(1) { |
alejo5214416 | 4:2208f7e44ac6 | 57 | while(flag4==true) { |
alejo5214416 | 4:2208f7e44ac6 | 58 | if(!RfChip.PICC_IsNewCardPresent()) |
alejo5214416 | 4:2208f7e44ac6 | 59 | continue; |
alejo5214416 | 4:2208f7e44ac6 | 60 | if (!RfChip.PICC_ReadCardSerial()) |
alejo5214416 | 4:2208f7e44ac6 | 61 | continue; |
alejo5214416 | 4:2208f7e44ac6 | 62 | pc.printf("Tarjeta Numero: "); |
alejo5214416 | 4:2208f7e44ac6 | 63 | uint8_t *c = &RfChip.uid.uidByte[0]; |
alejo5214416 | 4:2208f7e44ac6 | 64 | enQueue(q,c); |
alejo5214416 | 6:2ca2ebe5b5ed | 65 | //count = data_read(eepr_addr, count_address); |
alejo5214416 | 4:2208f7e44ac6 | 66 | write_data(eepr_addr, address,c);//---->>>guardar UID en memoria |
alejo5214416 | 4:2208f7e44ac6 | 67 | for(int j=0; j<4; j++) { |
alejo5214416 | 4:2208f7e44ac6 | 68 | uint8_t car = data_read(eepr_addr, (address+j)); |
alejo5214416 | 4:2208f7e44ac6 | 69 | pc.printf("%02X",car); |
alejo5214416 | 4:2208f7e44ac6 | 70 | } |
alejo5214416 | 4:2208f7e44ac6 | 71 | pc.printf("\n"); |
alejo5214416 | 4:2208f7e44ac6 | 72 | count++;//------>>>>sumar 1 al contador de UID's |
alejo5214416 | 6:2ca2ebe5b5ed | 73 | address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura |
alejo5214416 | 4:2208f7e44ac6 | 74 | write_data(eepr_addr, count_address,&count);///---->>actualizar en memoria el contador |
alejo5214416 | 4:2208f7e44ac6 | 75 | pc.printf("\n"); |
alejo5214416 | 4:2208f7e44ac6 | 76 | flag4=false; |
alejo5214416 | 4:2208f7e44ac6 | 77 | } |
alejo5214416 | 4:2208f7e44ac6 | 78 | } |
alejo5214416 | 4:2208f7e44ac6 | 79 | } |
alejo5214416 | 4:2208f7e44ac6 | 80 | |
alejo5214416 | 4:2208f7e44ac6 | 81 | |
alejo5214416 | 6:2ca2ebe5b5ed | 82 | void flush_memory() |
alejo5214416 | 6:2ca2ebe5b5ed | 83 | { |
alejo5214416 | 6:2ca2ebe5b5ed | 84 | led4=1; |
alejo5214416 | 6:2ca2ebe5b5ed | 85 | uint8_t data= 0xff; |
alejo5214416 | 6:2ca2ebe5b5ed | 86 | write_data(eepr_addr,0x0000,&data); |
alejo5214416 | 6:2ca2ebe5b5ed | 87 | data = 0x01; |
alejo5214416 | 6:2ca2ebe5b5ed | 88 | for(uint16_t k=0x0001; k<0x003f; k++) { |
alejo5214416 | 6:2ca2ebe5b5ed | 89 | int conf = write_data(eepr_addr,k,&data); |
alejo5214416 | 6:2ca2ebe5b5ed | 90 | } |
alejo5214416 | 6:2ca2ebe5b5ed | 91 | printf("Memoria borrada\n"); |
alejo5214416 | 6:2ca2ebe5b5ed | 92 | led4=0; |
alejo5214416 | 6:2ca2ebe5b5ed | 93 | } |
alejo5214416 | 4:2208f7e44ac6 | 94 | |
alejo5214416 | 4:2208f7e44ac6 | 95 | |
alejo5214416 | 1:4235920f89f8 | 96 | void interrupcion() |
alejo5214416 | 1:4235920f89f8 | 97 | { |
alejo5214416 | 6:2ca2ebe5b5ed | 98 | |
alejo5214416 | 1:4235920f89f8 | 99 | flag4=true; |
alejo5214416 | 1:4235920f89f8 | 100 | } |
alejo5214416 | 1:4235920f89f8 | 101 | |
alejo5214416 | 0:031eeed95323 | 102 | void disp_unoTx_isr() |
alejo5214416 | 0:031eeed95323 | 103 | { |
alejo5214416 | 0:031eeed95323 | 104 | enable=0; |
alejo5214416 | 0:031eeed95323 | 105 | } |
alejo5214416 | 0:031eeed95323 | 106 | |
alejo5214416 | 0:031eeed95323 | 107 | void disp_unoRx_isr() |
alejo5214416 | 0:031eeed95323 | 108 | { |
alejo5214416 | 0:031eeed95323 | 109 | uint8_t b = disp_uno.getc(); |
alejo5214416 | 0:031eeed95323 | 110 | |
alejo5214416 | 0:031eeed95323 | 111 | if(b!=NULL) { |
alejo5214416 | 0:031eeed95323 | 112 | circular_buf_put(&buf, b); |
alejo5214416 | 0:031eeed95323 | 113 | } else { |
alejo5214416 | 0:031eeed95323 | 114 | uint8_t a; |
alejo5214416 | 0:031eeed95323 | 115 | circular_buf_get(&buf,&a); |
alejo5214416 | 0:031eeed95323 | 116 | if(a=='1') { |
alejo5214416 | 0:031eeed95323 | 117 | circular_buf_get(&buf,&a); |
alejo5214416 | 0:031eeed95323 | 118 | if(a=='S') { |
alejo5214416 | 0:031eeed95323 | 119 | flag1=true; |
alejo5214416 | 0:031eeed95323 | 120 | } else if(a=='Y') { |
alejo5214416 | 0:031eeed95323 | 121 | flag2=true; |
alejo5214416 | 0:031eeed95323 | 122 | } else if(a=='N') { |
alejo5214416 | 0:031eeed95323 | 123 | flag3=true; |
alejo5214416 | 0:031eeed95323 | 124 | } |
alejo5214416 | 1:4235920f89f8 | 125 | } else |
alejo5214416 | 1:4235920f89f8 | 126 | circular_buf_reset(&buf); |
alejo5214416 | 0:031eeed95323 | 127 | |
alejo5214416 | 0:031eeed95323 | 128 | } |
alejo5214416 | 0:031eeed95323 | 129 | |
alejo5214416 | 0:031eeed95323 | 130 | } |
alejo5214416 | 6:2ca2ebe5b5ed | 131 | |
alejo5214416 | 6:2ca2ebe5b5ed | 132 | |
alejo5214416 | 6:2ca2ebe5b5ed | 133 |