Here's my scenario:
I'm using an AT90USB1286 (Teensy++ 2.0). I chose it because of the larger number of I/O pins and 4 (as opposed to only 2) interrupt pins.
I have two interrupt pins (0/SCL and 1/SDA) taken up by the I2C interface to a DS3231 TCXO/RTC. I have one interrupt pin (2/RX) taken up by the GSCLK pin on a TLC5940 LED driver chip. I am left with INT3 free with which to manage an Alps EC05E rotary encoder for input.
Every (good) example I've seen of interfacing a rotary encoder with an Arduino involves the use of two interrupt pins; I only have one interrupt pin left. What do I do? Do I settle for using one interrupt pin and only getting half-resolution on my encoder? (I have not tried this yet, but it has 12 detents with 12 pulses per detent, so I might still have enough resolution to be useful) Do I try to handle the rotary encoder without using interrupt pins? Can I utilise one of the many available PCINT pins?
I know I can't move the SCL/SDA pins to another pair, or else I2C won't work. Can I move the GSCLK pin from my TLC5940 to another pin and somehow make that work? To be honest, I'm not even completely sure why I need to use an interrupt pin with the GSCLK on the TLC5940, but it's working for now, so I don't want to change it.
Please keep this in mind: I'm using the TLC5940 library, the Wire (I2C/TWI) library, and I would like to use the last example from the Rotary Encoder [Arduino Playground] page http://www.arduino.cc/playground/Main/RotaryEncoders to manage my rotary encoder input...but I'll be ok without it, if there's a viable alternative that won't require using too much active CPU time, thus getting in the way of other things...
I'm willing to make adjustments to my setup and my methods of interfacing with these components, but being able to continue using the I2C and TLC5940 libraries would be fantastic.
I'm aware of I/O expanders that allow the triggering of interrupts, but the TLC5940 and accompanying UDN2982 chips (not to mention the 12x13 LED matrix, the DS3231, and the AT90USB1286) take up too much space in my project as it is, so adding another chip isn't really an option. If any proposed solutions can involve software changes or physical reconfiguration, I would appreciate it.
I'm just looking for options and ideas on what I can do.