USB IR Toy: Calculate sampling rates

in Infrared toy by Ian | 1 comment

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 in Infrared toy and tagged , , .

Comments

  1. Head over to the forum under a “Quick Question about Raw IO mode” for further discussion of Timer1 calculations.
    http://dangerousprototypes.com/forum/index.php?topic=448.0

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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