Figured out how to have same current at the LEDs no matter how many are used; set pin even if bit received from Master is a 0. So now it always take the same amount of time to go through the loop. Post is updated:
http://www.picbasic.co.uk/forum/show...843#post124843
Used NPN 2N2222 transistors to drive the LEDs. So now I've moved the problem of the PIC having a pin frozen ON, to a transistor frozen ON. Not enough experience to know if it is worth the extra parts.
Transistors do bring another problem, it now takes a 100mA to drive all LEDs ON; a lot more than using the pin to LED to 0VDC technique. I don't know enough about transistors; I'm guessing it has something to do with switching times, I must have more than one still leaking current even if the PIC decided the pin is at 0VDC. LED loop is now running at 668 Hz according to Saleae probe.
I have no experience using LED driver ICs (none on hand). I have to research those; they must bring in safeguards and fewer parts count into the picture. Is one more interesting in particular?
The system will never have 32 LEDs ON, that was a stress test. Only one side can be lit at any one time, and that's if I disabled the zone or the zone is open; highly unlikely all 15 rows will be ON. SO current will not really be an issue, I was just hoping to get it as efficient as possible.
Also, the panel won't be active all the time. You'll have to press the * on the keyboard, that will help conserve current when using battery mode even more.
Robert
Sidenote: I had one LED that was always dimmer than the others. I changed pin, LED, even the transistor, no difference. Turns out the 4K7 resistor was way off (gold tolerance), replaced and LED now same as others. First time I get one of those that is so far off that it affects LED brightness this much.
Bookmarks