We have seen this with serial communication (Section 5.1), SPI communication (Listing 6.3), and will see it again with I2C communication (Figure 9.3). This approach, called software polling, has three limitations. First,the processor is tied up during the transfer and cannot perform other tasks; ideally with a large data transfer (consider reading a data sector from an SD card), the transfer could be kicked off and the processor freed to perform other work while the transfer is realized. Second, the actual transfer rate is lower than the underlying hardware might permit. Finally, it is difficult to achieve tight timing bounds, for example, audio streaming depends upon the data samples to be transferred at a constant rate