I am curious... when using I2C to communicate between an Arduino and a slave or multiple slaves or another Arduino, whatever the case, what other functions of the Arduino (if any) are unavailable for use or cannot be properly used, while I2C communication is going on?
What I mean by this is, I know for example that some features utilize certain hardware, like how the timers sometimes use interrupts or how evoking certain software commands like delay can use the timer hardware. In such cases, trying to use that hardware could screw up the first activity that was set up. My concern is that enabling 1 activity that uses a certain piece of hardware makes it impossible to simultaneously utilize a different piece of hardware that depends on the first.
So does using I2C communication mean you can't use something else at the same time? For that matter, if you've got a program that's using hardware interrupts, SPI, I2C and timers all at the same time, what is the bottleneck (what's the weak link that's going to break first) and is there a proper way to utilize multiple hardware features of the 328 without having them conflict with each other? Is there a guide on this anywhere to say what any given hardware feature will disable or screw up when you turn it on? Thanks.