USB IR Toy: Calculate sampling rates

Posted on Thursday, April 15th, 2010 in Infrared toy by Ian

See the latest version on the documentation wiki.

The USB IR Toy raw IO mode samples and replays infrared waveforms.  IRIO mode starts with a default 10kHz sample and playback timer. The rate can be changed with the setup timer command (0x01), followed by two bytes that set the sample timer offset. The first byte is the high 8bits of the offset, the second byte is the low 8bits.

An easy way to find the values to send is a utility such as PIC Timer Calculator V4. Enter the key constants (timer 1, 1:1 prescaler, 48MHz fosc), and adjust the slider to find an offset that gives the desired frequency. The picture shows the settings for 10kHz.

To use the offset value (64331 in the example), first convert the number to HEX (64331=0xfb4b). Next, break it into a high (0xfb) and low (0x4b) byte.

0x01 0xfb 0x4b

Connect to the IR Toy virtual serial port with a terminal program that can send byte values, we like Hercules and realterm. Send the sample timer setup command (0x01) and the two bytes of the timer offset (0xfb 0x4b). New settings take effect immediately.

There is maximum limit to the sample speed, but it’s undetermined at this time. At some point the samples are so frequent that the PIC can’t service the interrupt before another fires, or it won’t have time to service the USB peripheral.

A screenshot of Hercules settings are shown below the break.

This entry was posted on Thursday, April 15th, 2010 at 7:41 am and is filed under Infrared toy. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

One Response to “USB IR Toy: Calculate sampling rates”

  1. Head over to the forum under a “Quick Question about Raw IO mode” for further discussion of Timer1 calculations.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments

  • Ian: test comment on /blog/ page
  • ian: No, that's exactly how it should be :) Sorry about missing names on comments, the theme is being reworked as we speak.
  • J. Peterson: Nice writeup. It looks like some of the formatting for your command examples needs some missing newlines?
  • Geert Jordaens: I'm not sure what kind of licensing I have to add since it is a fairly straight forward implementation of the adaptive Huffman Decoding. For...
  • erich: For anyone interested, I've added some c++ code for adaptive huffman decoding in the git repository.