What would you recommend? IR Receive Issues/TSOP/ATTIny85.

Hey.

What do you recommend in terms of an IR receiver that could cope with the multiple signals being very close together? Ideally within say 20ms of each other (i.e. close to an entire pack size)

I have successfully (although technically not hard) managed to get an ATTiny85 to produce a 38Khz squarewave signal to turn on and off an IR LED to send modulated IR signals.

The issue is my receiver. I know little about hardware...
I am sending 16bit packets in this form:

 while (mask) {

    if (mask & x) { // A 1 bit = A High, Low, High, Low.
      TCCR1 = on;
      delayMicroseconds(300);
      TCCR1 = off;
      delayMicroseconds(300);
      TCCR1 = on;
      delayMicroseconds(300);
      TCCR1 = off;
      delayMicroseconds(300);
    }
    else {            // A 0 bit = A High followed by nada.
      TCCR1 = on;
      delayMicroseconds(300);
      TCCR1 = off;
      delayMicroseconds(900);
    }

The code works well and I am happily sending 16bit packets to the IR TSOP Rx.

The issue is when I reduce the time between packets below a certain threshold. It seems as though I can only have a minimal delay of 80ms between sending one pack and the next.

I assume this is due to the IR TSOP (by Vishay) receivers attempting to filter "background IR" that could be mistaken as a signal...like fluorescent lights etc.

Now, the remotes will be used in semi-dimly lit rooms and the issue is there may be 20+ remotes being fired within a second of each other.

With 16 bits, I can easily make some form of "CRC check" (basically send the byte I want to twice...with it being inverted in the second half of the packet...do an XOR = 1;)
But I don't want to have the issue of having the IR receiver die when this data is sent, making users have to re-send data if possible.

Here is a logic graph of:

A) 2 packets with the 80ms between each.
B) A close up of a single packet of 16 bits.
C) A close up of a single "1" bit.

LARGER PICTURE OF LOGIC