interrupt handling
Diff: readerComm.cpp
- Revision:
- 13:16a5b43ac874
- Parent:
- 11:d5e8f47880f1
diff -r 336524cf63de -r 16a5b43ac874 readerComm.cpp --- a/readerComm.cpp Fri Apr 10 23:16:44 2015 +0000 +++ b/readerComm.cpp Thu Apr 30 23:30:55 2015 +0000 @@ -6,12 +6,12 @@ Copyright (C) 2015 Gymtrack, Inc. Author: Ron Clough Date: 2015-02-27 - + Changes: Rev Date Who Details ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0.0 2015-02-27 RWC Original version. - + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /*========================================================================== Initialize the chipset ISO15693 and read UID: @@ -20,16 +20,16 @@ 2) Write Modulator and SYS_CLK Control Register (0x09) (13.56Mhz SYS_CLK and default Clock 13.56Mhz)) [0x09 0x31] 3) Configure Mode ISO Control Register (0x01) to 0x02 (ISO15693 high bit rate, one subcarrier, 1 out of 4) -[0x01 0x02] +[0x01 0x02] 4) Turn RF ON (Chip Status Control Register (0x00)) [0x40 r] [0x00 0x20] [0x40 r] 5) Inventory Command (see Figure 5-20. Inventory Command Sent From MCU to TRF7970A) -5-1) Send Inventory(8B), Wait 2ms, Read/Clear IRQ Status(0x0C=>0x6C)+dummy read, -Read FIFO Status Register(0x1C/0x5C), Read Continuous FIFO from 0x1F to 0x1F+0x0A(0x1F/0x7F), -Read/Clear IRQ Status(0x0C=>0x6C)+dummy read, Read FIFO Status Register(0x1C/0x5C), +5-1) Send Inventory(8B), Wait 2ms, Read/Clear IRQ Status(0x0C=>0x6C)+dummy read, +Read FIFO Status Register(0x1C/0x5C), Read Continuous FIFO from 0x1F to 0x1F+0x0A(0x1F/0x7F), +Read/Clear IRQ Status(0x0C=>0x6C)+dummy read, Read FIFO Status Register(0x1C/0x5C), Reset FIFO(0x0F/0x8F), Read RSSI levels and oscillator status(0x0F/0x4F) [0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00] %:2 [0x6C r:2] [0x5C r] [0x7F r:10] %:10 [0x6C r:2] [0x5C r] [0x8F] [0x4F r] -==============================================================================*/ +==============================================================================*/ @@ -39,23 +39,29 @@ #include "mbed.h" #include "readerComm.h" uint8_t sg=0; -DigitalOut EN(p4); // Control EN pin on TRF7970 -DigitalOut EN2(p3); // Control EN2 pin on TRF7970 -DigitalOut CS(p19); -uint8_t turnRFOn[2]; +DigitalOut EN(p0); // Control EN pin on TRF7970 +DigitalOut EN2(p4); // Control EN2 pin on TRF7970 +DigitalOut CS(p9); +uint8_t turnRFOn[2]; uint8_t testcommand[2]; extern uint8_t noBytes; extern SPI spi; // main.cpp extern Serial pc; // main.cpp uint8_t buf[300]; // main.cpp uint8_t found=0; +uint8_t rssi_flag=0; +uint8_t rssi=0; +extern DigitalOut BLED; +DigitalOut AO_7970(p29); +DigitalOut MOD_7970(p30); +int nfc=0; //extern bool tagFound=0; - -extern DigitalOut debug1LED; -extern DigitalOut debug2LED; -extern DigitalOut ISO15693LED; -extern DigitalOut heartbeatLED; -extern DigitalOut testPin; + +//extern DigitalOut debug1LED; +//extern DigitalOut debug2LED; +//extern DigitalOut ISO15693LED; +//extern DigitalOut heartbeatLED; +//extern DigitalOut testPin; uint8_t temp; uint8_t command[2]; @@ -84,7 +90,7 @@ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * { uint8_t i=0; - + CS = SELECT; while(length > 0) { *buffer = (0x1F & *buffer); // Register address @@ -95,13 +101,13 @@ } } CS = DESELECT; - + } // End of trf797xWriteSingle() void trf797xReadSingle(uint8_t *buffer, uint8_t number) // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // trf797xReadSingle() -// Description: Reads specified reader chip registers and +// Description: Reads specified reader chip registers and // writes register contents to *buffer. // Parameters: *buffer = addresses of the registers. // number = number of registers. @@ -130,7 +136,8 @@ // Parameters: *buffer = address of first register. // length = number of registers to read. // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -{ //==================tested wrk $sg +{ + //==================tested wrk $sg CS = SELECT; *buffer = (0x60 | *buffer); // Address, read, continuous *buffer = (0x7F & *buffer); // Register address @@ -142,7 +149,7 @@ } // spi.write(0x00); spi.write(0x00); // 16 clock cycles, see TRF7970A FW Design Hints SLOA159 section 7.3 CS = DESELECT; - + //=====================tested it wrks $sg } // End of trf797xReadContinuous() @@ -183,12 +190,15 @@ void PowerUpNFC2(void) -{//CS = 1; +{ + //CS = 1; // wait_ms(4); // EN = 1; // EN2=1; - CS = 0; EN2 = 0; EN = 0; + CS = 0; + EN2 = 0; + EN = 0; wait_ms(2); CS = 1; wait_ms(3); @@ -197,313 +207,374 @@ EN = 1; } void PowerUpNFC(void) -{ //CS = 1; +{ + //CS = 1; // wait_ms(4); // EN = 1; -EN2 = 1; -wait_ms(1); -EN=1; + EN2 = 1; + wait_ms(1); + EN=1; } void PowerDownNFC(void) -{///CS=1; - EN=0; - EN2=0; +{ + ///CS=1; + EN=0; + EN2=0; //wait_ms(1); - //EN2= 0; PowerDown Mode - //EN2=1; SleepMode - //CS=0; +//EN2= 0; PowerDown Mode +//EN2=1; SleepMode +//CS=0; } void SleepNFC(void) -{ EN=0; - EN2=0; - } +{ + EN=0; + EN2=0; +} void StandByNFC(void) { turnRFOn[0] = CHIP_STATUS_CONTROL; -turnRFOn[1] = CHIP_STATUS_CONTROL; + turnRFOn[1] = CHIP_STATUS_CONTROL; -turnRFOn[1] &= 0x3F; -turnRFOn[1] |= 0x80; -trf797xWriteSingle(turnRFOn, 2); + turnRFOn[1] &= 0x3F; + turnRFOn[1] |= 0x80; + trf797xWriteSingle(turnRFOn, 2); } void SpiInit1(void) { -spi.format(8, 1); // 8 bit data, mode = 1 (transition on rising edge, sample on falling edge) -spi.frequency(250000); + spi.format(8, 1); // 8 bit data, mode = 1 (transition on rising edge, sample on falling edge) + spi.frequency(250000); } void SpiInit(void) { -spi.format(8, 1); // 8 bit data, mode = 1 (transition on rising edge, sample on falling edge) -spi.frequency(1000000); + spi.format(8, 1); // 8 bit data, mode = 1 (transition on rising edge, sample on falling edge) + spi.frequency(1000000); } void NFCInit(void) -{testPin=1; +{ + //testPin=1; //wait_ms(2); -testcommand[0] = SOFT_INIT; -trf797xDirectCommand(testcommand); -wait_ms(2); -testcommand[0] = IDLE; -trf797xDirectCommand(testcommand); -wait_ms(2); -testcommand[0] = MODULATOR_CONTROL; -testcommand[1] = 0x21; // 6.78 MHz, OOK 100% -trf797xWriteSingle(testcommand, 2); + + testcommand[0] = SOFT_INIT; + trf797xDirectCommand(testcommand); + wait_ms(2); + testcommand[0] = IDLE; + trf797xDirectCommand(testcommand); + wait_ms(2); +//testcommand[0] =NFC_TARGET_LEVEL ; +//testcommand[1] = 0x00; +//trf797xWriteSingle(testcommand, 2); + testcommand[0] = MODULATOR_CONTROL; + testcommand[1] = 0x81; // 6.78 MHz, OOK 100% + trf797xWriteSingle(testcommand, 2); //wait_ms(2); -testcommand[0] = MODULATOR_CONTROL; -trf797xReadSingle(testcommand, 1); -turnRFOn[0] = CHIP_STATUS_CONTROL; -turnRFOn[1] = CHIP_STATUS_CONTROL; -turnRFOn[1] &= 0x3F; -turnRFOn[1] |= 0x20; + testcommand[0] = MODULATOR_CONTROL; + trf797xReadSingle(testcommand, 1); + testcommand[0] = REGULATOR_CONTROL ; + testcommand[1] = 0x07; + trf797xWriteSingle(testcommand, 2); + turnRFOn[0] = CHIP_STATUS_CONTROL; + turnRFOn[1] = CHIP_STATUS_CONTROL; + turnRFOn[1] &= 0x3F; + turnRFOn[1] |= 0x00; // Oroiginal code has 0x20 !!! -trf797xReadSingle(turnRFOn, 1); -turnRFOn[0] = CHIP_STATUS_CONTROL; -turnRFOn[1] = CHIP_STATUS_CONTROL; -turnRFOn[1] &= 0x3F; -turnRFOn[1] |= 0x20; -trf797xWriteSingle(turnRFOn, 2); + trf797xReadSingle(turnRFOn, 1); + turnRFOn[0] = CHIP_STATUS_CONTROL; + turnRFOn[1] = CHIP_STATUS_CONTROL; + turnRFOn[1] &= 0x3F; + turnRFOn[1] |= 0x00; + trf797xWriteSingle(turnRFOn, 2); //wait_ms(2); - -testcommand[0] = ISO_CONTROL; -testcommand[1] = 0x02; // 6.78 MHz, OOK 100% -trf797xWriteSingle(testcommand, 2); -testcommand[0] = IRQ_MASK; -testcommand[1] = 0x3F; -trf797xWriteSingle(testcommand, 2); -//wait_ms(6); -testPin=0;} + + trf797xWriteSingle(testcommand, 2); + testcommand[0] = ISO_CONTROL; + testcommand[1] = 0x02; // 6.78 MHz, OOK 100% + trf797xWriteSingle(testcommand, 2); + testcommand[0] = IRQ_MASK; + testcommand[1] = 0x3F; + trf797xWriteSingle(testcommand, 2); +//wait_ms(6); +//testPin=0; +} void RegisterReInitNFC(void) -{testcommand[0] = TX_TIMER_EPC_HIGH; -testcommand[1] = 0xC1; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = TX_TIMER_EPC_LOW ; -testcommand[1] = 0xC1; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = TX_PULSE_LENGTH_CONTROL ; -testcommand[1] = 0x00; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; -testcommand[1] = 0x30; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = RX_WAIT_TIME ; -testcommand[1] = 0x1F; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = MODULATOR_CONTROL ; -testcommand[1] = 0x21; //0x34 100%ook@13MHz -trf797xWriteSingle(testcommand, 2); -testcommand[0] = RX_SPECIAL_SETTINGS ; -testcommand[1] = 0x40; -trf797xWriteSingle(testcommand, 2); -testcommand[0] = REGULATOR_CONTROL ; -testcommand[1] = 0x87; -trf797xWriteSingle(testcommand, 2); +{ + //testcommand[0] =NFC_TARGET_LEVEL ; +//testcommand[1] = 0x00; +//trf797xWriteSingle(testcommand, 2); + testcommand[0] = TX_TIMER_EPC_HIGH; + testcommand[1] = 0xC1; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = TX_TIMER_EPC_LOW ; + testcommand[1] = 0xC1; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = TX_PULSE_LENGTH_CONTROL ; + testcommand[1] = 0x00; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; + testcommand[1] = 0x30; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = RX_WAIT_TIME ; + testcommand[1] = 0x1F; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = MODULATOR_CONTROL ; + testcommand[1] = 0x81; //0x34 100%ook@13MHz + trf797xWriteSingle(testcommand, 2); + testcommand[0] = RX_SPECIAL_SETTINGS ; + testcommand[1] = 0x40; + trf797xWriteSingle(testcommand, 2); + testcommand[0] = REGULATOR_CONTROL ; + testcommand[1] = 0x07; + trf797xWriteSingle(testcommand, 2); } void RegistersReadNFC(void) -{turnRFOn[0] = CHIP_STATUS_CONTROL; -trf797xReadSingle(turnRFOn, 1); -testcommand[0] = ISO_CONTROL; -trf797xReadSingle(testcommand, 1); -testcommand[0] = TX_TIMER_EPC_HIGH; //0xC1; -trf797xReadSingle(testcommand, 1); -testcommand[0] = TX_TIMER_EPC_LOW ; //0xC1; -trf797xReadSingle(testcommand, 1); -testcommand[0] = TX_PULSE_LENGTH_CONTROL ; //0x00; -trf797xReadSingle(testcommand, 1); -testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; //0x30; -trf797xReadSingle(testcommand, 1); -testcommand[0] = RX_WAIT_TIME ; //0x1F; -trf797xReadSingle(testcommand, 1); -testcommand[0] = MODULATOR_CONTROL ; //0x21; -trf797xReadSingle(testcommand, 1); -testcommand[0] = RX_SPECIAL_SETTINGS ; //0x40; -trf797xReadSingle(testcommand, 1); -testcommand[0] = REGULATOR_CONTROL ; //0x87; -trf797xReadSingle(testcommand, 1); +{ + turnRFOn[0] = CHIP_STATUS_CONTROL; + trf797xReadSingle(turnRFOn, 1); + testcommand[0] = ISO_CONTROL; + trf797xReadSingle(testcommand, 1); + testcommand[0] = TX_TIMER_EPC_HIGH; //0xC1; + trf797xReadSingle(testcommand, 1); + testcommand[0] = TX_TIMER_EPC_LOW ; //0xC1; + trf797xReadSingle(testcommand, 1); + testcommand[0] = TX_PULSE_LENGTH_CONTROL ; //0x00; + trf797xReadSingle(testcommand, 1); + testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; //0x30; + trf797xReadSingle(testcommand, 1); + testcommand[0] = RX_WAIT_TIME ; //0x1F; + trf797xReadSingle(testcommand, 1); + testcommand[0] = MODULATOR_CONTROL ; //0x21; + trf797xReadSingle(testcommand, 1); + testcommand[0] = RX_SPECIAL_SETTINGS ; //0x40; + trf797xReadSingle(testcommand, 1); + testcommand[0] = REGULATOR_CONTROL ; //0x87; + trf797xReadSingle(testcommand, 1); } void InventoryReqNFC(void) { //send inventory command================================================== -buf[0]=0x8F; //Send Inventory(8B)[0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00] -buf[1]=0x91; -buf[2]=0x3D; -buf[3]=0x00; -buf[4]=0x30; -buf[5]=0x26; -buf[6]=0x01; -buf[7]=0x00; -trf797xRawWrite(&buf[0],8); -//wait_ms(2); -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -wait_ms(5); -/*====================================read tag ID -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -testcommand[0] = FIFO_COUNTER; //Read FIFO Status Register(0x1C/0x5C) -trf797xReadSingle(testcommand, 1); -testcommand[0] = 0x7F & testcommand[0]; // Determine the number of bytes left in FIFO -buf[0] = FIFO; -trf797xReadContinuous(&buf[0], testcommand[0]); -testcommand[0] = RSSI_LEVELS; //Read RSSI levels and oscillator status(0x0F/0x4F) -trf797xReadSingle(testcommand, 1); -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -testcommand[0] = RESET; //Reset FIFO(0x0F/0x8F) -trf797xDirectCommand(testcommand); -trf797xStopDecoders(); -trf797xRunDecoders(); */ + buf[0]=0x8F; //Send Inventory(8B)[0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00] + buf[1]=0x91; + buf[2]=0x3D; + buf[3]=0x00; + buf[4]=0x30; + buf[5]=0x26; + buf[6]=0x01; + buf[7]=0x00; + trf797xRawWrite(&buf[0],8); +//read rssi register and interchange rx input to main and aux receiver blocks +//{add code block here +// } + wait_ms(2); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + wait_ms(5); +//testcommand[0] = CHECK_EXTERNAL_RF; +//trf797xDirectCommand(testcommand); +//wait_ms(1); + testcommand[0] = RSSI_LEVELS; //Read RSSI levels and oscillator status(0x0F/0x4F) + trf797xReadSingle(testcommand, 1); + printf("RSSI:%X \r\n", testcommand[0]); + /*====================================read tag ID + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + testcommand[0] = FIFO_COUNTER; //Read FIFO Status Register(0x1C/0x5C) + trf797xReadSingle(testcommand, 1); + testcommand[0] = 0x7F & testcommand[0]; // Determine the number of bytes left in FIFO + buf[0] = FIFO; + trf797xReadContinuous(&buf[0], testcommand[0]); + testcommand[0] = RSSI_LEVELS; //Read RSSI levels and oscillator status(0x0F/0x4F) + trf797xReadSingle(testcommand, 1); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + testcommand[0] = RESET; //Reset FIFO(0x0F/0x8F) + trf797xDirectCommand(testcommand); + trf797xStopDecoders(); + trf797xRunDecoders(); */ //=====================================read Tag ID //wait(1); } void FindNFC(uint8_t *irqStatus) -{//found=0; +{ + //found=0; //static uint8_t sg; -//printf("%X \r\n", *irqStatus); - - switch(*irqStatus) - {case BIT0: found=BIT0; WAIT=10; break; - case BIT1: found=BIT1; break; - // case BIT2://found=BIT2; // break; - //case BIT3:found=BIT3; WAIT=0;break; +//printf("%X \r\n", *irqStatus); + + switch(*irqStatus) { + case BIT0: + found=BIT0; + WAIT=10; + break; + case BIT1: + found=BIT1; + break; + // case BIT2://found=BIT2; // break; + //case BIT3:found=BIT3; WAIT=0;break; // case BIT4:found=BIT4; WAIT=0;break; // case BIT5:found=BIT5; WAIT=0;break; - case 0x40: found=0x40; break; - case BIT7: found=BIT7; break; - default: found=0; -} + case 0x40: + found=0x40; + break; + case BIT7: + found=BIT7; + break; + default: + found=0; + } -} +} void handlerNFC(void) { -testcommand[0] = IRQ_STATUS; -trf797xReadSingle(testcommand,1); -FindNFC(testcommand); + testcommand[0] = IRQ_STATUS; + trf797xReadSingle(testcommand,1); + FindNFC(testcommand); //wait_ms(1); //=============================use if trf7970a irq_status is not cleared -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); +//testcommand[0] = IRQ_STATUS; +//trf797xReadSingle(testcommand,1); //============================= } void MemReadReqNFC(void) -{testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; -testcommand[1] = 0xFF; -trf797xWriteSingle(testcommand, 2); - //send inventory command================================================== -buf[0]=0x8F; //Send Inventory(8B)[0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00] -buf[1]=0x91; -buf[2]=0x3D; -buf[3]=0x00; -buf[4]=0x30; -buf[5]=0x02; -buf[6]=0x20; -buf[7]=0x00; -trf797xRawWrite(&buf[0],8); -//wait_ms(2); +{ + testcommand[0] = RX_NO_RESPONSE_WAIT_TIME ; + testcommand[1] = 0xFF; + trf797xWriteSingle(testcommand, 2); +//send inventory command================================================== + buf[0]=0x8F; //Send Inventory(8B)[0x8F 0x91 0x3D 0x00 0x30 0x26 0x01 0x00] + buf[1]=0x91; + buf[2]=0x3D; + buf[3]=0x00; + buf[4]=0x30; + buf[5]=0x02; + buf[6]=0x20; + buf[7]=0x00; + trf797xRawWrite(&buf[0],8); + +//read rssi register and interchange rx input to main and aux receiver blocks +//{add code block here +// } +//wait_ms(2); //testPin=1; //=========================use to clear irq_status register of trf7970a -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); +//testcommand[0] = IRQ_STATUS; +//trf797xReadSingle(testcommand,1); +//testcommand[0] = IRQ_STATUS; +//trf797xReadSingle(testcommand,1); //========================== -wait_ms(5); + wait_ms(5); +//testcommand[0] = CHECK_EXTERNAL_RF; +//trf797xDirectCommand(testcommand); +//wait_us(100); + testcommand[0] = RSSI_LEVELS; + //Read RSSI levels and oscillator status(0x0F/0x4F) + trf797xReadSingle(testcommand, 1); + rssi=testcommand[0]; + + printf("RSSI:%X \r\n", testcommand[0]); } -void ReadNFC(void) -{/*========================================== read irqstatus reg. of trf7970a -//testcommand[0] = IRQ_STATUS; clear irqstatus reg of trf7970a -//trf797xReadSingle(testcommand,1); -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); -===========================================*/ +void ReadNFC(void) +{ + /*========================================== read irqstatus reg. of trf7970a + //testcommand[0] = IRQ_STATUS; clear irqstatus reg of trf7970a + //trf797xReadSingle(testcommand,1); + //testcommand[0] = IRQ_STATUS; + //trf797xReadSingle(testcommand,1); + ===========================================*/ -noBytes = FIFO_COUNTER; //Read FIFO Status Register(0x1C/0x5C) -trf797xReadSingle(&noBytes, 1); -noBytes = 0x7F & noBytes; // Determine the number of bytes left in FIFO -buf[0] = FIFO; -trf797xReadContinuous(&buf[0],noBytes); + noBytes = FIFO_COUNTER; //Read FIFO Status Register(0x1C/0x5C) + trf797xReadSingle(&noBytes, 1); + noBytes = 0x7F & noBytes; // Determine the number of bytes left in FIFO + buf[0] = FIFO; + trf797xReadContinuous(&buf[0],noBytes); //==use if trf7970a irq_status is not cleared -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); -//testcommand[0] = IRQ_STATUS; -//trf797xReadSingle(testcommand,1); +//testcommand[0] = IRQ_STATUS; +//trf797xReadSingle(testcommand,1); +//testcommand[0] = IRQ_STATUS; +//trf797xReadSingle(testcommand,1); //========================================= -testcommand[0] = RESET; //Reset FIFO(0x0F/0x8F) -trf797xDirectCommand(testcommand); + testcommand[0] = RESET; //Reset FIFO(0x0F/0x8F) + trf797xDirectCommand(testcommand); -//wait(1); +//wait(1); } -bool PollNFC(void) -{ -CS=1; -PowerUpNFC(); -//////wait_ms(1); -NFCInit(); -RegisterReInitNFC(); -MemReadReqNFC(); //InventoryReqNFC() + + + + + + + -wait_ms(WAIT); +bool PollNFC(void) +{ + printf("PollNFC \r\n"); +//CS=1; + // PowerUpNFC(); +//////wait_ms(1); + // NFCInit(); + // RegisterReInitNFC(); + MemReadReqNFC(); + printf("back from MemReadReqNFC \r\n"); + if (rssi>0x50) + {rssi_flag=1;} + else{rssi_flag=0;} + nfc++; +//InventoryReqNFC(); + wait_ms(WAIT); -switch(found) -{case BIT0: - printf("no response:"); - printf("%X \r\n",found); - found=0; - WAIT=0; - break; + switch(found) { + case BIT0: + printf("no response:"); + printf("%X \r\n",found); + found=0; + WAIT=0; + break; // //case BIT1: // //case BIT2: // //case BIT3: //// case BIT4: //// case BIT5: - case BIT6: - ReadNFC(); - PowerDownNFC(); //SleepNFC() //StandByNFC() - found=1; - WAIT=0; - break; - case BIT7: - printf("tx complete:"); - printf("%X \r\n",found); - found=0; - WAIT=0; -break; -default: found=0; -} -// -// -////InventoryReqNFC(); -////if(found==1) -////{ -////ReadNFC(); -////printf("tag id:"); -////for(uint8_t i=0; i<noBytes; i++) -////printf("%X ", buf[i]); -////printf("\r\n"); -////found=0; -////} -////else -//{printf("tnf2 \r\n"); -//} + case BIT6: + ReadNFC(); +//PowerDownNFC(); //SleepNFC() //StandByNFC() + found=1; + WAIT=0; + break; + case BIT7: + printf("tx complete:"); + printf("%X \r\n",found); + found=0; + WAIT=0; + break; + default: + if((nfc>10)&&(rssi_flag=1)); + {rssi_flag=0; + nfc=0; + PowerUpNFC(); + NFCInit(); + RegisterReInitNFC(); + printf("resetting 7970 \r\n:"); + found=0; + } + } -return found; + return found; } \ No newline at end of file