Just looking at the XMega datasheets, with a view to using an Xmega32 in a new project.
I was initially excited because the I/O ports can be programmed to act as open drain, with external puul-ups, which was exactly what I was after.
However, the set/clear/toggle OCx on compare feature, which I have found incredibly useful in the past(IR remotes, LANC etc.) seems to have been axed!
So now I'll have to manually set or clear the output in the ISR, which doesn't sound too bad, except that I'm hoping to squeeze 8 channels of bi-directional open drain comms onto the one AVR, and the set/clear/toggle OCx on compare allows for totally accurate and jitter free waveform generation. Manually setting or clearing the output will not.
Does anyone know if the event system can be used to set or clear a single output pin?
It doesn't look like it from my reading of the data, but I'd like to be wrong...
Later that same day:
OK, I now see that there is one single event that can be routed to pin 7 of one port. Crap.
Bring back the old style counter compare functions!
I'd use a Mega, but they don't have the open drain output capability(yes, I know you can fake it by setting the PORT bit low and changing the DDR bit, but not in counter compare hardware).