Bare bones 3 bit IR protocol implementation in AVR assembly (ATtiny85)

For those curious, here's how you go about implementing a basic 3-bit IR data protocol in AVR assembly.

The protocol was originally developed by me for basic short range remote control, nothing fancy. As a three bit data protocol it allows for a maximum of 8 different values to be transmitted. More than enough for a conservative up, down, left, right, func1, func2 type robotics project. It has a high baud rate which can easily be configured by editing some of the pre-processor definitions. In fact much of what 'makes up' this protocol can easily be changed.

  • Variable 38kHz IR transmitter burst time (Protocol Independent).
  • Pulse delay encoding.
  • Simple data transmission error checking. (Feel free to implement your own)
  • High noise immunity.
  • Uses internal 8MHz RC oscillator
  • Timer resolution of 100μs (for measuring pulse delays)

Please note that the provided assembly is for Atmel's ATtiny85. You will require one of each for the transmit and receive end.

Commented code and schematics are all included.