>>overflow and needed to toggle that CREN bit? Also, I've read elsewhere that the data is in 8N2 value-- does that require any additional code to handle?

Ooops. So what I usually do is check for my break signal with the USART turned completely off. Then, when the break is detected, I turn on the USART and read RCIF twice, just to make sure it's totally empty.

Then, the next value that comes through is my start code.

Don't just throw it away, though! The official spec (well worth the $30 paid to the USITT) talks about how dimmer data has a zero start code, but not everything needs to. It's totally OK for a manufacturer to send 'proprietary' data after a non-zero code. So if you're just blindly accepting everything after the first byte as valid, you may get burned down the road.

Having said that, I've 'scoped the output of a GrandMA, a few different Hogs, a dozen or so ETC consoles, and some cheap throwaway DJ gear and never *not* found a zero start code...

With one exception. It made me so mad I vowed never to buy or use that particular company's equipment again. I'd programmed *my* receiving equipment to flash an error LED if the data stream had a non-zero code for some reason.... Grrrrrrr.

As an aside, if you tell your lighting controller to create a start code of, say, '10', only the 'proprietary' dimmers you've designed will work with that particular console. The marketing folks love that, because it fakes a case for using equipment only from one company.

>>I'm also wondering if having the UART enabled causes issues with then using PULSIN on the UART RX pin, PortC.7, and is the PULSIN polarity a 1 or a 0 for the break signal following the 75176?

After you've run the signal through the level shifter chip, you should see that the data line idles high. So you're watching for an active-low pulse of 80-120 uS.

And the bit about 8N2 vs 8N1 doesn't really matter, because the stop bits are both high. So 8N2 is just a slightly 'slower' version of 8N1. It makes lots more sense if you can see it on a 'scope.

So here's a loop in pseudocode:

1. With the USART off
2. Loop around until you find a decently long break

3. If you've found a break, turn the USART on and clear RCREG twice (it's double-buffered, according to the datasheet. So it can receive two bytes without overflowing)
4. When the RCIF flag is set, you've received a start code. Decide what you want to do with it.
5. Then start counting and grab the rest of the data you're interested in.
6. Turn off the USART

Hope this helps some.

Seriously, spend the $30 and get a copy of the DMX documentation. There's a lot of valuable design information included in what they'll send you.

John