WO1995031766A1 - Apparatus and method for interfacing a tactile input device to a computer system - Google Patents

Apparatus and method for interfacing a tactile input device to a computer system Download PDF

Info

Publication number
WO1995031766A1
WO1995031766A1 PCT/US1995/005842 US9505842W WO9531766A1 WO 1995031766 A1 WO1995031766 A1 WO 1995031766A1 US 9505842 W US9505842 W US 9505842W WO 9531766 A1 WO9531766 A1 WO 9531766A1
Authority
WO
WIPO (PCT)
Prior art keywords
input device
bus
computer system
microcontroller
touchpad
Prior art date
Application number
PCT/US1995/005842
Other languages
French (fr)
Inventor
Guillermo E. Narvaez
Gerald Katzung
Original Assignee
Apple Computer, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer, Inc. filed Critical Apple Computer, Inc.
Priority to AU25108/95A priority Critical patent/AU2510895A/en
Publication of WO1995031766A1 publication Critical patent/WO1995031766A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers

Definitions

  • the present invention pertains to the field of interface devices. More particularly, the present invention relates to a device for interfacing an input device to a computer system.
  • buttons are used to perform the desired selection functions. For example, a user can place a cursor over an icon displayed on the computer screen. Thereupon, the icon can be selected by clicking the button. This "point-and-click" feature has proven to be extremely popular and has gained wide acceptance.
  • Touchpads sense the inherent capacitance associated with a user's finger. Thereby, a cursor can be controlled according to the movement of a user's finger can control. In other words, a user can simply trace a finger across the touchpad to command the computer to drag the cursor across the screen to any desired location.
  • the trackpad has its own protocol and signaling scheme.
  • This protocol and signaling scheme might be either compatible or incompatible with that defined for the computer system.
  • some sort of an interface is often necessary in order for the trackpad to communicate with the computer system. In the past, this interface was usually incorporated internal to the computer system (e.g., either as an on-board controller or in the system ROM).
  • the present invention pertains to an interface circuit used to interface a touchpad device to a bus of a computer system.
  • a microcontroller translates signals corresponding to the touchpad device to a protocol recognized by the bus.
  • the microcontroller also translates signals corresponding to the bus to a format recognized by the touchpad device.
  • the microcontroller contains a buffer for temporarily storing communication information exchanged between the touchpad device and the computer system.
  • Bus signals are translated by the microcontroller into a format compatible with the touchpad device.
  • the microcontroller also converts signals generated by the touchpad device into a format acceptible to the bus protocol.
  • the data is stored in registers for retrieval by the computer system via the bus or from the touchpad.
  • the instructions describing how the various signals are to be translated is stored internal to the microcontroller.
  • Figure 1 shows the computer system upon which a preferred embodiment of the present invention is implemented.
  • Figure 2 shows a schematic of a circuit upon which the present invention may be practiced.
  • Figure 3 is a flowchart describing the steps for handling an interrupt service routine associated with an ADB protocol.
  • Figure 4 shows a flowchart describing the steps of the main event loop run by the touchpad.
  • Figure 5 shows a flowchart describing in detail the steps corresponding to the scan subroutine.
  • Figure 6 shows a flowchart describing the steps for performing the tracking subroutine.
  • Figure 7 shows a flowchart describing the steps for performing the filtering process.
  • Figure 8 shows a flowchart describing the steps for performing the resolution subroutine.
  • Computer system 100 is comprised of a bus or other communication means 101 for communicating information.
  • a microprocessor 102 is coupled with bus 101 for processing digital data.
  • Computer system 100 is further comprised of a random access memory (RAM) or some other dynamic storage device 104 (referred to as main memory), which is also coupled to bus 101.
  • Main memory 104 is used to store digital data and program instructions to be executed by processor 102.
  • Main memory 104 also may be used for storing temporary variables or other intermediate information during execution by processor 102.
  • Computer system 100 also includes a read only memory (ROM) and/or other static storage device 106 coupled to bus 101 for storing static information and instructions for processor 102.
  • ROM read only memory
  • Computer system 100 may further include a display device 121, such as a cathode ray tube (CRT) or liquid crystal display (LCD) coupled to bus 101 for displaying information to a computer user.
  • a display device 121 such as a cathode ray tube (CRT) or liquid crystal display (LCD) coupled to bus 101 for displaying information to a computer user.
  • An alphanumeric input device 122 e.g., a keyboard
  • An additional user input device which may be coupled to bus 101 is cursor control 123.
  • Input device 123 may take many different forms, such as a mouse, a trackball, stylus, touchpad, etc.
  • a microcontroller 126 is used to provide an interface between the cursor control 123 and bus 101.
  • Another device which may be coupled to bus 101 is hard copy device 124 which may be used for printing a hard copy on paper.
  • hard copy device 124 which may be used for printing a hard copy on paper.
  • computer system 100 is one of the Macintosh® family of personal or laptop computers such as the Macintosh® Quadra®, Performa®, Powerbook®, etc. brand personal computers manufactured by Apple® Computer, Inc.
  • Processor 102 is one of the 68000 families of microprocessors, such as the 68030 or 68040 manufactured by Motorola, Inc. of Schaumburg, Illinois.
  • FIG. 2 shows a schematic of a circuit upon which the present invention may be practiced.
  • a microcontroller 201 is used to interface between the touchpad and a bus, such a an Apple® Desktop Bus (ADB).
  • Microcontroller 201 is a commercially available chip, such as the MC68HC705P9 manufactured by Motorola Inc.
  • An oscillator circuit 202 is used to provide a clock signal for microcontroller 201.
  • Chip 203 e.g., MC34064 manufactured by Motorola Inc.
  • reset microcontroller 201 is used to reset microcontroller 201.
  • microcontroller 201 converts the bi-directional parallel signals generated by the touchpad on lines 204 into a format compatible with an ADB serial data stream protocol on line 205 and vice versa.
  • a touchpad coupled to connector 206 can communicate with a computer system coupled to connectors 207 and 208.
  • a number of pull-up resistors 209 are coupled to the touchpad lines 204.
  • Touchpad lines 204 are comprised of eight data lines, an address latch enable ALE line, a write line, a read hne, and an interrupt request IRQ line.
  • a switch 210 is used to signal the designation of a selected item. Switch 210 is coupled to microcontroller 201 via connector 211.
  • An input device to be coupled to a computer system's bus must identify its software with two constants: the default address and its Handler ID. These two constants uniquely identify an input device's software interface.
  • the default address specifies a device's general type (e.g., a relative pointing device, keyboard, etc.).
  • the Handler ID specifies the particular data protocol this device uses for communication.
  • the touchpad is assigned a default address of $03 and a Handler ID of $04. This same default address is also used for a mouse or a trackball.
  • a default address of $03 informs the computer system that this particular input device corresponds to a relative pointing device.
  • a Handler ID of $04 indicates to the computer system that the input device is capable of taking advantage of extended cursor features. By using this Handler ID, the touchpad can send the following information to the computer system: resolution, the number of buttons/switches, the device class, and a unique four- byte identifier.
  • the microcontroller is not on-board the computer system. Rather, it is externally connected to the computer system, and its functionality is transparent to the user. In this manner, a new input device (e.g., a new touchpad design) is readily connectable to older computer systems (e.g., older computer systems that observe an ADB protocol).
  • the cursor device manager operates on an interrupt basis.
  • the computer system can selectively poll the various input devices that are presently connected to the system. Essentially, the computer system is requesting these input devices to supply it with identification data. In addition, the computer system can send various commands to the input device. In other words, bi-directional communication between the computer system and the input device is handled via the microcontroller by an interrupt service routine.
  • Figure 3 is a flowchart describing the steps for handling an interrupt service routine associated with an ADB protocol.
  • the microcontroller enters the interrupt, step 301.
  • An ADB command is received, step 302.
  • the microcontroller determines whether the received command is valid, step 303.
  • the microcontroller If the received command happens to be invalid, the microcontroller returns from the interrupt with an error, step 321. Otherwise, the microcontroller determines whether the command was addressed to it, step 304. If the microcontroller was not addressed, the command is ignored and the microcontroller returns from the interrupt, step 321.
  • step 305 a determination is made as to whether the received command specifies that the microcontroller talk to Register 0.
  • Register 0 is used to store communication information that pertains to all of the different types of input devices (e.g., mouse, trackball, touchpad, etc.). If the microcontroller is commanded to talk to Register 0, then steps 306-308 are executed.
  • step 306 the pointer of the transmit TX buffer is checked to determine whether that buffer is currently empty.
  • the TX buffer is comprised of a first-in-first-out FIFO buffer. If there is no data 14
  • the microcontroller returns from the interrupt, step 321.
  • the TX buffer is not empty, the first two bytes in the TX buffer is sent over the ADB bus to the computer system, step 307. Thereupon, the data that had just been sent is removed from the TX buffer, step 308.
  • the microcontroller returns from the interrupt, step 321.
  • step 309 a determination is made as to whether the received command specifies that the microcontroller talk to Register 1.
  • Register 1 is used to store information pertaining to an extended ADB mode. Some examples of the information that can be stored in Register 1 include the device ID, the resolution, the class, the number of buttons, etc. If the command specifies that the microcontroller talk to Register 1, step 310 is performed. Otherwise, the process proceeds to step 311.
  • step 310 the information stored in Register 1 is sent over the ADB bus to the computer system. At the completion of this transmission, the microcontroller returns from the interrupt, step 321.
  • step 311 a determination is made as to whether the received command specifies that the microcontroller talk to Register 2. If so, step 312 is executed. Otherwise, the process proceeds to step 313. In step 312, a defined bank of touchpad parameters in Register 2 is sent to the computer system via the ADB bus. Thereupon, the microcontroller returns from the interrupt, step 321.
  • step 313 a determination is made as to whether the received command specifies that the microcontroller talk to Register 3. If so, step 314 is executed. Otherwise, the process proceeds to step 314.
  • step 314 the data stored in Register 3 is sent to the computer system via the ADB bus. Examples of data that can be stored in Register 3 include the Handler ED, data for resolving address conflicts, collision detection and resolution, etc. Once this data has been sent, the microcontroller returns from the interrupt, step 321.
  • steps 315-316 a determination is made as to whether the received command specifies that the microcontroller listen to Register 0 or 1. If so, the microcontroller returns from the interrupt, step 321. Otherwise, the process proceeds to step 317.
  • step 317 a determination is made as to whether the received command specifies that the microcontroller listen to Register 2. If so, the microcontroller takes the data supplied by the computer system on the ADB bus and loads it into Register 2. Some examples of the data that can be stored into Register 2 at the command of the computer system include smoothing parameters, filtering coefficients, Z-tracking threshold values, raw (X, Y, and Z) data, etc. Once this data has been loaded into Register 2, the microcontroller returns from the interrupt, step 321.
  • step 3 a determination is made as to whether the received command specifies that the microcontroller listen to Register 3.
  • Register 3 data may include a different Handler ED, enabling the interrupt service routine, a change in address, etc.
  • This data is supplied by the computer system via the ADB bus and stored in Register 3 by the microcontroller, step 320. Thereupon, the microcontroller returns from the interrupt, step 321.
  • a more detailed description of the ADB protocol and ADB interrupt service routine is described in the document entitled Inside Macintosh Hardware Reference Manual, which is incorporated by reference herein.
  • a main event loop Operating from the independent interrupt service routine is a main event loop.
  • This main event loop is continuously run by the touchpad.
  • Figure 4 shows a flowchart describing the steps of the main event loop run by the touchpad. Initially, the main event loop starts at phase 0 and sequentially progresses through phases 1-3. The present phase of the main event loop is determined by steps 401-404. If the main event loop is currently in phase 0 as determined by step 401, a scan subroutine is performed, step 405. The scan subroutine reads raw data from the touchpad. If the main event loop is in phase 1, a tracking subroutine is performed, step 406. It is the function of the tracking subroutine to determine whether the user's finger is pressing down on the touchpad.
  • a filtering process subroutine is performed, step 407. This filtering process smoothens the motion of the cursor as displayed on the computer screen. In addition, the filter process converts the input device from an absolute to a relative pointing device. If it is determined in step 404 that the main event loop is currently in phase 3, a resolution subroutine in performed, step 408. The function of the resolution subroutine is to set the resolution of the cursor movement in relation to the computer screen. At the completion of each of the subroutines corresponding to steps 405-408, the phase is incremented by 1. In step 409, a determination is made as to whether the phase is greater than 3 after it had just been incremented by 1. If so, the phase is set to 0, step 410. Step 401 is then repeated. Otherwise, the phase is not reset, and the main event loop repeats step 401.
  • FIG. 5 shows a flowchart describing in detail the steps corresponding to the scan subroutine.
  • the scan subroutine asserts the read line, reads in a byte of data, and repeats this cycle until all 6 bytes of raw data have been read. This process is described in steps 501-504.
  • step 501 a determination is made as to whether the touchpad has generated any new data. If there is no new data, the scan subroutine returns to the main event loop, step 504. Otherwise, the touchpad registers are read, and the data values are stuffed into the XLo, XHi, YLo, YHi, ZLo, and ZHi registers of the microcontroller, step 502. The phase is then incremented by 1, step 503. Thereupon, the scan subroutine is complete and the process returns to the main event loop, step 504.
  • FIG. 6 shows a flowchart describing the steps for performing the tracking subroutine.
  • a Z value of 0 indicates that the finger is not touching the touchpad. When the finger is fully pressed against the touchpad, the saturated Z value is 63.
  • a determination is then made as to whether the DeltaZ is greater than a threshold maximum DeltaZ value, step 603. If so, this indicates that tracking has been lost and steps 604-606 are performed.
  • the tracking flag is cleared.
  • the phase is also cleared, step 605.
  • the button is checked and any changes are posted as required, step 606. Thereupon, the tracking subroutine returns to the main event loop, step 616.
  • step 603 If it has been determined in step 603 that DeltaZ is not greater than the threshold maximum DeltaZ value, a determination is then made as to whether the tracking flag is set, step 607. If the tracking flag is not set, this indicates that tracking has not yet begun. Thereby, step 608-612 are performed. In step 608, a determination is made as to whether the average Z value is greater than a minimum threshold Z value. If so, this indicates that tracking has been established. Consequently, the tracking flag is set, step 609. In step 610 a determination is made as to whether the touchpad is square. If the touchpad is rectangular, the X value is scaled accordingly to compensate for a non-square pad, step 611. When the process reaches step 612, tracking is just beginning. Hence, the initial and average values of X, Y, and Z are set. These values will be used in the filtering process.
  • step 607 If it has been determined in step 607 that the tracking flag is set, this indicates that the touchpad had previously been tracking movement of the user's finger. In this case, steps 613- 615 are performed. Step 613 provides for Z axis hysteresis. If the average Z value does not exceed a minimal threshold hysteresis level, the tracking flag is cleared, step 614. In step 615, the phase is incremented by 1. Thereupon, the tracking subroutine returns to the main event loop, step 616.
  • FIG. 7 shows a flowchart describing the steps for performing the filtering process.
  • Steps 701 and 702 are used to compensate for a non-square touchpad.
  • the change in the X and Y values are calculated to determine the speed of the finger's movement, step 703.
  • the dX and dY values are calculated by taking the absolute value of the new X and Y values and subtracting the old X and Y values. The degree of filtering depends upon the speed.
  • Steps 704 and 705 determine whether the movement of the finger is relatively fast or slow. If the movement is relatively fast, a smaller filter value is loaded, step 706. Otherwise, for a slow moving finger, a larger filter value is loaded, step 707.
  • an averaging function is performed to determine the average X and Y values, step 708. It should be noted that the filtering process also converts the touchpad from an absolute to a relative pointing device. In step 709, the phase is incremented by 1, and the filtering process subroutine is returned to the main event loop, step 710. Note that the filtering process subroutine only runs when the finger is in contact with the touchpad.
  • Figure 8 shows a flowchart describing the steps for performing the resolution subroutine.
  • the speed of the finger movement is calculated by determining the change in X and Y values, step 801.
  • a determination is made as to whether there was a change in either the X or Y value, steps 802-803. If the X and Y values had not changed, this indicates that there was no movement. Hence, there is no new data to post and the phase is incremented by 1, step 807. Thereupon, the resolution subroutine returns back to the main event loop, step 808.
  • the dX value is clipped to prevent an overflow condition.
  • step 805 clips the dY value.
  • the dX and dY values are stored in the transmit buffer, step 806. Alternatively, the dX and dY values can be put in the button state and the buffer pointer is incremented. Thereupon, the phase is incremented and the resolution subroutine is returned to the main event loop, steps 807 and 808.

Abstract

A microcontroller for interfacing a touchpad device to a bus of a computer system. The micontroller translates signals corresponding to the touchpad device to a protocol recognized by the bus. In addition, the microcontroller also translates signals corresponding to the bus to a format recognized by the touchpad device. The microcontroller contains a buffer for temporarily storing communication information between the touchpad device and the computer system. Bus signals are translated into a format compatible with the touchpad device. Conversely, the microcontroller also converts signals generated by the touchpad into a format according to the bus protocol. This data is stored in registers for retrieval by the computer system via the bus or from the touchpad. The instructions describing how the various signals are to be translated is stored internal to the microcontroller.

Description

APPARATUS AND METHOD FOR INTERFACING A TACTILE INPUT DEVICE TO A COMPUTER SYSTEM
FIELD OF THE INVENTION
The present invention pertains to the field of interface devices. More particularly, the present invention relates to a device for interfacing an input device to a computer system.
BACKGROUND OF THE INVENTION
Presently, computer systems such as personal computers, workstations, laptops, notebook computers, etc. are experiencing ever increasing popularity due to their increased processing power, speed, versatility, and economy. With the virtual explosion in the number and the different types of computer systems, there has been a. corresponding degree of demand for input devices used to facilitate the human interaction with these computer systems. In the past, the primary input device simply consisted of a keyboard. The human operator entered data by typing on alpha-numeric, special function, and arrow keys from the keyboard. The entered data was usually displayed on a computer screen.
Subsequently, a more sophisticated and user-friendly interface encompassing the use of a cursor to perform editing and selection functions was developed. Typically, an input device coupled to the computer system is manipulated by the user to control the movement of the cursor on the display screen. One or more buttons are used to perform the desired selection functions. For example, a user can place a cursor over an icon displayed on the computer screen. Thereupon, the icon can be selected by clicking the button. This "point-and-click" feature has proven to be extremely popular and has gained wide acceptance.
There are several different types of input devices for controlling the cursor that are commercially available today. These input devices can take many different forms, such as a mouse, a trackball, a joystick, a writing pen, a stylus tablet, to name a few. One of the most promising and exciting new developments in the future of input devices is the use of touchpads. Touchpads sense the inherent capacitance associated with a user's finger. Thereby, a cursor can be controlled according to the movement of a user's finger can control. In other words, a user can simply trace a finger across the touchpad to command the computer to drag the cursor across the screen to any desired location.
Typically, the trackpad has its own protocol and signaling scheme. This protocol and signaling scheme might be either compatible or incompatible with that defined for the computer system. In any case, some sort of an interface is often necessary in order for the trackpad to communicate with the computer system. In the past, this interface was usually incorporated internal to the computer system (e.g., either as an on-board controller or in the system ROM).
There are several problems with incorporating the interface internal to the computer system. One problem is that once the hardware design for a new input device (e.g., a new trackpad for instance) has been completed, it needs to be programmed so that it is capable of communicating with the computer system for which it was designed. The problem is that it is very likely that this computer system is also currently in its own design stages. For example, since a tactile touchpad is ideally suited for use in laptop computer systems, it is sensible to co-design the touchpad at the same as the new laptop is being designed. This type of co-development results in a quicker time to market. However, the computer system might not be at the stage to where it is ready to accept, recognize or otherwise communicate with the touchpad. Another problem was that the new touchpad design might be incompatible with older model computer systems because the controllers in these older computer systems were not designed to accommodate the newer touchpad. Hence, there exists a need in the prior art for an apparatus and method for simulating an independent interface with the new computer system so that software development can progress. It would be preferable if such an apparatus and method also allows the new touchpad to operate with and upgrade the older computer systems.
SUMMARY OF THE INVENTION
The present invention pertains to an interface circuit used to interface a touchpad device to a bus of a computer system. In the currently preferred embodiment, a microcontroller translates signals corresponding to the touchpad device to a protocol recognized by the bus. In addition, the microcontroller also translates signals corresponding to the bus to a format recognized by the touchpad device. By implementing such a microcontroller, the touchpad device and the computer system can effectively communicate with each other, even though they have different signaling schemes and do not share a common protocol.
Basically, the microcontroller contains a buffer for temporarily storing communication information exchanged between the touchpad device and the computer system. Bus signals are translated by the microcontroller into a format compatible with the touchpad device. Conversely, the microcontroller also converts signals generated by the touchpad device into a format acceptible to the bus protocol. The data is stored in registers for retrieval by the computer system via the bus or from the touchpad. In the currently preferred embodiment, the instructions describing how the various signals are to be translated is stored internal to the microcontroller. BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
Figure 1 shows the computer system upon which a preferred embodiment of the present invention is implemented.
Figure 2 shows a schematic of a circuit upon which the present invention may be practiced.
Figure 3 is a flowchart describing the steps for handling an interrupt service routine associated with an ADB protocol.
Figure 4 shows a flowchart describing the steps of the main event loop run by the touchpad.
Figure 5 shows a flowchart describing in detail the steps corresponding to the scan subroutine.
Figure 6 shows a flowchart describing the steps for performing the tracking subroutine.
Figure 7 shows a flowchart describing the steps for performing the filtering process.
Figure 8 shows a flowchart describing the steps for performing the resolution subroutine.
DETAILED DESCRIPTION
An apparatus and method for interfacing an input device to a computer system is described. In the following description, for purposes of explanation, numerous specific details are set forth, such as conversion equations, scaling values, filtering values, etc., in order to provide a thorough understanding of the present invention. It will be obvious, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Referring to Figure 1, the computer system upon which a preferred embodiment of the present invention is implemented is shown as 100. Computer system 100 is comprised of a bus or other communication means 101 for communicating information. A microprocessor 102 is coupled with bus 101 for processing digital data. Computer system 100 is further comprised of a random access memory (RAM) or some other dynamic storage device 104 (referred to as main memory), which is also coupled to bus 101. Main memory 104 is used to store digital data and program instructions to be executed by processor 102. Main memory 104 also may be used for storing temporary variables or other intermediate information during execution by processor 102. Computer system 100 also includes a read only memory (ROM) and/or other static storage device 106 coupled to bus 101 for storing static information and instructions for processor 102. In addition, a data storage device 107 such as a magnetic disk or optical disk and its corresponding disk drive may also be included. Computer system 100 may further include a display device 121, such as a cathode ray tube (CRT) or liquid crystal display (LCD) coupled to bus 101 for displaying information to a computer user. An alphanumeric input device 122 (e.g., a keyboard) may also be coupled to bus 101 for commumcating information and command selections to processor 102. An additional user input device which may be coupled to bus 101 is cursor control 123. Input device 123 may take many different forms, such as a mouse, a trackball, stylus, touchpad, etc. A microcontroller 126 is used to provide an interface between the cursor control 123 and bus 101. Another device which may be coupled to bus 101 is hard copy device 124 which may be used for printing a hard copy on paper. It should be noted that any or all of the components of computer system 100 and associated hardware may be used in conjunction with the present invention. However, it is appreciated that any type of configuration of the system may be used for various purposes as the user requires. In the currently preferred embodiment, computer system 100 is one of the Macintosh® family of personal or laptop computers such as the Macintosh® Quadra®, Performa®, Powerbook®, etc. brand personal computers manufactured by Apple® Computer, Inc. of Cupertino, California (Apple, Macintosh, Quadra, Performa, and Powerbook are registered trademarks of Apple Computer, Inc.). Processor 102 is one of the 68000 families of microprocessors, such as the 68030 or 68040 manufactured by Motorola, Inc. of Schaumburg, Illinois.
Although the following description is in relation to a touchpad and a microcontroller, it will be appreciated that the present invention pertains to other types of input devices and can be implemented by a variety of different mechanisms. Figure 2 shows a schematic of a circuit upon which the present invention may be practiced. A microcontroller 201 is used to interface between the touchpad and a bus, such a an Apple® Desktop Bus (ADB). Microcontroller 201 is a commercially available chip, such as the MC68HC705P9 manufactured by Motorola Inc. An oscillator circuit 202 is used to provide a clock signal for microcontroller 201. Chip 203 (e.g., MC34064 manufactured by Motorola Inc.) is used to reset microcontroller 201. Basically, microcontroller 201 converts the bi-directional parallel signals generated by the touchpad on lines 204 into a format compatible with an ADB serial data stream protocol on line 205 and vice versa. Thereby, a touchpad coupled to connector 206 can communicate with a computer system coupled to connectors 207 and 208. A number of pull-up resistors 209 are coupled to the touchpad lines 204. Touchpad lines 204 are comprised of eight data lines, an address latch enable ALE line, a write line, a read hne, and an interrupt request IRQ line. A switch 210 is used to signal the designation of a selected item. Switch 210 is coupled to microcontroller 201 via connector 211.
An input device to be coupled to a computer system's bus, such as via an ADB protocol, must identify its software with two constants: the default address and its Handler ID. These two constants uniquely identify an input device's software interface. The default address specifies a device's general type (e.g., a relative pointing device, keyboard, etc.). The Handler ID specifies the particular data protocol this device uses for communication.
In the currently preferred embodiment, the touchpad is assigned a default address of $03 and a Handler ID of $04. This same default address is also used for a mouse or a trackball. A default address of $03 informs the computer system that this particular input device corresponds to a relative pointing device. A Handler ID of $04 indicates to the computer system that the input device is capable of taking advantage of extended cursor features. By using this Handler ID, the touchpad can send the following information to the computer system: resolution, the number of buttons/switches, the device class, and a unique four- byte identifier.
All of the above parameters are handled by the microcontroller for the input device. In one embodiment, the microcontroller is not on-board the computer system. Rather, it is externally connected to the computer system, and its functionality is transparent to the user. In this manner, a new input device (e.g., a new touchpad design) is readily connectable to older computer systems (e.g., older computer systems that observe an ADB protocol).
In the currently preferred embodiment, the cursor device manager operates on an interrupt basis. During an interrupt service routine, the computer system can selectively poll the various input devices that are presently connected to the system. Essentially, the computer system is requesting these input devices to supply it with identification data. In addition, the computer system can send various commands to the input device. In other words, bi-directional communication between the computer system and the input device is handled via the microcontroller by an interrupt service routine. Figure 3 is a flowchart describing the steps for handling an interrupt service routine associated with an ADB protocol. When commanded by the computer system, the microcontroller enters the interrupt, step 301. An ADB command is received, step 302. Thereupon, the microcontroller determines whether the received command is valid, step 303. If the received command happens to be invalid, the microcontroller returns from the interrupt with an error, step 321. Otherwise, the microcontroller determines whether the command was addressed to it, step 304. If the microcontroller was not addressed, the command is ignored and the microcontroller returns from the interrupt, step 321.
If, however, the microcontroller is being addressed, the microcontroller either talks or listens to one of the four ADB defined registers as specified by the command, steps 305-320. In step 305, a determination is made as to whether the received command specifies that the microcontroller talk to Register 0. Register 0 is used to store communication information that pertains to all of the different types of input devices (e.g., mouse, trackball, touchpad, etc.). If the microcontroller is commanded to talk to Register 0, then steps 306-308 are executed. In step 306, the pointer of the transmit TX buffer is checked to determine whether that buffer is currently empty. The TX buffer is comprised of a first-in-first-out FIFO buffer. If there is no data 14
in the TX buffer, the microcontroller returns from the interrupt, step 321. However, if the TX buffer is not empty, the first two bytes in the TX buffer is sent over the ADB bus to the computer system, step 307. Thereupon, the data that had just been sent is removed from the TX buffer, step 308. At the end of step 308, the microcontroller returns from the interrupt, step 321.
In step 309, a determination is made as to whether the received command specifies that the microcontroller talk to Register 1. Register 1 is used to store information pertaining to an extended ADB mode. Some examples of the information that can be stored in Register 1 include the device ID, the resolution, the class, the number of buttons, etc. If the command specifies that the microcontroller talk to Register 1, step 310 is performed. Otherwise, the process proceeds to step 311. In step 310, the information stored in Register 1 is sent over the ADB bus to the computer system. At the completion of this transmission, the microcontroller returns from the interrupt, step 321.
In step 311, a determination is made as to whether the received command specifies that the microcontroller talk to Register 2. If so, step 312 is executed. Otherwise, the process proceeds to step 313. In step 312, a defined bank of touchpad parameters in Register 2 is sent to the computer system via the ADB bus. Thereupon, the microcontroller returns from the interrupt, step 321.
In step 313, a determination is made as to whether the received command specifies that the microcontroller talk to Register 3. If so, step 314 is executed. Otherwise, the process proceeds to step 314. In step 314, the data stored in Register 3 is sent to the computer system via the ADB bus. Examples of data that can be stored in Register 3 include the Handler ED, data for resolving address conflicts, collision detection and resolution, etc. Once this data has been sent, the microcontroller returns from the interrupt, step 321.
In steps 315-316, a determination is made as to whether the received command specifies that the microcontroller listen to Register 0 or 1. If so, the microcontroller returns from the interrupt, step 321. Otherwise, the process proceeds to step 317.
In step 317, a determination is made as to whether the received command specifies that the microcontroller listen to Register 2. If so, the microcontroller takes the data supplied by the computer system on the ADB bus and loads it into Register 2. Some examples of the data that can be stored into Register 2 at the command of the computer system include smoothing parameters, filtering coefficients, Z-tracking threshold values, raw (X, Y, and Z) data, etc. Once this data has been loaded into Register 2, the microcontroller returns from the interrupt, step 321.
Finally, in step 3, a determination is made as to whether the received command specifies that the microcontroller listen to Register 3. This command is usually performed at boot-up. Register 3 data may include a different Handler ED, enabling the interrupt service routine, a change in address, etc. This data is supplied by the computer system via the ADB bus and stored in Register 3 by the microcontroller, step 320. Thereupon, the microcontroller returns from the interrupt, step 321. A more detailed description of the ADB protocol and ADB interrupt service routine is described in the document entitled Inside Macintosh Hardware Reference Manual, which is incorporated by reference herein.
Operating from the independent interrupt service routine is a main event loop. This main event loop is continuously run by the touchpad. Figure 4 shows a flowchart describing the steps of the main event loop run by the touchpad. Initially, the main event loop starts at phase 0 and sequentially progresses through phases 1-3. The present phase of the main event loop is determined by steps 401-404. If the main event loop is currently in phase 0 as determined by step 401, a scan subroutine is performed, step 405. The scan subroutine reads raw data from the touchpad. If the main event loop is in phase 1, a tracking subroutine is performed, step 406. It is the function of the tracking subroutine to determine whether the user's finger is pressing down on the touchpad. If it is determined in step 403 that the main event loop is in phase 2, a filtering process subroutine is performed, step 407. This filtering process smoothens the motion of the cursor as displayed on the computer screen. In addition, the filter process converts the input device from an absolute to a relative pointing device. If it is determined in step 404 that the main event loop is currently in phase 3, a resolution subroutine in performed, step 408. The function of the resolution subroutine is to set the resolution of the cursor movement in relation to the computer screen. At the completion of each of the subroutines corresponding to steps 405-408, the phase is incremented by 1. In step 409, a determination is made as to whether the phase is greater than 3 after it had just been incremented by 1. If so, the phase is set to 0, step 410. Step 401 is then repeated. Otherwise, the phase is not reset, and the main event loop repeats step 401.
Figure 5 shows a flowchart describing in detail the steps corresponding to the scan subroutine. Basically, the scan subroutine asserts the read line, reads in a byte of data, and repeats this cycle until all 6 bytes of raw data have been read. This process is described in steps 501-504. In step 501, a determination is made as to whether the touchpad has generated any new data. If there is no new data, the scan subroutine returns to the main event loop, step 504. Otherwise, the touchpad registers are read, and the data values are stuffed into the XLo, XHi, YLo, YHi, ZLo, and ZHi registers of the microcontroller, step 502. The phase is then incremented by 1, step 503. Thereupon, the scan subroutine is complete and the process returns to the main event loop, step 504.
Figure 6 shows a flowchart describing the steps for performing the tracking subroutine. A Z value of 0 indicates that the finger is not touching the touchpad. When the finger is fully pressed against the touchpad, the saturated Z value is 63. In step 601, the average Z value over the last N readings is calculated according to the formula AvgZ=*((2ΛZExpPwr-l)*01dAvgZ) + NewZ) » ZExpPwr. Next, the change in Z value is determined by the following equation, DeltaZ=abs(AvgZ-LastZ), step 602. A determination is then made as to whether the DeltaZ is greater than a threshold maximum DeltaZ value, step 603. If so, this indicates that tracking has been lost and steps 604-606 are performed. In step 604, the tracking flag is cleared. In addition, the phase is also cleared, step 605. The button is checked and any changes are posted as required, step 606. Thereupon, the tracking subroutine returns to the main event loop, step 616.
If it has been determined in step 603 that DeltaZ is not greater than the threshold maximum DeltaZ value, a determination is then made as to whether the tracking flag is set, step 607. If the tracking flag is not set, this indicates that tracking has not yet begun. Thereby, step 608-612 are performed. In step 608, a determination is made as to whether the average Z value is greater than a minimum threshold Z value. If so, this indicates that tracking has been established. Consequently, the tracking flag is set, step 609. In step 610 a determination is made as to whether the touchpad is square. If the touchpad is rectangular, the X value is scaled accordingly to compensate for a non-square pad, step 611. When the process reaches step 612, tracking is just beginning. Hence, the initial and average values of X, Y, and Z are set. These values will be used in the filtering process.
If it has been determined in step 607 that the tracking flag is set, this indicates that the touchpad had previously been tracking movement of the user's finger. In this case, steps 613- 615 are performed. Step 613 provides for Z axis hysteresis. If the average Z value does not exceed a minimal threshold hysteresis level, the tracking flag is cleared, step 614. In step 615, the phase is incremented by 1. Thereupon, the tracking subroutine returns to the main event loop, step 616.
Figure 7 shows a flowchart describing the steps for performing the filtering process. Steps 701 and 702 are used to compensate for a non-square touchpad. Next, the change in the X and Y values are calculated to determine the speed of the finger's movement, step 703. The dX and dY values are calculated by taking the absolute value of the new X and Y values and subtracting the old X and Y values. The degree of filtering depends upon the speed. Steps 704 and 705 determine whether the movement of the finger is relatively fast or slow. If the movement is relatively fast, a smaller filter value is loaded, step 706. Otherwise, for a slow moving finger, a larger filter value is loaded, step 707. Next, an averaging function is performed to determine the average X and Y values, step 708. It should be noted that the filtering process also converts the touchpad from an absolute to a relative pointing device. In step 709, the phase is incremented by 1, and the filtering process subroutine is returned to the main event loop, step 710. Note that the filtering process subroutine only runs when the finger is in contact with the touchpad.
Figure 8 shows a flowchart describing the steps for performing the resolution subroutine. Initially, the speed of the finger movement is calculated by determining the change in X and Y values, step 801. A determination is made as to whether there was a change in either the X or Y value, steps 802-803. If the X and Y values had not changed, this indicates that there was no movement. Hence, there is no new data to post and the phase is incremented by 1, step 807. Thereupon, the resolution subroutine returns back to the main event loop, step 808. In step 804, the dX value is clipped to prevent an overflow condition. Likewise, step 805 clips the dY value. Next, the dX and dY values are stored in the transmit buffer, step 806. Alternatively, the dX and dY values can be put in the button state and the buffer pointer is incremented. Thereupon, the phase is incremented and the resolution subroutine is returned to the main event loop, steps 807 and 808.

Claims

CLAIMSWhat is claimed is:
1. An interface circuit coupled to a tactile input device and to a bus of a computer system, wherein said interface circuit translates signals corresponding to said input device to a protocol recognized by said bus and said interface also translates signals corresponding to said bus to a format recognized by said input device, said interface circuit comprising: a first memory for temporarily storing communication information between said input device and said computer system; a processor for translating a bus signal into a format compatible with said input device, said processor also converting a input device signal into said bus protocol; a second memory for storing a set of instructions which is used by said processor for translation of said bus signal and said input device signal.
2. The interface circuit of Claim 1, wherein said first memory is comprised of a first-in-first-out buffer.
3. The interface circuit of Claim 1, wherein said interface circuit and said input device are external to an outer housing of said computer system.
4. The interface circuit of Claim 1 , wherein said communication information includes a device identification.
5. The interface circuit of Claim 4, wherein said communication information includes a number of buttons associated with said tactile input device.
6. The interface circuit of Claim 1 further comprising an interrupt circuit for detecting an interrupt service request generated by said computer system for initiating a transfer of said communication information.
7. The interface circuit of Claim 1 further comprising an absolute to relative motion converter that converts an absolute motion detected by said input device to a relative motion of a cursor displayed on a screen of said computer system.
8. The interface circuit of Claim 1, wherein said protocol of said bus is comprised of an ADB protocol.
9. The interface circuit of Claim 1, wherein said bus of said computer system is comprised of a serial bi-directional bus.
10. The interface circuit of Claim 8, wherein said signals corresponding to said input device is comprised of parallel digital data signals.
11. The interface circuit of Claim 1 , wherein said input device is comprised of a touchpad responsive to movement of a finger touching a surface of said touchpad.
12. The interface circuit of Claim 11, wherein said touchpad determines whether said finger is touching said surface of said touchpad.
13. In a computer system having a central processing unit, a main memory for storing computer programs, a bus coupling said central processing unit to said main memory, an input device, and an interface circuit coupled inbetween said bus and said input device, a method for interfacing a tactile input device to said bus, said method comprising the steps of: said interface circuit receiving an information signal from said input device; storing data corresponding to said information signal in a first register; receiving a request from said computer system for said data; said interface circuit generating a signal according to a protocol recognized by said bus for conveying said data to said bus of said computer system; transmitting said data to said computer system via said bus.
14. The method of Claim 13 further comprising the steps of: converting communication signals on said bus to a format recognized by said input device; storing communication information corresponding to said communication signals in a second register; said input device reading said second register.
15. The method of Claim 13 further comprising the step of externally coupling said input device to said bus of said computer system.
16. The method of Claim 13 further comprising the step of said input device supplying said interface circuit with a device identification, a resolution, and a number of buttons corresponding to said input device.
17. The method of Claim 13 further comprising the step of said computer system generating an interrupt service request for initiating a transfer of communication information generated by said input device.
18. The method of Claim 13 further comprising the step of converting an absolute motion detected by said input device to a relative motion of a cursor displayed on a screen of said computer system.
19. The method of Claim 13, wherein said protocol of said bus is comprised of an ADB protocol.
20. The method of Claim 13, wherein said input device is comprised of a touchpad responsive to movement of a finger touching a surface of said touchpad.
21. The method of Claim 20 further comprising the steps of: said touchpad determining whether said finger is touching said surface; said touchpad performing a filtering process on data corresponding to said movement of said finger.
22. A microcontroller for interfacing a tactile input device to a bus of a computer system, wherein said microcontroller translates signals corresponding to said input device to a protocol recognized by said bus and said microcontroller also translates signals corresponding to said bus to a format recognized by said input device, said microcontroller comprising: a buffer for temporarily storing communication information between said input device and said computer system; a processor for translating a bus signal into a format compatible with said input device, said processor also converting a input device signal into said bus protocol; a read only memory for storing a set of instructions which is used by said processor for translation of said bus signal and said input device signal.
23. The microcontroller of Claim 22, wherein said communication information includes a device identification and a number of buttons of said input device.
24. The microcontroller of Claim 22 further comprising an interrupt circuit for responding to an interrupt service request from said computer system for initiating a transfer of said communication information.
25. The microcontroller of Claim 22 further comprising an absolute to relative motion converter that converts an absolute motion detected by said input device to a relative motion of a cursor displayed on a screen of said computer system.
26. The microcontroller of Claim 22, wherein said protocol of said bus is comprised of an ADB protocol.
27. The microcontroller of Claim 22, wherein said input device is comprised of a touchpad responsive to movement of a finger touching a surface of said touchpad.
28. The microcontroller of Claim 27, wherein said touchpad determines a degree of pressure exerted downwards by said finger on said surface and performs a filtering process on data corresponding to said movement of said finger.
PCT/US1995/005842 1994-05-13 1995-05-10 Apparatus and method for interfacing a tactile input device to a computer system WO1995031766A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU25108/95A AU2510895A (en) 1994-05-13 1995-05-10 Apparatus and method for interfacing a tactile input device to a computer system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24253994A 1994-05-13 1994-05-13
US08/242,539 1994-05-13

Publications (1)

Publication Number Publication Date
WO1995031766A1 true WO1995031766A1 (en) 1995-11-23

Family

ID=22915181

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1995/005842 WO1995031766A1 (en) 1994-05-13 1995-05-10 Apparatus and method for interfacing a tactile input device to a computer system

Country Status (2)

Country Link
AU (1) AU2510895A (en)
WO (1) WO1995031766A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE43318E1 (en) 1997-08-28 2012-04-17 Flatworld Interactives, Llc User interface for removing an object from a display

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0224187A2 (en) * 1985-11-18 1987-06-03 F.H. Papenmeier GmbH & Co. KG Information collecting system for a data processing installation
US5376946A (en) * 1991-07-08 1994-12-27 Mikan; Peter J. Computer mouse simulator device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0224187A2 (en) * 1985-11-18 1987-06-03 F.H. Papenmeier GmbH & Co. KG Information collecting system for a data processing installation
US5376946A (en) * 1991-07-08 1994-12-27 Mikan; Peter J. Computer mouse simulator device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Flexible multiple touch screen interface", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 36, no. 4, NEW YORK, US, pages 31 - 34 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE43318E1 (en) 1997-08-28 2012-04-17 Flatworld Interactives, Llc User interface for removing an object from a display

Also Published As

Publication number Publication date
AU2510895A (en) 1995-12-05

Similar Documents

Publication Publication Date Title
US5469194A (en) Apparatus and method for providing different input device orientations of a computer system
US6930672B1 (en) Input processing method and input control apparatus
US5406307A (en) Data processing apparatus having simplified icon display
US7848825B2 (en) Master/slave mode for sensor processing devices
US6266050B1 (en) Portable computer having touch pad input control function
US5428367A (en) Computer mouse simulator having see-through touchscreen device and external electronic interface therefor
US5148155A (en) Computer with tablet input to standard programs
US5333273A (en) Protected hot key function for microprocessor-based computer system
KR970004523B1 (en) Personal computer system
US20030122774A1 (en) Input processing method and input processing device for implementing same
US4792896A (en) Storage controller emulator providing transparent resource sharing in a computer system
US6615299B1 (en) Dynamically translating commands from an input device into commands understandable by an application
EP2485152A1 (en) Plug and play peripheral storing driver
US5671443A (en) Direct memory access acceleration device for use in a data processing system
US20040027334A1 (en) Method for inputting commands in a keypad
US5455907A (en) Buffering digitizer data in a first-in first-out memory
JPH03196225A (en) Programmable interrupt controller
EP3477440A1 (en) Serial communication method and sensor controller
WO1995031766A1 (en) Apparatus and method for interfacing a tactile input device to a computer system
CN213069764U (en) Touch control equipment
EP1043650A2 (en) Help display method
CN112306914A (en) Information input device, method and storage medium
KR100503056B1 (en) Touch pad processing apparatus, method thereof and touch pad module in computer system
JP3122304B2 (en) Portable computer
JP2001034413A (en) Pen input system and pen input method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AM AT AT AU BB BG BR BY CA CH CN CZ CZ DE DE DK DK EE EE ES FI FI GB GE HU IS JP KE KG KP KR KZ LK LR LT LU LV MD MG MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SK TJ TM TT UA UZ VN

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): KE MW SD SZ UG AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: CA