Dependencies: mbed qnode2 MFRC522-2 eeprom Buffer2
main.cpp
- Committer:
- alejo5214416
- Date:
- 2018-07-28
- Revision:
- 4:2208f7e44ac6
- Parent:
- 3:5d963b3e042f
- Child:
- 5:24335ea5e4d3
File content as of revision 4:2208f7e44ac6:
#include "mbed.h" #include "MFRC522.h" #include "qnode.h" #include "Buffer.h" #include "eeprom.h" #define eepr_addr 0x50 uint16_t const count_address=0x0000; I2C i2c(p28,p27); DigitalOut led4(LED4); DigitalOut led3(LED3); DigitalOut led1(LED1); DigitalOut enable(p19); Serial pc(USBTX, USBRX); Serial disp_uno(p9, p10); // tx, rx MFRC522 RfChip (p5, p6, p7, p8, p21); circular_buf_t buf; // ---->BUFFER CIRCULAR buf InterruptIn event(p16); bool flag1=false; bool flag2=false; bool flag3=false; bool flag4=false; volatile bool buf1ready=false; volatile bool buf2ready=false; uint16_t address=0x0001; void interrupcion(); void disp_unoTx_isr(); void disp_unoRx_isr(); int main() { freq(400000); event.rise(&interrupcion); disp_uno.attach(&disp_unoRx_isr,Serial::RxIrq); disp_uno.attach(&disp_unoTx_isr,Serial::TxIrq); struct Queue *q = createQueue(); buf.size = 5; buf.buffer = (uint8_t*) malloc(buf.size); enable=0; RfChip.PCD_Init(); uint8_t count = 0; //-------->>>>>>para iniciar el conteo en 0 de la memoria de cantidad de uid registrados write_data(eepr_addr, count_address,&count);//---->>> count = data_read(eepr_addr, count_address); pc.printf("%d UID's registrados en memoria\n",count); address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura while(1) { while(flag4==true) { if(!RfChip.PICC_IsNewCardPresent()) continue; if (!RfChip.PICC_ReadCardSerial()) continue; pc.printf("Tarjeta Numero: "); uint8_t *c = &RfChip.uid.uidByte[0]; enQueue(q,c); count = data_read(eepr_addr, count_address); address = (4*uint16_t(count)+1);//--->>actualizar posicion de escritura write_data(eepr_addr, address,c);//---->>>guardar UID en memoria for(int j=0; j<4; j++) { uint8_t car = data_read(eepr_addr, (address+j)); pc.printf("%02X",car); } pc.printf("\n"); count++;//------>>>>sumar 1 al contador de UID's write_data(eepr_addr, count_address,&count);///---->>actualizar en memoria el contador pc.printf("\n"); flag4=false; } } } void interrupcion() { led4=0; flag4=true; } void disp_unoTx_isr() { enable=0; } void disp_unoRx_isr() { uint8_t b = disp_uno.getc(); if(b!=NULL) { circular_buf_put(&buf, b); } else { uint8_t a; circular_buf_get(&buf,&a); if(a=='1') { circular_buf_get(&buf,&a); if(a=='S') { flag1=true; } else if(a=='Y') { flag2=true; } else if(a=='N') { flag3=true; } } else circular_buf_reset(&buf); } }