********************************************* The Universal Serial Interface supplied with some of the ATtiny devices offers many options for communication with other devices and with a PC. When communicating with a PC the USI is configured to behave like a UART (the more usually supplied receiver transmitter block). Three means of clocking the USI are provided. A timer interrupt, and external clock or a software generated clock. The interrupt system enables two processes to run at the same time. Data transfer plus an underlying process that can be interrupted. Setting up the interrupts does however take a significant amount of time which limits the maximum speed at which data transfer can take place. The software generated clock simply waits for the clock pulse. No underlying process is possible but the maximum possible data speed is significantly higher. The external clock option probably offers the best of both world but has not been tested for this project. For many of us sending strings and user prompts to the PC and receiving individual keypresses from the keyboard, the SW clock may be the best option. An additional advantage is that in the absence of latency due to the interrupt the clock period can be set up simply and except for the highest speeds (~256000B) usually conforms with simple calculation.