
68 MAKING THINGS TALK
Flow Control
You may notice that the paddles don’t move as smoothly onscreen as Monski’s arms
move. Sometimes the paddles seem not to move at all for a fraction of a second,
and sometimes they seem to lag behind the actions you’re taking. This is because
the communication between the two devices is asynchronous.
Although they agree on the rate at which data is
exchanged, it doesn’t mean that the receiving computer’s
program has to use the bits at the same time as they’re
sent. Monitoring the incoming bits is actually handled by
a dedicated hardware circuit, and the incoming bits are
stored in a memory buffer called the serial buffer until
the current program is ready to use them. Most personal
computers have a buffer that can hold a couple thousand
bytes. The program using the bits (Processing, in the
previous example) is handling a number of other tasks, like
redrawing the screen, handling the math that goes with it,
and sharing processor time with other programs through
the operating system. It may get bytes from the buffer less
than a hundred times a second, even though the bytes are
coming in much faster.
There’s another way to handle the communication
between the two devices that can alleviate this problem.
If Processing asks for data only when it needs it, and if
the microcontroller only sends one packet of data when
it gets a request for data, the two ...