// Give it a bit of time for the resonant antenna to settle.
WaitUS(delay);
}
+void TurnReadLF_off(uint32_t delay) {
+ FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
+ WaitUS(delay);
+}
// Write one bit to card
void T55xxWriteBit(int bit) {
// 55FC * 8us == 440us / 21.3 === 20.65 steps. could be too short. Go for 56FC instead
// 32FC * 8us == 256us / 21.3 == 12.018 steps. ok
// 16FC * 8us == 128us / 21.3 == 6.009 steps. ok
-
#ifndef EM_START_GAP
-#define EM_START_GAP 60*8
-#endif
-#ifndef EM_ONE_GAP
-#define EM_ONE_GAP 32*8
-#endif
-#ifndef EM_ZERO_GAP
-# define EM_ZERO_GAP 16*8
+#define EM_START_GAP 55*8
#endif
fwd_write_ptr = forwardLink_data;
fwd_bit_sz--; //prepare next bit modulation
fwd_write_ptr++;
- FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
- WaitUS(EM_START_GAP);
- TurnReadLFOn(16);
+ TurnReadLF_off(EM_START_GAP);
+ TurnReadLFOn(18*8);
// now start writting with bitbanging the antenna.
while(fwd_bit_sz-- > 0) { //prepare next bit modulation
- if(((*fwd_write_ptr++) & 1) == 1)
- WaitUS(EM_ONE_GAP);
- else {
- //These timings work for 4469/4269/4305
- FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
- WaitUS(20);
- TurnReadLFOn(12);
+ if(((*fwd_write_ptr++) & 1) == 1) {
+ WaitUS(32);
+ } else {
+ TurnReadLF_off(23*8);
+ TurnReadLFOn(18*8);
}
}
}
len = Prepare_Cmd( FWD_CMD_LOGIN );
len += Prepare_Data( pwd & 0xFFFF, pwd >> 16 );
SendForward(len);
- WaitMS(20); // no wait for login command.
+ //WaitUS(20); // no wait for login command.
// should receive
// 0000 1010 ok.
// 0000 0001 fail
SendForward(len);
WaitUS(400);
- // Now do the acquisition
+
DoPartialAcquisition(20, true, 6000);
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
SendForward(len);
//Wait 20ms for write to complete?
- WaitMS(6);
+ WaitMS(7);
//Capture response if one exists
DoPartialAcquisition(20, true, 6000);
for(i=0; i < clk/2-tol; ++i) {
buffer[dataloc+i] = high+5;
}
+ } //test for single sample outlier (high between two lows) in the case of very strong waves
+ if (buffer[dataloc] >= high && buffer[dataloc+2] <= low) {
+ buffer[dataloc] = buffer[dataloc+2];
+ buffer[dataloc+1] = buffer[dataloc+2];
}
for (i=0; i<datalen; ++i) {
if (i+newloc < bufsize) {