|The meeting between the software
people and the electrical and mechanical engineers on the project goes well. The hardware people have already been
approached by the Fictitious Advanced Product Design Department (FAPDD) and have added several new features to
this coffee maker.
A relief valve to interrupt coffee
brewing, and a weight sensor in the coffeepot station are new. But most importantly to us is the microprocessor
control system. A state of the art microcontroller with Java 1.0 burnt into ROM, half a Meg of FLASH, half a Meg
of RAM and 32 GPIO pins.
Fabulous, we won't have to program
this thing in assembler [and all of the people watching over our shoulders will be able to actually run the code
from their Internet browser.] The electrical engineers will use the bottom most 8 GPIO pins for input from the
A/D converter to get the pressure sensor reading. The next 2 pins are input for the brew button and the water sensor.
The next 4 pins are output to the indicator light, warmer, boiler, and pressure relief valve in that order. The
top most 18 pins are unused.
Things are going well, then one
of the engineers asks a question: "What about the cancel brew function."
"We haven't heard anything
"Well, we talked to the FAPDD
guys and they don't want it but we could just add it easy enough."
"Any additional requirements
will effect our time to delivery date."
"But it won't cost you anything
to add it now, adding it later will."
"I don't think that is true.
If we add a cancel brewing function we will have to read the brew button during the brew cycle right?"
"Well yes, I suppose but you
were going to do that any way weren't you?"
"We don't know yet. Besides,
there is another issue. We would be required to debounce the switch."
"Weren't you going to debounce
the switch anyway?"
on Page 2.