Most (all?) serial protocols require the uC to generate a bitstream of data. the AVR chips obviously have that capacity built into the hardware as part of i2c, spi, usart, etc.
I'm wondering if there's a good way to use such a hardware-generated bitstream in software. It's easy enough to do so purely in software - pull the next byte from a buffer, loop on a counter, pulling out one bit at a time. But that's a lot of looping, maintaining counters, etc. Fair amount of clock cycles. Is there a faster way?
An application for this would be any sort of "other" serial based communication protocol - bitbanging, etc.