geartooth Hall effect sensor

n. A Hall effect sensor and a magnet packaged together for easy use in detecting the rotation of a gear. As each geartooth passes by the sensor, a pulse is output. A counter can be connected to count these pulses and software can then determine the speed of the gear's rotation.

general-purpose computer

n. A combination of computer hardware and software that serves as a general-purpose computing platform. PCs, Macs, and Unix workstations are the most popular modern examples. Contrast with embedded system. See also basic input/output system.

general-purpose I/O

n. Customizable input/output pins on a microcontroller. Abbreviated GPIO. By wiring the hardware appropriately and configuring the GPIO port in software, one pin can be used as input to read a switch, another as an output to control a status LED, and a pair to serve as clock and data for a serial EEPROM.


n. An unwanted, spurious logic pulse of very short duration. Any unwanted, erratic, and generally nonreproducible behavior of a system is termed a glitch. Most result from poor timing or bad combinatorial design.

A glitch is also the standard excuse for a single irreproducible failure. Experienced developers know that the phrase, "It must've just been a glitch," really means, "I have no idea what just happened, but maybe if I ignore it, the problem will go away." Unfortunately, it seldom does.

glue logic

n. The address decoding and other messy circuitry (or programmable logic) that ties together a system. It's called glue logic because it's what holds the entire system together.

GNU General Public License (GPL)

n. A specific set of copyright terms associated with free software from the GNU Project and other organizations. [more]

GNU tools

n. A broad generic name for the popular GNU compiler (gcc), debugger (gdb), binutils, and related software development tools.

Gray code

N. Any of several possible mappings of the integers from 0 to 2n-1 to a set of n-bit binary values such that only 1 bit differs between each successive binary value. The mapping that's typically used is formally known as binary reflected Gray code. Generating a set of that form involves starting with 0...000b and always flipping the rightmost bit that will give a new value.

Applications abound. Consider a shaft encoder with a 4-bit parallel output. Encoders use brushes or optical techniques to report position; these are mechanical and, therefore, imperfect implementations. An encoder that outputs normal binary, if positioned between 3 (0011b) and 4 (0100b), might dither with 3 bits changing. The processor might read (serially) 0011b (3), 0100b (4), or 0111b (7)—the latter a hugely incorrect value. If a Gray code is used, the data will dither between 0010b (3) and 0110b (4); the only possible values seen by the computer are those two, both of which are off by one from each other, and either of which is a reasonable approximation of the position.

EXAMPLE: n = 3: { 000b, 001b, 011b, 010b, 110b, 111b, 101b, 100b }

HISTORY: Named for Bell Labs engineer Frank Gray, who developed a binary reflected code for use in communication and later patented their use for shaft encoders in 1953, though such codes were known to others in the late 1800s.