WO1992007620A1 - Telemetry gain adjustment algorithm and signal strength indication in a noisy environment - Google Patents

Telemetry gain adjustment algorithm and signal strength indication in a noisy environment Download PDF

Info

Publication number
WO1992007620A1
WO1992007620A1 PCT/US1991/006663 US9106663W WO9207620A1 WO 1992007620 A1 WO1992007620 A1 WO 1992007620A1 US 9106663 W US9106663 W US 9106663W WO 9207620 A1 WO9207620 A1 WO 9207620A1
Authority
WO
WIPO (PCT)
Prior art keywords
gain
interval
gain value
signal
detect
Prior art date
Application number
PCT/US1991/006663
Other languages
French (fr)
Inventor
Michael S. Barsness
Original Assignee
Medtronic, 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 Medtronic, Inc. filed Critical Medtronic, Inc.
Publication of WO1992007620A1 publication Critical patent/WO1992007620A1/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61NELECTROTHERAPY; MAGNETOTHERAPY; RADIATION THERAPY; ULTRASOUND THERAPY
    • A61N1/00Electrotherapy; Circuits therefor
    • A61N1/18Applying electric currents by contact electrodes
    • A61N1/32Applying electric currents by contact electrodes alternating or intermittent currents
    • A61N1/36Applying electric currents by contact electrodes alternating or intermittent currents for stimulation
    • A61N1/372Arrangements in connection with the implantation of stimulators
    • A61N1/37211Means for communicating with stimulators
    • A61N1/37217Means for communicating with stimulators characterised by the communication link, e.g. acoustic or tactile
    • A61N1/37223Circuits for electromagnetic coupling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S128/00Surgery
    • Y10S128/901Suppression of noise in electric signal
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S128/00Surgery
    • Y10S128/903Radio telemetry

Definitions

  • This invention relates to a method and apparatus for controlling the gain of an RF amplifier in response to noise, missing pulses or signal loss and providing a real-time indication of the RF telemetry signal strength to the user of a medical device programmer.
  • Such current medical devices are designed to provide two-way telemetry by radio frequency signal transmission between the implanted device and the programming head or wand of the external programmer to provide for the exchange of binary-coded transmitted information to enable the aforementioned programming by telemetry-in and the reading out of data stored in the device by telemetry-out.
  • the Medtronic U.S. Patent No. 4,253,466 describes an implantable digital, programmable, cardiac pacemaker pulse generator which may be programmed by the programmer described in Medtronic U.S. Patent No. 4,250,884, both incorporated herein by reference.
  • Such programmers as disclosed in the '884 patent are microprocessor-based and menu-driven under an overall operating routine and subroutines. Such programmers display operating conditions, commands and error messages to prompt the user in the proper use of the programming system.
  • the system of the '466 and "884 patent sets forth the software-controlled programming of a series of Medtronice pacemakers, but it does not describe the telemetry-out on command of the external programmer of the programmed commands, electrogram, end-of-life indicators and the like that have been developed and implemented in subsequent programming systems.
  • Model 9710A or 9710E programming system (hereinafter the Model 9710 system) is depicted.
  • the programmer 10 printer 12, programming head 14 and ECG cable and electrode leads assembly 16 is depicted in a simplified form.
  • the MemoryMod cartridge is installed in programmer 10 which
  • TITUTE SHEET includes within its case the micro-processor based computing system, an LCD display, a keyboard, and an AC or battery power supply.
  • the programmer 10 is connected to a printer 12 in order to provide a printed record of values programmed into the implanted device or received from the implanted device or ECG cable and electrode leads assembly.
  • Compatible Medtronic printers include the Model 9712 printer and the Model 9751 system enhancement module high-speed printer.
  • the programming head 14 must be connected for all programming and telemetry functions to the programmer 10 and will be described in greater detail hereafter.
  • the ECG cable and electrode leads assembly 16 is required for the functions that detect the electrocardiogram and/or pacemaker signals via skin electrodes, including the "automatic threshold,” “measure,” and programming confirmation by way of the program confirmation indicator emitted by the pacemaker (as an alternative to confirmation by telemetry) .
  • the processing of input commands applied by way of the keyboard on the programmer to the programming system, the formatting of data for telemetry via the programming head 14, and the processing of signals picked up from skin electrodes via ECG cable and electrode leads 16 is under the control of the software contained within the MemoryMod cartridge.
  • the programming head 14 may comprise the Medtronic Model 9713 or 9713D programming head.
  • the ECG cable and electrode leads assembly 16 is depicted attached via disposable skin electrodes 18 to a patient's chest.
  • the ECG cable and patient electrodes depicted in Figure 2 are required for programmer functions requiring detection of cardiac and pacemaker signals as mentioned hereinbefore.
  • the system may be used without the assembly 16 to program data into the implanted pacemaker or interrogate the pacemaker to telemetry-out program values and data.
  • confirmation of a programming transmission occurs by automatic transfer of data via telemetry-out.
  • Use of the ECG cable and electrode leads assembly 16 is not required for programming confirmation with these devices.
  • PCI program confirmation indicator
  • 4,556,063 (incorporated herein by reference) describes such a system for telemetering out both digital and analog data.
  • the programming head 14 In order to initiate and complete all programming and telemetry functions, the programming head 14 must be properly positioned over the pulse generator so that the
  • FIG 3 depicts the positioning of the programming head 14 against the patient's skin overlying the implanted pulse generator. The optimum positioning of thelprogramming head over the implanted pulse generator 20 is depicted in Figure 4.
  • the POSITION HEAD indicator LED 22 lights up and remains lit until a telemetry link is established between the telemetry head 14 and the implanted device 20.
  • the indicator LED 22 goes out to indicate when the programming head is properly positioned over the implanted house generator 20.
  • the programming head 14 must be positioned so that the POSITION HEAD indicators go out.
  • the POSITION HEAD indicator is periodically flashed each time the programmer 10 receives an invalid interval and adjusts the telemetry signal sensitivity for best reception. If the telemetery link is lost due to programming head reposition or interference, the indicator LED 22 comes on steadily. While the POSITION HEAD indicator LED 22 is on, the programming head 14 may emit a radio frequency "search" signal used to establish a telemetry link with a pulse generator 20. It is desirable to avoid prolonged application of the RF search signal since the search signal can be sensed by the pulse generator and could occasionally cause unintentional inhibition or triggering of the pulse generator 20.
  • the pulse generator 20 contains a reed switch responsive to the externally applied magnetic field of the programmer head 14 and an RF signal transceiver circuit for receiving, amplifying and processing telemetered-in programming or interrogation commands. Actuation of the pulse generator reed switch and signal transmission and reception is affected by the programming head position and ' its distance from the pulse generator 20.
  • the presence of electrical interference or noise strong enough to interrupt reception of telemetry from the implanted pulse generator can affect operation of the POSITION HEAD indicator lights and telemetry functions, including programming confirmation. In such cases, the POSITION HEAD indicator LED 22 may not go out, or a "TOO MUCH INTERFERENCE” or "NO TELEMETRY" message may appear in
  • the Model 9713D programming head is provided with a _manually-controlled, five-position, telemetry receiver gain control.
  • the instructions for use with the Model 9713D programming head indicate that in the initial operation of the programmer, the gain control should be set to its highest gain to provide the most sensitive setting. However, if the POSITION HEAD indicator lights did not go out, and if several repositions of the programming head are unsuccessful, then the user is instructed in the physician's manual to reduce the receiver sensitivity by turning the gain control to a lower setting and again repositioning the programming head for each gain setting until a setting is found that provides proper operation.
  • the RF telemetry pulse signal is centered at 175 kHz with a band width of 25 kHz.
  • the RF signals are pulse-interval modulated with a "1" or "0" interval value. These intervals are monitored on a continuous basis by one of the processors in the programmer. If any valid interval is detected as within the valid range (732 + 15% micro-seconds for a binary "0" and 1098 + 15% micro-seconds for a binary "1”) , a flag is set indicating this state. If any interval is received outside of the valid ranges, the flag is reset. Once every 250 ms., another processor within the programmer examines the contents of this flag.
  • the POSITION HEAD LED 22 is turned off. If the flag indicated an invalid collected interval, the LED 22 would be turned on. This POSITION HEAD indicator LED 22 is used by physicians to validate the condition of the link prior to requesting information from the IPG. The information uplinked by telemetry from the implanted pulse generator 20 lasts 300 m ⁇ ., while the test to determine the
  • SHEET validity of the link checks lasts 1 ms. and indicates a good or bad telemetry link, depending on the state of the single collected interval prior to the most recent 250 ms. check.
  • the old algorithm set the automatic gain control at maximum to start telemetry-in and operated in an essentially uni-directional fashion to decrease the maximum gain under certain conditions to be described hereinafter.
  • the old algorithm disadvantageously tended to leave the system operating at high gain and thus susceptible to the detection of noise in a noisy environment.
  • the prior system provided the user with the POSITION HEAD LED 22 and two visual commands, or prompts, in response to weak or noisy signal reception from the implanted pulse generator 20. It would be desirable to provide the physician with a more effective automatic gain control algorithm and with a more precise indication of signal strength in relation to the then prevailing AGC setting, in order to ascertain the cause of difficulties in programming or telemetry.
  • the invention comprises a software-controlled, external programmer for transcutaneously programming and receiving data from an implanted medical device providing a real-time indication of the implanted medical device RF telemetry signal strength to the user of the device programmer while automatically optimizing gain level to minimize interference in the presence of noise.
  • the method and apparatus involves monitoring the validity of received intervals or frames uplinked from the implanted medical device to adjust the gain of the RF amplifier in a pre-deter ined range. When noise is detected, indicating a relatively small signal-to-noise ratio, the automatic gain control (AGC) level is decreased, effectively tracking this condition. Similarly, lack of any signal or loss of individual RF pulses causes the AGC level to be increased.
  • the signal strength algorithm utilizes this real-time monitoring of signal integrity and signal-to-noise ratio to provide an indication to the user.
  • a secondary factor is included to provide stability of link factor to the signal strength indication to decrease it in the event that a significant quantity of momentary link instabilities are detected.
  • the telemetry gain adjustment algorithm begins operation at minimum signal level, increasing gain value every 45 ms. until a maximum gain level is reached. When at maximum, the gain is reset to minimum, restarting the search. When valid telemetry signals are received, the gain is stabilized for the duration of uplink telemetry transmission.
  • Figure 1 depicts the programmer system hardware of the prior art in which the software implemented, automatic gain control and sensitivity indicator of the present invention may be implemented;
  • Figure 2 depicts the connection of the programmer of Figure 1 to skin electrodes through the ECG cable and electrode leads;
  • Figure 3 depicts the positioning of the programming head over the implanted pulse generator and the indicator light LED for indicating proper position for both programming in and telemetry-out from the implanted pulse generator;
  • Figure 4 depicts the optimum programming head position in relation to the implanted pulse generator
  • Figure 5 depicts in block diagram form the receiver stages within the programmer depicted in Figure 1 for receiving programming confirmation and telemetered-out data;
  • Figure 6 depicts data bit and frame telemetry formats of down and uplink-telemetered data
  • Figure 7 depicts the RF signal at the high gain setting of the automatic gain control typically achieved by the old algorithm in a relatively normal background noise environment
  • Figure 8 depicts the RF signal at the low gain setting of the automatic gain control typically achieved by the new algorithm in a relatively normal background noise environment
  • Figure 9 depicts the step-wise adjustment of gain in accordance with the old and new algorithms
  • Figure 10 is a flow chart of the new algorithm for automatically adjusting the gain control
  • SUBSTITUTE SHEET Figure 11 is a modified flow chart of the new algorithm of Figure 10 usable with data frame telemetry format.
  • Figure 12 is a flow chart of the new algorithm for providing the signal strength alphanumeric display.
  • the present invention comprises an improvement in the automatic gain control of an amplification stage of the uplink or telemetry-out circuitry of the programmer system of Figure 1-4, wherein the improvement is implemented in software, as well as the provision of a signal strength indicator for providing the user with a visual alpha-numeric readout of the prevailing signal strength during uplink telemetry.
  • the prevailing signal strength is derived from the automatic gain control factor developed at the point when the minimum gain is set.
  • Model 9710 receive system block diagram depicted therein provides a simplified representation of the automatic gain control and associated circuitry.
  • the block diagram of Figure 5 shows the interrelationship of the variable gain amplification stage and microprocessor in the programmer 10 with the radio frequency programming head 14 and printer 12.
  • the programmer 10 includes the 1 to 40 adjustable gain amplification stage 30 which receives its input signals from RF head 14 during uplink telemetry, amplifies those signals in accordance with the gain factor and applies those signals through 175 kHz band pass filter 32 to fixed amplifier 34.
  • the total gain of the system at the output of fixed amplifier 34 varies between 175 and 7,000.
  • the amplified gain signals are applied to a mixer stage 36 and detector 38 which compares the amplified signal to a 1.6 volt reference 40 and provides an output signal when the amplified and filtered signal exceeds the reference.
  • SUBSTITUTE SHEE- The output signal is applied to one-shot 42 to develop an interrupt signal applied to a flag input of a peripheral processing unit (PPU) microprocessor 44 which is used in the Model 9710 to process the RF burst transmitted by the IPG.
  • PPU peripheral processing unit
  • This processor 44 is interrupted each time an RF burst is detected.
  • the PPU microprocessor 44 is in an "idle" mode. In this mode, interrupts are enabled, and the function of the PPU under software control of Figures 10 or 11 is to adjust the automatic gain value provided by the digital current source 46 to maintain a sufficient signal level for future communications. This automatic gain value controls the gain of the RF amplifier in 2 dB steps.
  • the PPU under software control of Figure 12 develops and provides the signal strength indication that is displayed on the programmer LCD to assist the user in positioning the programming head over the pulse generator. Once valid uplink telemetry intervals are detected, the gain and signal strength values are frozen and the system shifts operation from the idle or acquisition mode to the uplink telemetry mode for receiving and processing bit or frame-format data.
  • MPU main processing unit
  • the RF burst pulse (centered at 175 kHz) is detected by detector 38 and is also filtered in filter 48 and transmitted to the printer 12.
  • the one-shot 50 develops a further signal applied to a resident microprocessor 52 for processing in order to provide a print out if commanded to do so by instructions entered in the keyboard of programmer 10.
  • Figure 6 a bit-based and frame-based telemetry format for uplink and downlink telemetry is generally depicted in the two top-most sections of the drawing.
  • the down and uplink data transmission format for both the bit-based and frame-based telemetry formats is shown in the lower portion of Figure 6.
  • SUBSTITUTE SHEET telemetry format is to be distinguished from the frame-based telemetry format to be described hereinafter.
  • the new automatic gain control and signal strength indication algorithms of the present invention may be implemented with either telemetry format in a fashion described hereinafter.
  • the down and uplink telemetry transmission format involves the transmission of hundreds of frame or data bits in each block labeled "TX,” "RX No. 1" and "RX No. 2.”
  • the external programmer transmits by downlink telemetry an interrogate command or a programming command which is followed by the uplink telemetry of the data stream from the implanted pulse generator in blocks RX No. 1 and RX No. 2.
  • the implanted pulse generator transmits out the data in block RX No. 1 and then repeats the same transmission in block RX No. 2, so that the external programmer can compare the two data streams for error detection.
  • Th,e bit-based data transmission of ones and zeros is illustrated immediately above the down and uplink data transmission format illustration of Figure 6.
  • the data bits "1" and "0" are represented by intervals between 175 kHz RF burst of 1,098 and 732 micro-seconds (plus or minus 15% tolerances) , respectively.
  • the automatic gain control algorithm of the present invention compares the 1,098 and 732 micro-second intervals against intervals between received signals to determine whether or not the received signals represent noise or valid data bits in a manner to be described hereafter.
  • An illustration of one frame of frame-based data transmission appears immediately above the illustration of the intervals between data bits.
  • the frame-based telemetry format consists of individual frames of uplink telemetry RF pulses that convey data by pulse position modulation. Each valid frame is 1.95 ms in length and contains five intervals between the leading RF sync pulses which bound the individual frames.
  • a valid frame possesses a first sync interval between two RF pulses equal to 122 micro-seconds.
  • the next interval is a "dead" zone of 152 + micro-seconds.
  • the next inverval may vary in length from 0 to 305 micro-seconds in 30.5 micro second steps, identifying the type of data (ID) transmitted.
  • ID type of data
  • the actual detected interval is normalized to the beginning of the ID field and divided by the 30.5 micro-second clock to yield a value from 0 to 10.
  • LSN and MSN field intervals are normalized to the beginning of each respective field and divided by 30.5 to develop a value between zero and fifteen.
  • the last 152 micro-second interval fills out the frame length to 1.95 ms. Within each 1.95 ms. frame there should be 5 intervals separated by 175 kHz signals.
  • the cross-referenced '407 application describes the frame format telemetry in greater detail. For purposes of this application, the programmer is required to be able to detect and decode both bit based and frame based data streams since both are presently employed in earlier and more recent generation implanted pulse generators.
  • Figures 7 and 8 depict representations of the RF uplink telemetry signals in the presence of noise at high gain and low gain, respectively.
  • the typical noisy signal at high gain is depicted in Figure 7 and contains high amplitude, closely- spaced noise excursions of virtually equal amplitude to the 175 kHz RF burst pulses depicted at A,B, and C.
  • each noise impulse would be confused with a 175 kHz RF telemetry burst, and the pulse interval modulated telemetered signal could not be
  • the typical low gain signal depicted in Figure 8 provides adequate signal amplitude differentiation to discriminate the RF transmitted burst pulses from background noise and to decode either the bit or frame formatted, pulse-interval modulated data transmitted from the implanted pacemaker.
  • the new algorithm of the present invention seeks to maintain the gain at or near the low gain setting rather than at the highest gain possible in the presence of noise.
  • implanted pacemaker pulse generators of the type described in the aforementioned U.S. Patent No. 4,556,063, provide RF telemetry-out signals in the 250 to 300 v peak-to-peak range, assuming a two-inch gap between the implanted pulse generator 20 and the programming head 14 arranged as depicted in Figure 4.
  • the minimum threshold necessary to ensure reliable detection is approximately 300-320 mv peak-to-peak.
  • the output of the gain amplifier 30 of Figure 5 clips at a level of about 500 mv peak-to-peak. This level is attained with the lowest output implantable pulse generator at a gain value of about 5 in a range of 0 to 9.
  • the new software algorithm limits the gain to a value of about 7. This value allows ample signal strength for even the lowest output implantable pulse generator without allowing the gain to exceed the noise threshold in a "normal" operating environment.
  • the prior art manually adjusted gain control and software implemented automatic gain control was set to the maximum gain during the idle mode to facilitate the early acquisition of the RF uplinked telemetry signal and to minimize the amount of time it took to reposition the programming head 14 in relation to the implanted pulse generator 20 of Figures 3 an 4.
  • an RF signal could not be distinguished from low level noise as shown in the typical signal depicted in Figure 7, and time is lost as the user searched for a lower gain valve which can distinguish noise from the telemetry signal.
  • This old algorithm could not increase the gain level incrementally, because it had no detection mechanism for bit-level dropouts. It could only detect long signal loss intervals of greater than 98 ms. and would jump back to high gain under this condition. Using this method, the gain would stabilize at a level just below the noise threshold. At this level, occasional noise hits are probable, and if they occur at an interval greater than 8 ms. , they will cause uplink message corruption with no subsequent gain adjustment.
  • the new automatic gain control and algorithm of the present invention employs linear attack and decay characteristics. Initially, in the "idle" or acquisition mode, the automatic gain control value is set at zero gain and steps through the gain range in a 2db increment stair-step pattern. When the high gain limit is reached (software selectable) , the search starts over at zero gain again. Thus, in the idle mode, the automatic gain control gain value rapidly increases and decreases as shown in the bottom curve of Figure 9 in the search for a hit on a transmitted RF pulse signal.
  • FIG 10 a first embodiment of the new AGC algorithm of the present invention usable with the bit-based telemetry format is depicted in simplified fashion.
  • the program is started upon command of the PPU microprocessor within programmer 10 and in the idle mode, that is, in the absence of any detected RF data or noise signals, the gain cycles between 0 and 7 (maximum) through the loop comprising blocks 70-80.
  • a 45 ms. timer 72 is started, and if no telemetry signal is sensed within the 45 ms. time period, then the link status flag is set to "BAD" in block 75 and the gain is incremented in block 76 by one step.
  • decision block 78 commands block 80 to reset the gain to minimum.
  • This sequence is depicted in Figure 9 in regard to the lower gain curve depicting the behavior of the automatic gain control circuit in the idle mode. As long as the gain is not at its maximum value, the 45 ms. timer is restarted at block 72, and the gain is incremented.
  • the state of the link status flag (BAD or GOOD) is employed in the signal strength algorithm of Figure 12.
  • interrupts are generated in block 82.
  • the invervals between interrupts are measured in block 84 and compared to a further interval of "1 MAX" which exceeds the binary "1" and "0" intervals in decision block 86. If the measured interval is greater than the 1 MAX interval, then the gain is again incremented in block 76. Again the increased gain is compared to the maximum gain in decision block 78 and once maximum gain is reached, the gain is reset to a selectable minimum in block 80.
  • the interval "t” is compared to the interval representing a binary "1" in decision block 88. If the measured interval "t” is equal to a valid "1”, then the bit is processed in block 96 and the program loops back to START. If the measured interval "t" is not equal to a valid
  • the link status is set BAD in block 92 and the gain is decremented by one step in block 100. But if the measured interval falls within the binary "0" interval as determined in decision block 102, then the gain is neither incremented nor decremented in accordance with the new algorithm.
  • the link status flag is set to "GOOD” in block 94, the "0" bit is
  • SUBSTITUTE SHEET processed in block 96 and the program loops back to START. If the measured interval "t" is determined to be less than a binary "0" interval in block 102, then the link status flag is set BAD in block 92 and the gain is decreased in block 100. In decision block 104, the gain is compared to the minimum gain, and if the decreased gain is less than the minimum gain, then the gain is set to the selectable minimum gain in block 106 and the program loops back to START. Once a requisite number of sequential data bits are successfully processed in block 96, the uplink telemetry of the data is enabled and the gain is no longer adjusted as the algorithm of Figure 10 is disabled.
  • FIG. 11 the flow chart of Figure 10 is modified therein to process frame-based rather than bit-based telemetry data.
  • the modification starts at block 84 and loops back to the START block 70 and thus replaces blocks 86-106 of Figure 10.
  • the algorithm steps through blocks 70-84 of Figure 10, and if no signal is received in 45 ms., the link status flag is set BAD in block 75 and gain is increased in blocks 76, 78, 80. If a signal is detected within 45 ms. then the interval is measured in block 84 and the measured interval is compared to a 2 ms. interval (greater than the frame length) in decision block 108. If the interval is greater than 2 ms. then the link status flag is set BAD in block 109 and the gain is increased in blocks 110, 112, 114.
  • the program moves to decision block 116 where the interval is compared to the preset sync interval depicted in Figure 6. If the sync interval is not matched or is not expected in decision block 118, then the program moves to set the link status flag BAD in block 119 and to the decrease gain loop comprising blocks 120, 122 and 124. However, if the sync interval is matched, the program moves to examine the proper number of intervals between sync intervals in blocks 126, 128 and 130. In block 126, the successive intervals between sync intervals are counted and if two many intervals are detected (more than 5) , decision block 128 concludes that the gain is too high and moves to the decrease gain loop starting at block 119.
  • the gain is decreased in block 120 and compared to the minimum gain in block 122. If the decrease gain is less than the minimum gain, then the gain is set at minimum in block 124.
  • the gain is increased in block 110 and compared to the maximum gain in block 118. If the maximum gain is reached, then the gain is set to minimum in block 114 and the program loops back to start.
  • bit-based and frame-based flow charts and software respond to noise by decreasing gain and to signal drop-out by
  • t is the inverval between detected 175 kHz RF signals.
  • uplink telemetry and storage of the telemetered intervals is enabled for decoding and display.
  • noise signals may still get through, but the gain will not be changed.
  • the algorithm measures each interval t, stores successive intervals and continuously sums the stored intervals t 0 , t lf t 2 and compares the sums to the 0 and 1 intervals (in bit-based telemetry) . If the sums match a 0 or 1 bit interval, then the uplink is accepted.
  • the strength of the telemetry signal is indicated to the user employing the algorithms of Figures 10 or 11 and Figure 12 and as set forth in the software listing appended hereto as Appendix A.
  • SIGNAL the word "SIGNAL” followed by a value from zero (minimum) to nine (maximum) appears on the left side of the display under "MODE.” The value decreases if the signal is interrupted by electrical interference. This information is not available momentarily while the programmer is processing other commands or information.
  • the signal strength algorithm utilizes the real time monitoring of noise or signal drop-out which effects a decrease or increase in the AGC level or value during the idle or acquisition mode, thereby providing real time monitoring of signal integrity and signal-to-noise ratio to provide an indication to the user. Since the AGC value is lowest for maximum signal level and highest for minimum level, the value is complemented for use as a signal strength indicator to the user.
  • a secondary factor is included to provide a stability-of-link factor to the signal strength indication.
  • the "GOOD” or “BAD” status of the link is checked. This link status is used to turn off the "position head” LED on the front of the programmer or programmer head.
  • a stability factor is adjusted based on this instantaneous check of link status. The factor is made more negative when the link check status is BAD and more positive when GOOD.
  • the stability factor is a function of the number of good frames or bits received over time versus the number of bad frames or bits received over a similar period.
  • the stability factor is increased by a fixed value.
  • the stability factor is reduced by a larger, also fixed value.
  • SUBSTITUTE SHEET back up to its maximum corresponding with the gain value, complemented plus 2. If there are a significant number of momentary link instabilities indicated by the stability factor, the resulting signal strength value is reduced, ultimately to 0. If those instabilities diminish, the signal strength level will increase. The maximum displayed signal strength level will then correspond with the complement of the AGC value plus 2 or 9.
  • the displayed range of signal strength could be artificially adjusted to other values, 0 through 100 for instance, by scaling AGC instability factors accordingly.
  • the values correspond with AGC levels 0 through 9.
  • the value is displayed on the programmer liquid crystal display and is updated roughly every 125 ms.
  • the AGC algorithms scan through gain levels searching for one which will result in valid uplink detection, as described in conjunction with Figures 9-11. Without the stability factor in the calculations, the signal strength value would also scan during this time. The stability factor, however, increases negatively at a rapid rate whenever total signal loss occurs. This factor's maximum value corresponds with the maximum AGC value and cancels any AGC level when the link is extremely unstable or nonexistent.
  • the signal strength feature is desirable, since it allows the physician user to map the optimal position for obtaining a reliable RF signal when the programming head 14 is placed against the patient's chest overlying the implanted pacemaker 20 as depicted in figures 3 and 4. In high noise environments and in cases where the implantable pulse generator 20 implanted in obese patients or is flipped over so that the read switch is further away, it is necessary through trial and error to reposition the programming head and to try different RF signal gain
  • the signal level indicator makes the mapping of the location of the implanted pulse generator easier and provides the physician user with a quantitive measure of optimal position.
  • the signal strength indicator has been described hereinbefore as appearing on the LCD screen of the programmer 10, it will be understood that it could as well appear on the programming head 14 as a numeric display for convenience of the physician user.
  • th indicator value could appear on the CRT display of the Model 9760 programming system and/or on both the programming head and the Model 9710 or Model 9760 alphanumeric displays.
  • both the gain value and the signal strength indicator value may be printed out on the printer when a record is made of the telemetry-out of the data from the implanted pacemaker.
  • Figure 12 illustrates a flow chart of a program implementing the above description of the signal strength calculation algorithm.
  • decision block 200 the timeout of the asynchronous timer 15 checked.
  • the MPU gets link status from the PPU at block 202 and gets the RF gain value from the PPU at block 204.
  • the gain value is shifted right twice. The shifted gain is complemented in block 208.
  • Block 210 masks the upper bits to prevent a value once complemented from exceeding 7. For example, if the shifted gain is at zero and it is complemented, it will end up being too large a number for the display range of 0 to 9. In block 212, "2" is added to make the minimum displayed value with noise be something other than zero.
  • the stability factor is updated.
  • the link status flag previously received from the PPU at block 202 is GOOD, the stability value is adjusted down by pre-determined amount.
  • the stability factor value at block 228 is limited to zero. If the result of the link status check at block 220 is bad, then the stability factor is adjusted "up" in block 230 again by a separate pre-determined value. If there is a carry as a result of that operation in block 232, the stability value is limited to a maximum in block 234. As described earlier, the adjustment values are not equal; preferably the "up" adjustment is twice the "down” adjustment. The new stability factor is used in block 214 the next time that the process is repeated.
  • the Peripheral Processing Unit is a separate micro-processor used in the 9710 to process RF bursts transmitted by the IPG. This processor is interrupted each time an RF burst is detected. Under normal situations (not programming the IPG) the PPU is in an "idle" mode. In this mode, interrupts are enabled and the function of the PPU is to adjust the Automatic Gain value to maintain a sufficient signal level for future communications. This Automatic Gain value is outputted to a port of the micro-processor whenever it is changed and controls the gain of the RF amplifier in the Model 9710 in 2 dB steps.
  • PPU Peripheral Processing Unit
  • T unit's major function is to set flags used throughout the system in response to a telemetry gap of 45 msec and to adjust the gain up by one step in an attempt to locate the signal. This assumes that the signal is missing due to lack of gain. If this assumption is false, that is, the signal is missing due to saturation of the amplifier, then the condition will continue until the gain "wraps around" to its minimum value which will eliminate the saturated condition if that is possible.
  • the processor is interrupted and control is given to the unit EXTO. The time interval since the last such interrupt is measured. This interval is compared with stored values to check the interval for conformance to the requirement for a sync interval.
  • the interval is determined to be a valid sync interval, then the number of intervals collected since the last sync interval was received is checked. Under normal circumstances, i.e. correct gain adjustment, there should be 5 intervals in one frame. If there have been more than this number, then extra noise is indicated and the gain level is adjusted down. If there are less than 5 intervals in the previous frame, then signal loss is indicated and the gain is adjusted up. Since interrupts could be lost due to amplifier saturation, the gain is allowed to wrap around to its minimum value as in the time-out case.
  • EXTO sets a flag to indicate a good frame has been received. If the previous frame is in error then the flag is cleared to indicate this condition as well. This flag is checked once every 125 ms when update of the SIGNAL indicator is required.
  • the PPU During uplink data reception, the PPU is placed in a unique mode which prevents AGC due to timing constraints as well as the undesirability of changing gain level and introducing transients during uplink reception. During this
  • SUBSTITUTE SHEET time collected intervals are stored for later processing once all uplink data has been received. During uplink decoding, if errors are detected, flags are set which are later processed to adjust the gain level for noise or signal loss.
  • the uplink data is received, it is processed by the unit TELEM in conjunction with subordinate units such as GET_FRAME and GET_VAL.
  • subordinate units implement what noise immunity is possible by adding collected intervals and checking each field range. If the current sum is less than the minimum value for the current field, then the next collected interval is added in. If noise was received, two smaller intervals equalling the correct interval would be stored.
  • the signal indicator is calculated by the Master
  • the responsible unit is LNKCHK. This unit interrogates the PPU once every 125 ms and receives the current gain level and last frame status.
  • the gain level is complemented and incremented by 2 to provide a gain floor of 2. This is done to provide a minimum signal gain level with no noise and leave room for noise when the signal level is small.
  • the gain value is complemented because the actual value used is small for larger signals and large for smaller signals.
  • a stability factor is calculated. This stability factor is a function of the number of good frames received over time versus the number of bad frames received over a similar period. When the sample of frame status indicates a good frame, then the stability factor is increased by a fixed value.
  • LNKCHK Link status Signal indicator unit.
  • the appended code is generic and not microprocessor dependent.
  • the code which adjusts the gain value is 8051.
  • the code which calculates the signal strength is Z80.
  • the timer 0 interrupt service routine is invoked whenever timer 0 ; overflows. During initialization, this timer is loaded with 8ad0h or 35536d. This value corresponds with 65536 - (45 ms/1.5 us). If no telemetry interrupts occur (see EXTO) prior to timer overflow, this routine will be called. The purpose of this routine is to reset the timer, adjust the gain and place the telemetry system in an initialized state.
  • the flag is cleared and the timer is disabled while the received message is processed.
  • This task is responsible for servicing telemetry interrupts. These interrupts are generated by the detection of RF bursts and represent the pulse positions within the telemetry frames.
  • EXTO operates in two modes.
  • the routine reads and saves the contents of timer 0 and ; / resets timer 0 to a count of 45 msec (8AD0H) .
  • the state of the "gain_adj" flag is checked to see if the need for a gain adjustment has been detected by GET_FRAME.
  • gain_adj is not set, a check is then made to determine if the time value is greater than a frame interval (approximately 2 msec) . If greater, the routine is exited. If this occurs too many times in a row, then the condition will be treated the same as missing pulses, the gain will be adjusted up.
  • the RF gain is adjusted up one increment. If a data ,field was expected the interval is saved in the buffer and the interrupt is exited.
  • the gain value is allowed to wrap-around to zero when maximum gain is reached.
  • the second mode is the "RECEIVE" mode of operation.
  • the routine also reads and saves the contents of timer 0 and resets timer 0 to a count of 45 msec (8AD0H) .
  • the time interval is placed into a circular buffer pointed to by P2 and Rl (initialized by telem) .
  • the buffer pointer (Rl) is allowed to wrap-around, and may fill the entire page allocated to the buffer (3400H) many times during a message sequence.
  • interval measurement error will exist. This depends on the instruction being executed at the time of the interrupt and may be from 3 to 9 cycles or 4.5 to 7.5 usec.
  • the interval measurement code will compensate for 4.5 usec of latency giving a measurement accuracy of approximately 0 to 3 usec.
  • Execution time must be ⁇ 58 microseconds for processing the
  • noise pulses may mask the reception of valid data pulses.
  • the circular buffer used by EXTO for interval storage MUST be limited to 256 bytes. This allows automatic buffer wrap-around while storing data in the buffer through P2. Buffer wrap is accomplished by allowing the indirect address (LSB) in Rl to roll.
  • LSB indirect address
  • the high level routine will be removing the data from this buffer at an average rate equal to the storage speed due to the low duty cycle of the frames (5 pulses in 2 msec).
  • LSN_MIN EQU (717*2) /3 ;MIN LSN FIELD TIME LSN_MAX EQU (1204*2) /3 ;MAX LSN FIELD TIME MSN_MIN EQU (1327*2) /3 ;MIN MSN FIELD TIME MSN MAX EQU (1814*2) /3 ;MAX MSN FIELD TIME
  • MEAS_TOL EQU ⁇ (15*2)/3) /ALLOWABLE MEASUREMENT ERROR SKEW EQU 30 ;TIME INTERVAL WINDOW BS EQU ((SKEW*2)/3)/2 ;SKEW TO CENTER OF FIRST BIT SYNCTIME EQU (122*2) /3 /SYNC INTERVAL IDTIME EQU (( (274-122) *2)/3) /TIME TO CENTER OF ID
  • ID0_MIN EQU 8B25H (adjusted +2 for id compensation)
  • This task is called from XMIT when telemetry data is expected following a downlink.
  • the task begins by initializing the data collection (telem) mode of the ISR (EXTO) and setting the ghold flag.
  • Register Rl is used to determine when a new interval is placed into the interval buffer at $3400. As intervals are stored, a search is made to detect a sync interval. When a sync is found the next interval is examined. If this interval is a sync interval or (ID field) is not a zero, the routine returns to its sync scanning mode. If a sync followed by a zero ID is found, data interval storage is begun.
  • Data intervals are placed into the interval buffer ($3400) by the ISR and are extracted from this circular buffer by telem and placed into more permanent storage beginning at $3500.
  • the values are normalized and corrected for software overhead error.
  • a 1900 msec timer (icg_time) is used to time the response from the IPG. This timer is used to halt data collection if noise pulses are being received at a rate ⁇ 45 msec.
  • the translation phase involves calls to unit GET_FRAME which decodes the intervals stored at $3500 and returns these values to telem. During translation SYNC and ID field errors are ignored.
  • the GET_FRAME unit is called after all frames of data have been input (by EXTO) .
  • GETJFRAME decodes the pulse interval values placed into the input buffer and passes the value of the frame ID and data back to the caller. Status, ID value and data will be passed to the calling routine through variables fr__stat, fr_id and fr_data.
  • This routine must not destroy register (bank 2) data used by extO. While searching for the start of uplink at the beginning of this task the SYNC and ID fields should be tested as intervals. Hardware test information shows that these fields are more accurately measured by individual intervals instead of summing relative to Pframe.
  • the interrupt processor (EXTO) must place data frame intervals into the buffer before or during the execution of this task.
  • buffer pointer rl telem isr circular buffer pointer (lsb) bphi,bplo buffer pointer used by GET FRAME
  • Input timer expiration and completion (ID 0 detect start: ID_WT phase 1) .
  • This unit is used to decode incomming uplink telemetry time intervals and assemble data frames.
  • the buffer pointer for GET_FRAME (bphi, bplo) is initialized to the start of the interval buffer by the calling routine. Calls to this unit will extract the next sequential frame from the buffer and will pass this data to the caller.
  • This unit is used only for uplink telemetry and is interested only in the LSN and MSN fields of the frames.
  • Each frames intervals will be summed until a time value is collected which exceeds the minimum LSN time. At this time the LSN will be calculated and summing will continue until the minimum MSN time is exceeded. After calculating the MSN value the data will be passed back to the caller in fr_data and the buffer pointer will be incremented to bypass the ending Pframe pulse interval.
  • TELEM The higher level routine normalizes the intervals and corrects for error caused by interrupt latency.
  • interval buffer pointer (bphi, bplo) is initialized by the caller.
  • AGC_NOISE gain control noise adjustment AGC_LOSS gain control signal loss adjustment GET VAL table look up
  • This unit is used to extract the telemetry frame data value from table time_tab returning the data value in the A register.
  • This unit does NO range checking on the input value (rl, r2) . This must be done by the caller.
  • This unit is called from GET_FRAME during the telemetry decoding process if an extra RF pulse is detected.
  • the purpose of the unit is to flag a gain adjustment to the logic contained in the telemetry interrupt service routine (EXTO) .
  • the gain_adj flag indicates that the need for a gain adjustment has been determined.
  • the gain_up flag tells EXTO which way to move the gain.
  • gain_adj flag is checked. If a noise adjustment has already been determined, the routine is exited. If a loss adjustment has been flagged, gain_adj is cleared and no adjustment is performed.
  • gain_adj gain adjustment reguired flag gain_up increase gain flag.
  • This unit is called from GET_FRAME during the telemetry decoding process when missing RF pulse are detected.
  • the purpose of the unit is to flag a gain adjustment to the logic contained in the telemetry interrupt service routine (EXTO) .
  • the gain_adj flag indicates that the need for a gain adjustment has been determined.
  • the gain_up flag tells EXTO which way to move the gain.
  • gain_adj flag is checked. If a loss adjustment has already been determined, the routine is exited. If a noise adjustment has been flagged, gain_adj is cleared and no adjustment is performed.
  • gain_adj gain adjustment reguired flag gain up increase gain flag.
  • •LNKCHK* is a time scheduled task running once every 125 msec to check the status of the telemetry channel. If the PPU is busy, return, leave timer active. Otherwise, reset pseudo timer 3 for 125 msec, send the 'check link status' command to PPU and wait for completion. If the link status is unchanged then exit, else the task updates the link status L.E.D. and vectors to the 'Link Status Changed' handler if the link is good.
  • •LNKCHK' also maintains the signal strength indicator displayed on line 2 of the LCD.
  • the signal strength indicator consists of the string 'SIGNAL:' and a signal strength value in the range 0-9.
  • the stability factor stored in the RAM variable STABILITY is decreased. If the link is found to be good, the stability factor is increased. Note that the amount the stability factor is decreased for a bad link is significantly greater than the amount the stability factor is increased for a good link.
  • the displayed signal strength is derived from the normalized gain value minus the stability factor. The value is clipped to keep it within the 0-9 value range.
  • This routine is called when a message is to be sent to the
  • SUBSTITUTE SHEET PPU A message block is passed that contains the PPU command code followed by any data that is to be sent.
  • the command byte is written to the command register and the remaining data bytes are written one at a time to the PPU data register.
  • STR_FLG Signal display flag, controls ; display of signal
  • DO_ANYWAY is NOT set to 1 [LINKSV] stub is vectored to Unit returns with Z flag cleared
  • PORTCR bit l is NOT cleared DO_ANYWAY is NOT set to 1 [LINKSV] stub is NOT vectored to Unit returns with Z flag set
  • DO_ANYWAY is set to 1 [LINKSV] stub is vectored to Unit returns with Z flag cleared
  • DO_ANYWAY is set to 1
  • mb PPUSTS 1,0 / 1 PPU busy mb GSTAT ⁇ ,0, DIFULL ; Case B, set to no response
  • LNK021 LD [HL],A AND PASS CONTROL TO HANDLER.
  • LNK023 LD HL, [LINKSV] / VECTOR TO LINK CHANGE HANDLER. JP [HL] r • • • X • • • •

Abstract

A software-controlled, external programmer for transcutaneously programming and receiving data from an implanted medical device providing a real-time indication of the implanted medical device RF telemetry signal strength to the user of the device programmer while automatically optimizing gain level to minimize interference in the presence of noise. The method and apparatus involves monitoring the validity of received intervals or frames uplinked from the implanted medical device to adjust the gain of the RF amplifier in a pre-determined range. When noise is detected, indicating a relatively small signal-to-noise ratio, the automatic gain control (AGC) level is decreased, effectively tracking this condition. Similarly, lack of any signal or loss of individual RF pulses causes the AGC level to be increased. The signal strength algorithm utilizes this real-time monitoring of signal integrity and signal-to-noise ratio to provide an indication to the user. In addition to the use of current gain level, a secondary factor is included to provide stability of link factor to the signal strength indication to decrease it in the event that a significant quantity of momentary link instabilities are detected. The telemetry gain adjustment algorithm begins operation at minimum signal level, increasing gain value every 45 ms. until a maximum gain level is reached. When at maximum, the gain is reset to minimum, restarting the search. When valid telemetry signals are received, the gain is stabilized for the duration of telemetry transmission.

Description

TELEMETRY GAIN ADJUSTMENT ALGORITHM AND SIGNAL STRENGTH INDICATION IN A NOISY ENVIRONMENT
CROSS REFERENCE TO RELATED APPLICATION Attention is drawn to the commonly assigned, copending U.S. Patent Application Serial No. 468,407, filed January 22, 1990, in the name of Paul B. yborney, et al, which is incorporated herein by reference.
BACKGROUND OF THE INVENTION Field of the Invention - This invention relates to a method and apparatus for controlling the gain of an RF amplifier in response to noise, missing pulses or signal loss and providing a real-time indication of the RF telemetry signal strength to the user of a medical device programmer.
Description of the Prior Art - In the field of programmable implanted medical devices, such as cardiac pacemakers, tachyarrhythmia-control devices, implantable drug dispensers and nerve stimulators, it has become common to provide an interactive, transceiver system for both remotely programming operating functions, modes and parameters of the implanted device, and telemetering out data related thereto on command by RF telemetry. In nearly all such active, electronic, implanted medical devices, it has become highly desirable to have the ability to reprogram the device's modes of operation, parameters and other functions and to monitor the performance of the device, both historically and contemporaneously. Such current medical devices are designed to provide two-way telemetry by radio frequency signal transmission between the implanted device and the programming head or wand of the external programmer to provide for the exchange of binary-coded transmitted information to enable the aforementioned programming by telemetry-in and the reading out of data stored in the device by telemetry-out.
EET For example, the Medtronic U.S. Patent No. 4,253,466 describes an implantable digital, programmable, cardiac pacemaker pulse generator which may be programmed by the programmer described in Medtronic U.S. Patent No. 4,250,884, both incorporated herein by reference. Such programmers as disclosed in the '884 patent are microprocessor-based and menu-driven under an overall operating routine and subroutines. Such programmers display operating conditions, commands and error messages to prompt the user in the proper use of the programming system. The system of the '466 and "884 patent sets forth the software-controlled programming of a series of Medtronice pacemakers, but it does not describe the telemetry-out on command of the external programmer of the programmed commands, electrogram, end-of-life indicators and the like that have been developed and implemented in subsequent programming systems.
More recently, microprocessor-based programmers have been developed by Medtronic, Inc. and others which are operated under the control of dedicated, plug-in ROM modules to enable the operation of the system with regard to specific model or series of models of implanted pulse generators. In such systems, the programmer is incapable of operating until a plug-in module or cartridge has been properly installed. The Medtronica MemoryMode cartridge enables the physician to apply the programmer to a specific set of pulse generator models. The software cartridge concept allows Medtronic, Inc. to expand and update the application of the programmer to new pulse generators and functional capabilities as they become available. Referring now to Figures 1-4, the Medtronic Model 9710,
9710A or 9710E programming system (hereinafter the Model 9710 system) is depicted. In Figure 1, the programmer 10, printer 12, programming head 14 and ECG cable and electrode leads assembly 16 is depicted in a simplified form. The MemoryMod cartridge is installed in programmer 10 which
TITUTE SHEET includes within its case the micro-processor based computing system, an LCD display, a keyboard, and an AC or battery power supply. The programmer 10 is connected to a printer 12 in order to provide a printed record of values programmed into the implanted device or received from the implanted device or ECG cable and electrode leads assembly. Compatible Medtronic printers include the Model 9712 printer and the Model 9751 system enhancement module high-speed printer. The programming head 14 must be connected for all programming and telemetry functions to the programmer 10 and will be described in greater detail hereafter. The ECG cable and electrode leads assembly 16 is required for the functions that detect the electrocardiogram and/or pacemaker signals via skin electrodes, including the "automatic threshold," "measure," and programming confirmation by way of the program confirmation indicator emitted by the pacemaker (as an alternative to confirmation by telemetry) . The processing of input commands applied by way of the keyboard on the programmer to the programming system, the formatting of data for telemetry via the programming head 14, and the processing of signals picked up from skin electrodes via ECG cable and electrode leads 16 is under the control of the software contained within the MemoryMod cartridge. The programming head 14 may comprise the Medtronic Model 9713 or 9713D programming head.
In Figure 2, the ECG cable and electrode leads assembly 16 is depicted attached via disposable skin electrodes 18 to a patient's chest. The ECG cable and patient electrodes depicted in Figure 2 are required for programmer functions requiring detection of cardiac and pacemaker signals as mentioned hereinbefore. However, the system may be used without the assembly 16 to program data into the implanted pacemaker or interrogate the pacemaker to telemetry-out program values and data. In current implanted pacemakers, confirmation of a programming transmission occurs by automatic transfer of data via telemetry-out. Use of the ECG cable and electrode leads assembly 16 is not required for programming confirmation with these devices. However, if telemetry is not received because of strong electrical interference, the programmer will attempt to confirm the transmission by surface detection of the PCI (program confirmation indicator) issued by the pulse generator. This method of program confirmation can occur only if the programmer is connected to electrodes on the patient. As described hereinafter, improvements of the present invention are directed toward the reduction or elimination of failures in telemetry-out because of strong electrical interference.
Furthermore, advanced programming and telemetry systems envisage the transmission of the patient's eleσtrogram directly from the pacing electrodes in contact with the heart to the programmer via the RF telemetry link in order to provide near-field and/or far-field electrograms directly from the myocardium. In such systems, the effects of electrical interference and other noise on the telemetry transmission is of concern. Medtronic U.S. Patent No.
4,556,063 (incorporated herein by reference) describes such a system for telemetering out both digital and analog data. In order to initiate and complete all programming and telemetry functions, the programming head 14 must be properly positioned over the pulse generator so that the
POSITION HEAD indicator lights go out. Figure 3 depicts the positioning of the programming head 14 against the patient's skin overlying the implanted pulse generator. The optimum positioning of thelprogramming head over the implanted pulse generator 20 is depicted in Figure 4. In use, after the programming system is coupled together as depicted in Figures 1 and 2 and the pulsegenerator model is keyed into the keyboard of the programmer 10, the POSITION HEAD indicator LED 22 lights up and remains lit until a telemetry link is established between the telemetry head 14 and the implanted device 20. The indicator LED 22 goes out to indicate when the programming head is properly positioned over the implanted house generator 20. For all programming and telemetry functions, the programming head 14 must be positioned so that the POSITION HEAD indicators go out.
In the system depicted in Figures 1 through 4, while the programming head is held in position over the pulse generator 20, the POSITION HEAD indicator is periodically flashed each time the programmer 10 receives an invalid interval and adjusts the telemetry signal sensitivity for best reception. If the telemetery link is lost due to programming head reposition or interference, the indicator LED 22 comes on steadily. While the POSITION HEAD indicator LED 22 is on, the programming head 14 may emit a radio frequency "search" signal used to establish a telemetry link with a pulse generator 20. It is desirable to avoid prolonged application of the RF search signal since the search signal can be sensed by the pulse generator and could occasionally cause unintentional inhibition or triggering of the pulse generator 20.
The pulse generator 20 contains a reed switch responsive to the externally applied magnetic field of the programmer head 14 and an RF signal transceiver circuit for receiving, amplifying and processing telemetered-in programming or interrogation commands. Actuation of the pulse generator reed switch and signal transmission and reception is affected by the programming head position and' its distance from the pulse generator 20.
The presence of electrical interference or noise strong enough to interrupt reception of telemetry from the implanted pulse generator can affect operation of the POSITION HEAD indicator lights and telemetry functions, including programming confirmation. In such cases, the POSITION HEAD indicator LED 22 may not go out, or a "TOO MUCH INTERFERENCE" or "NO TELEMETRY" message may appear in
EET the LCD following use of a programming or telemetry function.
Hospital operating rooms, catherization laboratories and even physicians• offices are often noisy electrical environments, and such noise has been found on occasion to interfere with the proper programming or interrogation of an implanted pacemaker. Such programming and interrogation of the implanted pacemaker's function is commonly undertaken as part of the surgical implant of the implanted pulse generator. Other equipment in the operating room or in adjoining rooms or floors of the facility may generate severe electrical noise. To ensure the safety of the patient, prior systems, as explained above, have been designed conservatively to avoid misprogramming once acquisition has been obtained by closure of the reed switch of the implanted pulse generator.
To minimize the effects of strong electrical interference, the Model 9713D programming head is provided with a _manually-controlled, five-position, telemetry receiver gain control. The instructions for use with the Model 9713D programming head indicate that in the initial operation of the programmer, the gain control should be set to its highest gain to provide the most sensitive setting. However, if the POSITION HEAD indicator lights did not go out, and if several repositions of the programming head are unsuccessful, then the user is instructed in the physician's manual to reduce the receiver sensitivity by turning the gain control to a lower setting and again repositioning the programming head for each gain setting until a setting is found that provides proper operation. Similarly, if during the use of the telemetry function or confirmation of a programming transmission, the message "TOO MUCH INTERFERENCE" or "NO TELEMETRY" appears on the programmer display, then again sensitivity is to be reduced until a setting and positioning of the programming head is found
SUBSTITUTE SHEET that provided proper operation.
In response to the above-described disadvantages of the prior art system, attempts have been made to provide automatic gain control circuitry (see for example, U.S. Patent No. 4,562,840) and software subroutines e.g., those within the Medtronic MemoryMod cartridges, described hereinafter as the "old algorithm" and specifically disclosed in Medtronic U.S. Patent No. 4,531, 523, incorporated herein by reference. As mentioned hereinbefore, the POSITION HEAD indicator light LED 22 on the programming head 14 indicates proper positioning of the programming head 14 over the implanted pulse generator 20 by going out. This is accomplished by resident software within the MemoryMod cartridges that monitors the intervals of time between RF pulses received by the programmer.
As described in Medtronic U.S. Patent No. 4,542,532, incorporated herein by reference, the RF telemetry pulse signal is centered at 175 kHz with a band width of 25 kHz. The RF signals are pulse-interval modulated with a "1" or "0" interval value. These intervals are monitored on a continuous basis by one of the processors in the programmer. If any valid interval is detected as within the valid range (732 + 15% micro-seconds for a binary "0" and 1098 + 15% micro-seconds for a binary "1") , a flag is set indicating this state. If any interval is received outside of the valid ranges, the flag is reset. Once every 250 ms., another processor within the programmer examines the contents of this flag. If the flag is set indicating the valid interval collected, the POSITION HEAD LED 22 is turned off. If the flag indicated an invalid collected interval, the LED 22 would be turned on. This POSITION HEAD indicator LED 22 is used by physicians to validate the condition of the link prior to requesting information from the IPG. The information uplinked by telemetry from the implanted pulse generator 20 lasts 300 mε., while the test to determine the
SHEET validity of the link checks lasts 1 ms. and indicates a good or bad telemetry link, depending on the state of the single collected interval prior to the most recent 250 ms. check. Moreover, the old algorithm set the automatic gain control at maximum to start telemetry-in and operated in an essentially uni-directional fashion to decrease the maximum gain under certain conditions to be described hereinafter. The old algorithm disadvantageously tended to leave the system operating at high gain and thus susceptible to the detection of noise in a noisy environment.
Even with these improvements incorporated in the prior art systems described above noise interference is still encountered. The physician is still instructed in the physician's manual to either identify the source of interference and eliminate it or move the patient and programmer to another location to avoid its effects.
As mentioned hereinbefore, the prior system provided the user with the POSITION HEAD LED 22 and two visual commands, or prompts, in response to weak or noisy signal reception from the implanted pulse generator 20. It would be desirable to provide the physician with a more effective automatic gain control algorithm and with a more precise indication of signal strength in relation to the then prevailing AGC setting, in order to ascertain the cause of difficulties in programming or telemetry.
SUMMARY OF THE INVENTION It is thus an object of the present invention to provide an improved automatic gain control algorithm for discriminating telemetry signals from noise. It is a further object of the present invention to provide telemetry signal strength display to the user of programmer.
The difficulties and deficiencies with the prior software and hardware implementations of automatic gain control and signal strength indication are alleviated and corrected in accordance with the present invention by a telemetry method and apparatus implemented in software algorithms for controlling the automatic gain control and providing a signal strength numeric display in a programming system.
The invention comprises a software-controlled, external programmer for transcutaneously programming and receiving data from an implanted medical device providing a real-time indication of the implanted medical device RF telemetry signal strength to the user of the device programmer while automatically optimizing gain level to minimize interference in the presence of noise. The method and apparatus involves monitoring the validity of received intervals or frames uplinked from the implanted medical device to adjust the gain of the RF amplifier in a pre-deter ined range. When noise is detected, indicating a relatively small signal-to-noise ratio, the automatic gain control (AGC) level is decreased, effectively tracking this condition. Similarly, lack of any signal or loss of individual RF pulses causes the AGC level to be increased. The signal strength algorithm utilizes this real-time monitoring of signal integrity and signal-to-noise ratio to provide an indication to the user. In addition to the use of current gain level, a secondary factor is included to provide stability of link factor to the signal strength indication to decrease it in the event that a significant quantity of momentary link instabilities are detected. The telemetry gain adjustment algorithm begins operation at minimum signal level, increasing gain value every 45 ms. until a maximum gain level is reached. When at maximum, the gain is reset to minimum, restarting the search. When valid telemetry signals are received, the gain is stabilized for the duration of uplink telemetry transmission.
SUBSTITUTE SHEET BRIEF DESCRIPTION OF THE DRAWINGS These and other advantages of the present invention will become more apparent by referring to the following detailed description and accompanying drawings in which: Figure 1 depicts the programmer system hardware of the prior art in which the software implemented, automatic gain control and sensitivity indicator of the present invention may be implemented;
Figure 2 depicts the connection of the programmer of Figure 1 to skin electrodes through the ECG cable and electrode leads;
Figure 3 depicts the positioning of the programming head over the implanted pulse generator and the indicator light LED for indicating proper position for both programming in and telemetry-out from the implanted pulse generator;
Figure 4 depicts the optimum programming head position in relation to the implanted pulse generator;
Figure 5 depicts in block diagram form the receiver stages within the programmer depicted in Figure 1 for receiving programming confirmation and telemetered-out data;
Figure 6 depicts data bit and frame telemetry formats of down and uplink-telemetered data;
Figure 7 depicts the RF signal at the high gain setting of the automatic gain control typically achieved by the old algorithm in a relatively normal background noise environment;
Figure 8 depicts the RF signal at the low gain setting of the automatic gain control typically achieved by the new algorithm in a relatively normal background noise environment;
Figure 9 depicts the step-wise adjustment of gain in accordance with the old and new algorithms;
Figure 10 is a flow chart of the new algorithm for automatically adjusting the gain control;
SUBSTITUTE SHEET Figure 11 is a modified flow chart of the new algorithm of Figure 10 usable with data frame telemetry format; and
Figure 12 is a flow chart of the new algorithm for providing the signal strength alphanumeric display.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
OF THE INVENTION As stated hereinbefore, the present invention comprises an improvement in the automatic gain control of an amplification stage of the uplink or telemetry-out circuitry of the programmer system of Figure 1-4, wherein the improvement is implemented in software, as well as the provision of a signal strength indicator for providing the user with a visual alpha-numeric readout of the prevailing signal strength during uplink telemetry. The prevailing signal strength is derived from the automatic gain control factor developed at the point when the minimum gain is set.
Referring now to Figure 5, the Model 9710 receive system block diagram depicted therein provides a simplified representation of the automatic gain control and associated circuitry. The block diagram of Figure 5 shows the interrelationship of the variable gain amplification stage and microprocessor in the programmer 10 with the radio frequency programming head 14 and printer 12.
The programmer 10 includes the 1 to 40 adjustable gain amplification stage 30 which receives its input signals from RF head 14 during uplink telemetry, amplifies those signals in accordance with the gain factor and applies those signals through 175 kHz band pass filter 32 to fixed amplifier 34. The total gain of the system at the output of fixed amplifier 34 varies between 175 and 7,000. The amplified gain signals are applied to a mixer stage 36 and detector 38 which compares the amplified signal to a 1.6 volt reference 40 and provides an output signal when the amplified and filtered signal exceeds the reference.
SUBSTITUTE SHEE- The output signal is applied to one-shot 42 to develop an interrupt signal applied to a flag input of a peripheral processing unit (PPU) microprocessor 44 which is used in the Model 9710 to process the RF burst transmitted by the IPG. This processor 44 is interrupted each time an RF burst is detected. Under normal situations (no programming of the IPG taking place) , the PPU microprocessor 44 is in an "idle" mode. In this mode, interrupts are enabled, and the function of the PPU under software control of Figures 10 or 11 is to adjust the automatic gain value provided by the digital current source 46 to maintain a sufficient signal level for future communications. This automatic gain value controls the gain of the RF amplifier in 2 dB steps. In conjunction with the main processing unit (MPU) , the PPU under software control of Figure 12 develops and provides the signal strength indication that is displayed on the programmer LCD to assist the user in positioning the programming head over the pulse generator. Once valid uplink telemetry intervals are detected, the gain and signal strength values are frozen and the system shifts operation from the idle or acquisition mode to the uplink telemetry mode for receiving and processing bit or frame-format data.
The RF burst pulse (centered at 175 kHz) is detected by detector 38 and is also filtered in filter 48 and transmitted to the printer 12. The one-shot 50 develops a further signal applied to a resident microprocessor 52 for processing in order to provide a print out if commanded to do so by instructions entered in the keyboard of programmer 10. Turning now to Figure 6, a bit-based and frame-based telemetry format for uplink and downlink telemetry is generally depicted in the two top-most sections of the drawing. The down and uplink data transmission format for both the bit-based and frame-based telemetry formats is shown in the lower portion of Figure 6. The bit-based
SUBSTITUTE SHEET telemetry format is to be distinguished from the frame-based telemetry format to be described hereinafter. The new automatic gain control and signal strength indication algorithms of the present invention may be implemented with either telemetry format in a fashion described hereinafter. Basically, the down and uplink telemetry transmission format involves the transmission of hundreds of frame or data bits in each block labeled "TX," "RX No. 1" and "RX No. 2." During the TX block, the external programmer transmits by downlink telemetry an interrogate command or a programming command which is followed by the uplink telemetry of the data stream from the implanted pulse generator in blocks RX No. 1 and RX No. 2. During uplink telemetry, the implanted pulse generator transmits out the data in block RX No. 1 and then repeats the same transmission in block RX No. 2, so that the external programmer can compare the two data streams for error detection.
Th,e bit-based data transmission of ones and zeros is illustrated immediately above the down and uplink data transmission format illustration of Figure 6. The data bits "1" and "0" are represented by intervals between 175 kHz RF burst of 1,098 and 732 micro-seconds (plus or minus 15% tolerances) , respectively. The automatic gain control algorithm of the present invention compares the 1,098 and 732 micro-second intervals against intervals between received signals to determine whether or not the received signals represent noise or valid data bits in a manner to be described hereafter. An illustration of one frame of frame-based data transmission appears immediately above the illustration of the intervals between data bits. The frame-based telemetry format consists of individual frames of uplink telemetry RF pulses that convey data by pulse position modulation. Each valid frame is 1.95 ms in length and contains five intervals between the leading RF sync pulses which bound the individual frames.
A valid frame possesses a first sync interval between two RF pulses equal to 122 micro-seconds. The next interval is a "dead" zone of 152 + micro-seconds. The next inverval may vary in length from 0 to 305 micro-seconds in 30.5 micro second steps, identifying the type of data (ID) transmitted. The actual detected interval is normalized to the beginning of the ID field and divided by the 30.5 micro-second clock to yield a value from 0 to 10.
Two further 152 micro-second dead zone intervals separate the ID field, the least significant nibble (LSN) field and the most significant nibble (MSN) field. The LSN and MSN field intervals are normalized to the beginning of each respective field and divided by 30.5 to develop a value between zero and fifteen. The last 152 micro-second interval fills out the frame length to 1.95 ms. Within each 1.95 ms. frame there should be 5 intervals separated by 175 kHz signals. The cross-referenced '407 application describes the frame format telemetry in greater detail. For purposes of this application, the programmer is required to be able to detect and decode both bit based and frame based data streams since both are presently employed in earlier and more recent generation implanted pulse generators.
Figures 7 and 8 depict representations of the RF uplink telemetry signals in the presence of noise at high gain and low gain, respectively. The typical noisy signal at high gain is depicted in Figure 7 and contains high amplitude, closely- spaced noise excursions of virtually equal amplitude to the 175 kHz RF burst pulses depicted at A,B, and C. Thus, based on amplitude discrimination at high gain, each noise impulse would be confused with a 175 kHz RF telemetry burst, and the pulse interval modulated telemetered signal could not be
SUBSTITUTE SHEET decoded in the peripheral processing unit and associated software. Conversely, the typical low gain signal depicted in Figure 8 provides adequate signal amplitude differentiation to discriminate the RF transmitted burst pulses from background noise and to decode either the bit or frame formatted, pulse-interval modulated data transmitted from the implanted pacemaker. The new algorithm of the present invention seeks to maintain the gain at or near the low gain setting rather than at the highest gain possible in the presence of noise.
In this regard, it should be noted that implanted pacemaker pulse generators of the type described in the aforementioned U.S. Patent No. 4,556,063, provide RF telemetry-out signals in the 250 to 300 v peak-to-peak range, assuming a two-inch gap between the implanted pulse generator 20 and the programming head 14 arranged as depicted in Figure 4. The minimum threshold necessary to ensure reliable detection is approximately 300-320 mv peak-to-peak. The output of the gain amplifier 30 of Figure 5 clips at a level of about 500 mv peak-to-peak. This level is attained with the lowest output implantable pulse generator at a gain value of about 5 in a range of 0 to 9. Any amplification above this value raises the noise level with no increase in RF signal strength, resulting in the typical signal at high gain depicted in Figure 7. In accordance with the present invention, the new software algorithm limits the gain to a value of about 7. This value allows ample signal strength for even the lowest output implantable pulse generator without allowing the gain to exceed the noise threshold in a "normal" operating environment.
As described hereinbefore, the prior art manually adjusted gain control and software implemented automatic gain control was set to the maximum gain during the idle mode to facilitate the early acquisition of the RF uplinked telemetry signal and to minimize the amount of time it took to reposition the programming head 14 in relation to the implanted pulse generator 20 of Figures 3 an 4. Unfortunately, at maximum gain, an RF signal could not be distinguished from low level noise as shown in the typical signal depicted in Figure 7, and time is lost as the user searched for a lower gain valve which can distinguish noise from the telemetry signal.
In the software-implemented, old algorithm shown in U.S. Patent No. 4,531,523 (Figure 3), the gain was likewise initialized at maximum and decreased in steps until telemetry signals were differentiated from amplified background noise. The old automatic gain control algorithm was uni-directional in design. On initialization or a major time out (98 ms.), the gain would be set at its highest level and reduced incrementally as noise was detected. The noise detection logic defined noise as two pulses that are not l's or 0's that occur within 8 ms. This 8 ms. time window was needed to filter out the implantable pulse generator output induced noise and the false errors that are detected at the end of blanking intervals in the implanted pulse generator. This old algorithm could not increase the gain level incrementally, because it had no detection mechanism for bit-level dropouts. It could only detect long signal loss intervals of greater than 98 ms. and would jump back to high gain under this condition. Using this method, the gain would stabilize at a level just below the noise threshold. At this level, occasional noise hits are probable, and if they occur at an interval greater than 8 ms. , they will cause uplink message corruption with no subsequent gain adjustment.
The attack and decay characteristics of the old algorithm were slow and inaccurate. On initial programming head positioning, the gain was set at maximum and reduced as fast as noise was detected if that noise recurred at
SUBSTITUTE SHEET frequency greater than 125 Hz. Rapid reduction was not realized, however, because if the gain was reduced, noise hits became less frequent. The response time of the old algorithm, using a simple head positioning test and a "programmed nominal" function required in regard to certain implantable pulse generator models a 3-5 second settling time to obtain reliable communications. Even after settling, the gain tended to be nearer the maximum gain. This characteristic of the old algorithm is depicted in the top curve of Figure 9, and it is specifically shown and described in the aforementioned U.S. Patent No. 4,531,532.
The new automatic gain control and algorithm of the present invention employs linear attack and decay characteristics. Initially, in the "idle" or acquisition mode, the automatic gain control value is set at zero gain and steps through the gain range in a 2db increment stair-step pattern. When the high gain limit is reached (software selectable) , the search starts over at zero gain again. Thus, in the idle mode, the automatic gain control gain value rapidly increases and decreases as shown in the bottom curve of Figure 9 in the search for a hit on a transmitted RF pulse signal.
Turning now to Figure 10, a first embodiment of the new AGC algorithm of the present invention usable with the bit-based telemetry format is depicted in simplified fashion. In Figure 10, the program is started upon command of the PPU microprocessor within programmer 10 and in the idle mode, that is, in the absence of any detected RF data or noise signals, the gain cycles between 0 and 7 (maximum) through the loop comprising blocks 70-80. Initially, a 45 ms. timer 72 is started, and if no telemetry signal is sensed within the 45 ms. time period, then the link status flag is set to "BAD" in block 75 and the gain is incremented in block 76 by one step. If no telemetry signal is sensed over a predetermined number of times up to a maximum gain, then decision block 78 commands block 80 to reset the gain to minimum. This sequence is depicted in Figure 9 in regard to the lower gain curve depicting the behavior of the automatic gain control circuit in the idle mode. As long as the gain is not at its maximum value, the 45 ms. timer is restarted at block 72, and the gain is incremented. The state of the link status flag (BAD or GOOD) is employed in the signal strength algorithm of Figure 12.
When successive telemetry signals occur within the 45 ms. time period, interrupts are generated in block 82. The invervals between interrupts are measured in block 84 and compared to a further interval of "1 MAX" which exceeds the binary "1" and "0" intervals in decision block 86. If the measured interval is greater than the 1 MAX interval, then the gain is again incremented in block 76. Again the increased gain is compared to the maximum gain in decision block 78 and once maximum gain is reached, the gain is reset to a selectable minimum in block 80.
However, if the measured interval is less than or equal to the maximum binary "1" interval (1.098 + 15%), then the interval "t" is compared to the interval representing a binary "1" in decision block 88. If the measured interval "t" is equal to a valid "1", then the bit is processed in block 96 and the program loops back to START. If the measured interval "t" is not equal to a valid
"1" but falls between the binary "1" and binary "0" intervals (that is not equal to either the binary "1" or the binary "0" interval plus or minus their respective tolerances) as determined in block 90, then the link status is set BAD in block 92 and the gain is decremented by one step in block 100. But if the measured interval falls within the binary "0" interval as determined in decision block 102, then the gain is neither incremented nor decremented in accordance with the new algorithm. The link status flag is set to "GOOD" in block 94, the "0" bit is
SUBSTITUTE SHEET processed in block 96 and the program loops back to START. If the measured interval "t" is determined to be less than a binary "0" interval in block 102, then the link status flag is set BAD in block 92 and the gain is decreased in block 100. In decision block 104, the gain is compared to the minimum gain, and if the decreased gain is less than the minimum gain, then the gain is set to the selectable minimum gain in block 106 and the program loops back to START. Once a requisite number of sequential data bits are successfully processed in block 96, the uplink telemetry of the data is enabled and the gain is no longer adjusted as the algorithm of Figure 10 is disabled.
Turning now to Figure 11, the flow chart of Figure 10 is modified therein to process frame-based rather than bit-based telemetry data. The modification starts at block 84 and loops back to the START block 70 and thus replaces blocks 86-106 of Figure 10. Again, operating in the idle mode, the algorithm steps through blocks 70-84 of Figure 10, and if no signal is received in 45 ms., the link status flag is set BAD in block 75 and gain is increased in blocks 76, 78, 80. If a signal is detected within 45 ms. then the interval is measured in block 84 and the measured interval is compared to a 2 ms. interval (greater than the frame length) in decision block 108. If the interval is greater than 2 ms. then the link status flag is set BAD in block 109 and the gain is increased in blocks 110, 112, 114.
If the measured interval is shorter than 2 ms., then the program moves to decision block 116 where the interval is compared to the preset sync interval depicted in Figure 6. If the sync interval is not matched or is not expected in decision block 118, then the program moves to set the link status flag BAD in block 119 and to the decrease gain loop comprising blocks 120, 122 and 124. However, if the sync interval is matched, the program moves to examine the proper number of intervals between sync intervals in blocks 126, 128 and 130. In block 126, the successive intervals between sync intervals are counted and if two many intervals are detected (more than 5) , decision block 128 concludes that the gain is too high and moves to the decrease gain loop starting at block 119. On the other hand, if too many intervals are not detected in decision block 128, then the number of intervals are compared to the expected number in block 130. If too few intervals are detected, then the algorithm concludes that the gain should be increased and moves to the increase gain loop starting with block 109. If, however, the number of intervals is correct, then the status flag is set GOOD in block 132 and the intervals are processed in block 134 and the program loops back to START.
In the decrease gain loop comprising blocks 120, 122 and 124, the gain is decreased in block 120 and compared to the minimum gain in block 122. If the decrease gain is less than the minimum gain, then the gain is set at minimum in block 124.
Similarly, in the increase gain loop comprising blocks 110, 112 and 114, the gain is increased in block 110 and compared to the maximum gain in block 118. If the maximum gain is reached, then the gain is set to minimum in block 114 and the program loops back to start.
To summarize the foregoing, it can be seen that the bit-based and frame-based flow charts and software respond to noise by decreasing gain and to signal drop-out by
SUBSTITUTE SHEET increasing gain during the idle mode, as follows:
Noise Signal Loss t>45 ms. or t>l max
Figure imgf000023_0001
t>45 ms. or t>2 ms.
Where t is the inverval between detected 175 kHz RF signals. When acquisition is achieved, uplink telemetry and storage of the telemetered intervals is enabled for decoding and display. During the uplink telemetry, noise signals may still get through, but the gain will not be changed. In the uplink telemetry mode and in the presence of 175 kHz noise tripping the detect amplitudes, the algorithm measures each interval t, stores successive intervals and continuously sums the stored intervals t0, tlf t2 and compares the sums to the 0 and 1 intervals (in bit-based telemetry) . If the sums match a 0 or 1 bit interval, then the uplink is accepted.
Similarly, in frame-based telemetry, successive intervals are stored until the total number of frames (2 x 38) are received. Intervals that are too short to represent a sync interval, dead space interval, or one of the possible ID, LSN or MSN intervals are summed together until a valid interval is detected. Thus, noise signals between the frame-based signals depicted in Figure 6 are eliminated.
Turning now to a further aspect of the present invention, to help properly position the programming head during the idle or acquisition mode, the strength of the telemetry signal is indicated to the user employing the algorithms of Figures 10 or 11 and Figure 12 and as set forth in the software listing appended hereto as Appendix A. On the alphanumeric display of the programmer 10, the word "SIGNAL" followed by a value from zero (minimum) to nine (maximum) appears on the left side of the display under "MODE." The value decreases if the signal is interrupted by electrical interference. This information is not available momentarily while the programmer is processing other commands or information. The signal strength algorithm utilizes the real time monitoring of noise or signal drop-out which effects a decrease or increase in the AGC level or value during the idle or acquisition mode, thereby providing real time monitoring of signal integrity and signal-to-noise ratio to provide an indication to the user. Since the AGC value is lowest for maximum signal level and highest for minimum level, the value is complemented for use as a signal strength indicator to the user.
In addition to the use of current gain value, a secondary factor is included to provide a stability-of-link factor to the signal strength indication. Once every 125 ms. or so, the "GOOD" or "BAD" status of the link is checked. This link status is used to turn off the "position head" LED on the front of the programmer or programmer head. A stability factor is adjusted based on this instantaneous check of link status. The factor is made more negative when the link check status is BAD and more positive when GOOD. The stability factor is a function of the number of good frames or bits received over time versus the number of bad frames or bits received over a similar period. When the sample of frame status indicates a GOOD bit or frame (block 94 of Figure 10 or block 132 of Figure 11) , then the stability factor is increased by a fixed value. When the status indicates a BAD bit or frame (blocks 75, 92 of Figure 10 or 109, 119 of Figure 11), then the stability factor is reduced by a larger, also fixed value. Once a bad bit or frame is detected, the algorithm requires several consecutive good frames to build the signal indicator value
SUBSTITUTE SHEET back up to its maximum corresponding with the gain value, complemented plus 2. If there are a significant number of momentary link instabilities indicated by the stability factor, the resulting signal strength value is reduced, ultimately to 0. If those instabilities diminish, the signal strength level will increase. The maximum displayed signal strength level will then correspond with the complement of the AGC value plus 2 or 9.
The displayed range of signal strength could be artificially adjusted to other values, 0 through 100 for instance, by scaling AGC instability factors accordingly. In the current implementation, the values correspond with AGC levels 0 through 9. The value is displayed on the programmer liquid crystal display and is updated roughly every 125 ms.
When a signal loss occurs, the AGC algorithms scan through gain levels searching for one which will result in valid uplink detection, as described in conjunction with Figures 9-11. Without the stability factor in the calculations, the signal strength value would also scan during this time. The stability factor, however, increases negatively at a rapid rate whenever total signal loss occurs. This factor's maximum value corresponds with the maximum AGC value and cancels any AGC level when the link is extremely unstable or nonexistent.
The signal strength feature is desirable, since it allows the physician user to map the optimal position for obtaining a reliable RF signal when the programming head 14 is placed against the patient's chest overlying the implanted pacemaker 20 as depicted in figures 3 and 4. In high noise environments and in cases where the implantable pulse generator 20 implanted in obese patients or is flipped over so that the read switch is further away, it is necessary through trial and error to reposition the programming head and to try different RF signal gain
E SHEET settings as described hereinbefore. The signal level indicator makes the mapping of the location of the implanted pulse generator easier and provides the physician user with a quantitive measure of optimal position. Although the signal strength indicator has been described hereinbefore as appearing on the LCD screen of the programmer 10, it will be understood that it could as well appear on the programming head 14 as a numeric display for convenience of the physician user. Furthermore, as described hereinbefore, th indicator value could appear on the CRT display of the Model 9760 programming system and/or on both the programming head and the Model 9710 or Model 9760 alphanumeric displays. Furthermore, it will be understood that both the gain value and the signal strength indicator value may be printed out on the printer when a record is made of the telemetry-out of the data from the implanted pacemaker.
Figure 12 illustrates a flow chart of a program implementing the above description of the signal strength calculation algorithm.
In decision block 200, the timeout of the asynchronous timer 15 checked. Upon the timeout of the 125 ms. timer, the MPU gets link status from the PPU at block 202 and gets the RF gain value from the PPU at block 204. In block 206 the gain value is shifted right twice. The shifted gain is complemented in block 208.
Block 210 masks the upper bits to prevent a value once complemented from exceeding 7. For example, if the shifted gain is at zero and it is complemented, it will end up being too large a number for the display range of 0 to 9. In block 212, "2" is added to make the minimum displayed value with noise be something other than zero.
At block 214, the previously-calculated stability value is subtracted and the result is converted to ASCII code in block 216. At block 218, the LCD display "signal: » is
SUBSTITUTE SHEET created with the blank space filled with the calculated numeric signal strength.
Next, the stability factor is updated. At decision block 220, if the link status flag previously received from the PPU at block 202 is GOOD, the stability value is adjusted down by pre-determined amount.
At decision block 226, if the adjustment at block 224 causes a borrow, the stability factor value at block 228 is limited to zero. If the result of the link status check at block 220 is bad, then the stability factor is adjusted "up" in block 230 again by a separate pre-determined value. If there is a carry as a result of that operation in block 232, the stability value is limited to a maximum in block 234. As described earlier, the adjustment values are not equal; preferably the "up" adjustment is twice the "down" adjustment. The new stability factor is used in block 214 the next time that the process is repeated.
The aforementioned algorithms are implemented in the program listing attached hereto as Appendix A.
The following description explains the expressions appearing in the appended software listing: The Peripheral Processing Unit (PPU) is a separate micro-processor used in the 9710 to process RF bursts transmitted by the IPG. This processor is interrupted each time an RF burst is detected. Under normal situations (not programming the IPG) the PPU is in an "idle" mode. In this mode, interrupts are enabled and the function of the PPU is to adjust the Automatic Gain value to maintain a sufficient signal level for future communications. This Automatic Gain value is outputted to a port of the micro-processor whenever it is changed and controls the gain of the RF amplifier in the Model 9710 in 2 dB steps.
If there is no interrupt for 45 milliseconds, an internal timer times out and the unit TIMEO is called. This
T unit's major function is to set flags used throughout the system in response to a telemetry gap of 45 msec and to adjust the gain up by one step in an attempt to locate the signal. This assumes that the signal is missing due to lack of gain. If this assumption is false, that is, the signal is missing due to saturation of the amplifier, then the condition will continue until the gain "wraps around" to its minimum value which will eliminate the saturated condition if that is possible. During idle, if an IPG is present, then the processor is interrupted and control is given to the unit EXTO. The time interval since the last such interrupt is measured. This interval is compared with stored values to check the interval for conformance to the requirement for a sync interval. If the interval is determined to be a valid sync interval, then the number of intervals collected since the last sync interval was received is checked. Under normal circumstances, i.e. correct gain adjustment, there should be 5 intervals in one frame. If there have been more than this number, then extra noise is indicated and the gain level is adjusted down. If there are less than 5 intervals in the previous frame, then signal loss is indicated and the gain is adjusted up. Since interrupts could be lost due to amplifier saturation, the gain is allowed to wrap around to its minimum value as in the time-out case.
When a valid frame of 5 intervals including sync is detected, EXTO sets a flag to indicate a good frame has been received. If the previous frame is in error then the flag is cleared to indicate this condition as well. This flag is checked once every 125 ms when update of the SIGNAL indicator is required.
During uplink data reception, the PPU is placed in a unique mode which prevents AGC due to timing constraints as well as the undesirability of changing gain level and introducing transients during uplink reception. During this
SUBSTITUTE SHEET time, collected intervals are stored for later processing once all uplink data has been received. During uplink decoding, if errors are detected, flags are set which are later processed to adjust the gain level for noise or signal loss.
Once the uplink data is received, it is processed by the unit TELEM in conjunction with subordinate units such as GET_FRAME and GET_VAL. These subordinate units implement what noise immunity is possible by adding collected intervals and checking each field range. If the current sum is less than the minimum value for the current field, then the next collected interval is added in. If noise was received, two smaller intervals equalling the correct interval would be stored. The signal indicator is calculated by the Master
Processing Unit (MPU) . The responsible unit is LNKCHK. This unit interrogates the PPU once every 125 ms and receives the current gain level and last frame status. The gain level is complemented and incremented by 2 to provide a gain floor of 2. This is done to provide a minimum signal gain level with no noise and leave room for noise when the signal level is small. The gain value is complemented because the actual value used is small for larger signals and large for smaller signals. Once the gain value has been modified for use by the signal indicator algorithm, a stability factor is calculated. This stability factor is a function of the number of good frames received over time versus the number of bad frames received over a similar period. When the sample of frame status indicates a good frame, then the stability factor is increased by a fixed value. When the status indicates a bad frame then the stability factor is reduced by a larger, also fixed value. Once a bad frame is detected, it requires several consecutive good frames to build the signal indicator value back up to its maximum corresponding with the gain value, complemented, plus 2. The following designs are included in the appended software:PPU:
TIMEO 45 msec PPU time-out handler EXTO RF telemetry handler TELEM uplink processing executive GET_FRAME subroutine to decode a frame GET VAL subroutine to look up data intervals
MPU:
LNKCHK Link status, Signal indicator unit. The appended code is generic and not microprocessor dependent. The code which adjusts the gain value is 8051. The code which calculates the signal strength is Z80.
APPENDIX A
**/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
1 TASK TIMEO (TELEMETRY FUNCTION)
1.1 CALLED BY:
Hardware timer interrupt 45 msec)
1.2 DESCRIPTION OF TASK:
The timer 0 interrupt service routine is invoked whenever timer 0 ; overflows. During initialization, this timer is loaded with 8ad0h or 35536d. This value corresponds with 65536 - (45 ms/1.5 us). If no telemetry interrupts occur (see EXTO) prior to timer overflow, this routine will be called. The purpose of this routine is to reset the timer, adjust the gain and place the telemetry system in an initialized state.
If the PPU is currently awaiting uplink following downlink, then a flag is set while data is being received and no gain correction will occur.
After the reception of data is complete, the flag is cleared and the timer is disabled while the received message is processed.
1.3 FLOW
1.3.1 PDL
save ace save psw stop timer reset timer to 8ad0h for 45 ms per int [basetime -> th0,tl0] restart timer 0 select register bank 2 load time registers with ffh [timehi,timelo <— ffffh] set timeout flag [to_f] clear frame detected flag [frame_f] reset frame counter [frame_cnt=0] reset gain adjustment flag [gain_adj=0]
if not doing telem [ghold=0] get gain [a=rf] mask off unused bits [a=a & 00111100B] increment gain [a+gain_adj_up] save local copy [rf=a] if > max gain [a=(gain_max+4) ] get minimum gain [ a=gain_min] save local copy [rf=a] endif
save DPTR [push] set DPTR to rf control addr [DPTR=6001H] set gain [@DPTR=a] restore DPTR flag bad link [link_flag=0] reset good frame counter [link_cnt=0] endif
reset interval (pulse) counter [R6=0] set timeout flag [toflag=l] restore registers [PSW,a] exit interrupt
SUBSTITUTE SHEET 1.4 CONSTRAINTS
Preserve used registers.
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
None assumed.
1.5.2 DATA ELEMENTS
rf RF control (gain) register thO,tlO timer 0 ghold telemetry waiting for uplink flag
1.5.3 EQUATES
;gain increase increment ;Minimum gain value ;Maximum gain value
Figure imgf000033_0001
;Base timer value
1.6 OUTPUT REQUIREMENTS:
1.6.2 DATA ELEMENTS
to_f timeout occurred flag frame_f frame detected flag frame_cnt receive frame counter link flag telemetry established flag
SUBSTITUTE SHEET link_cnt count of consecutive good frames received r6. b2 burst counter (used by extO) tho timer 0 high byte tlo timer 0 low byte rf RF control register toflag timeout flag for extO $6001 MPU interface register gain_adj gain adjustment needed flag
1.7 LOCAL DATA
Register bank 2 r6
1.8 UNIT LEVEL TEST LIST
<test #> <test case description> input values output values
1. Timer reset thO = 8AH tLO = DOH ghold=0 to_f = 0 to_f = 1 frame_f = ffH frame_f = o frame_cnt = ffH frame_cnt = 0 link_flag = ffH link_flag = 0 link_cnt = ffH link_cnt = o gain_adj=l gain_adj=o r6=2 r6=0
Gain adjust (normal) ghold=0 rf = 0 rf = 04
3. Gain adjust (max) ghold=0 rf = IcH rf = o
SUBSTITUTE SHEET 4. Telem in progress a=12h psw=18h ghold=l toflag=0 toflag=l a=12h psw=18h
++/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
**/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
1 TASK EXTO (TELEMETRY FUNCTION)
1.1 CALLED BY:
Hardware telemetry (RF) interrupt
1.2 DESCRIPTION OF UNIT:
This task is responsible for servicing telemetry interrupts. These interrupts are generated by the detection of RF bursts and represent the pulse positions within the telemetry frames.
— IDLE MODE —
EXTO operates in two modes. In the first or "IDLE" mode, the routine reads and saves the contents of timer 0 and ; / resets timer 0 to a count of 45 msec (8AD0H) .
The state of the "gain_adj" flag is checked to see if the need for a gain adjustment has been detected by GET_FRAME.
SUBSTITUTE SHEET If set the appropriate adjustment code is executed and EXTO is exited.
If gain_adj is not set, a check is then made to determine if the time value is greater than a frame interval (approximately 2 msec) . If greater, the routine is exited. If this occurs too many times in a row, then the condition will be treated the same as missing pulses, the gain will be adjusted up.
Next, a check is made to detect the start of frame sync interval (122 usec) . If a sync interval is detected, flag FRAME_F is set, the pulse counter is set to 1, the frame counter and LINK_CNTs are incremented and the interrupt is exited.
If the time interval is not a sync interval, and a sync was expected the RF gain is adjusted up one increment. If a data ,field was expected the interval is saved in the buffer and the interrupt is exited.
During gain adjustments the gain value is allowed to wrap-around to zero when maximum gain is reached.
No intervals are saved in IDLE mode. Its purpose is make ajustments in gain while no telemetry or markers are being received.
— RECEIVE MODE —
The second mode is the "RECEIVE" mode of operation. In this mode, the routine also reads and saves the contents of timer 0 and resets timer 0 to a count of 45 msec (8AD0H) .
SUBSTITUTE SHEET In addition, the time interval is placed into a circular buffer pointed to by P2 and Rl (initialized by telem) . The buffer pointer (Rl) is allowed to wrap-around, and may fill the entire page allocated to the buffer (3400H) many times during a message sequence.
EXTO is then exited.
Fast execution during the "receive" mode is critical for the operation of the programmer. A hardware input filter is in place which will allow a minimum pulse interval of approximately 60 usec +/- 5%. To allow execution of the upper level or applications code during high noise levels, EXTO must execute faster than 60 usec. Currently, the execution time is estimated at approximately 51 usec (43.5 usec for the code and 7.5 usec latency time).
Some interval measurement error will exist. This depends on the instruction being executed at the time of the interrupt and may be from 3 to 9 cycles or 4.5 to 7.5 usec. The interval measurement code will compensate for 4.5 usec of latency giving a measurement accuracy of approximately 0 to 3 usec.
1.3 FLOW
1.3.1 PDL
save PSW select register bank 2 save ace [r4] stop timer [0] save timer count [timelo, timehi < th0,tl0] reset the timer [thO, tlO <-— 8ad0h] start timer [0] if timeout occurred [toflag=l] clear timeout flag [toflag] restore ace [r4] restore PSW exit endif
if tele mode [ghold = 1] time msb to the buffer [§rl = timehi] bump buffer pointer [rl+i] time lsb to the buffer [§rl = timelo] bump buffer pointer [rl+1] restore ace [r4] restore PSW exit else if gain adjustment flagged by GET_FRAME [gain_adj=l] if adjustment is up [gain_up=l] clear adjustment needed flag [gain_adj=0] adjust gain up [goto GN_UP] else clear adjustment needed flag [gain_adj=0] adjust gain down [goto GN_DN] endif else if last interval before pace [timehi > 9Oh] if two intervals > 2 ms in a row [missing_f=l] reset flag [missing_f=0] flag link bad [link_flag=0] reset link counter [link_cnt=0] adjust gain up [goto GNJJP] else set flag for next time [missing_f=l] set ignore flag [ignoref=l] clear timeout flag [toflag=0] restore ace [a=r4] restore PSW clear pending interrupt [clr IEO] exit interrupt endif else if interval < Maximum sync time [<sync_max] set new frame flag [frame_f] count the new frame [frame_cnt] save pulse counter value [a=r6] reset pulse counter [r6=l] if ignore flag clear [ignoref=0] if sync expected [a=l or 6] bump good frame counter
[link_cnt] if reception threshold reached
[link_cnt >= 38] reset good frame counter [link_cnt=0] restore ace [a=r4] restore PSW clear pending interrupt
[clr IEO] exit interrupt endif show good link [link_flag=ff] else if missing pulses [a < 6] if no gain adjust flagged [waitf=l] clear flag [0 —> waitf] exit interrupt [goto XX3]
HEET else reset link flag [link_flag=0] reset good frame counter [link_cnt=0] adjust gain up [goto GN_UP] endif endif endif else if sync expected [r6 = 6] set gain wait flag [waitf=l] clear pulse counter [r6=0] reset link flag [link_flag=0] reset good frame counter [link_cnt=0] adjust gain down [goto GN_DN] endif endif endif endif endif
XX3: restore ace [a=r4] restore PSW clear pending interrupt [clr IEO] exit interrupt
GN_UP: get gain value [a=rf] isolate gain [a & 3ch] bump gain [a+gain_adj_up] if gain > max gain [a > gain_max] set gain to minimum [a=gain_min] endif save copy of gain value save dptr [dph,dpl] set rf control address [dptr=6001h] write rf control register [§dptr=a] restore dptr[dph,dpi] restore ace [a=r4] restore PSW clear pending interrupt [clr IEO] exit interrupt
GN_DN: get gain value [a=rf] isolate gain [a & 3ch] dec gain [a-gain_adj_dn] if gain < min gain [carry=l] set gain to zero [a=gain_min] endif save copy of gain value [rf=a] save dptr [dph,dpi] set rf control address [dptr=6001h] write rf control register [@dptr=a] restore dptr[dph,dpi] restore ace [a=r4] restore PSW clear pending interrupt [clr IEO] exit interrupt
NOTE: GN_UP and GN_DN are tested during the unit testing of EXTO. No individual tests are executed for these ; (dedicated) sections of code.
1.4 CONSTRAINTS
Execution time must be < 58 microseconds for processing the
EET pframe pulse to avoid an overrun condition (pframe to psync) .
RF burst occurring at an interval < 100 usec are filtered out by a one-shot in the hardware. Therefore noise pulses may mask the reception of valid data pulses.
The circular buffer used by EXTO for interval storage MUST be limited to 256 bytes. This allows automatic buffer wrap-around while storing data in the buffer through P2. Buffer wrap is accomplished by allowing the indirect address (LSB) in Rl to roll.
The high level routine will be removing the data from this buffer at an average rate equal to the storage speed due to the low duty cycle of the frames (5 pulses in 2 msec).
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
1.5.2 DATA ELEMENTS
r4.b2 accumulator save r6.b2 pulse counter rl.b2 interval buffer pointer timehi interval timer MSB timelo interval timer LSB frame_f new frame flag frame_cnt frame counter link_cnt number of consecutive good frames count waitf don't adjust gain flag ghold telemetry in progress flag
SUBSTITUTE SHEET toflag interval timeout flag rf copy of rf control register gain_adj gain adjustment required flag gain_up gain up/down flag sy_max equate defining the max sync interval [8b28]
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
1.6.2 DATA ELEMENTS
toflag timeout occurred flag link_flag communications established flag
$3400 time interval buffer
$6001 rf control register
IEO interrupt control flag missing_f flag indicating interval > 2ms
1.7 LOCAL DATA
Register bank 2 rl,r6,r4
1.8 UNIT LEVEL TEST LIST
<test case description> input values output values
Telem mode, no timeout. a = AAH
PSW = bank 1 $3402 = 12H toflag = 0 $3403 = 34H th0,tlo=1234h rl = 4
P2 = 34H a = AAH rl=02 PSW = bank 1
SUBSTITUTE SHEET Tele mode, timeout. a = AAH a = AAH
PSW - bank 1 PSW = bank l toflag = l toflag = 0
Idle mode, no gain adjust flagged, timer 0 overflow. ghold=0 gain_adj=0
TF0=1 timehi=91H missing_f=l rf=04 rf=4
Idle mode, time interval > 2 msec. a = AAH a - AAH
PSW = bank 1 PSW = bank 1 th0,tl0=9100h ignoref=l ignoref=0
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=l) , frame_f=o frame f=o ignore flag set. gain_adj=0 r6=l frame_cnt=l frame σnt=2 ignoref=l link cnt=l link cnt=l
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=l) , frame_f=0 frame_f=l reception threshold not frame_cnt=l frame cnt=2 reached, ignore r6=l flag clear. gain_adj=0 ignoref=0 link_cnt=l link_cnt=2 link_flag=o link_flag=0
SUBSTITUTE SHEET Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=l) , frame_f=0 frame_f=l reception threshold frame_cnt=l frame_cnt=2 reached, link bad, ignore r6=l r6=l flag clear. gain_adj=0 ignoref=0 link_cnt=37H link_cnt=0 link flag=0 link_flag=ffh
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=l) , frame_f=0 frame_f=l reception threshold frame_cnt=l frame_cnt=2 reached, link good, r6=l r6=l ignore flag clear. gain_adj=0 ignoref=0 link cnt=37H link cnt=o link_flag=ffh link_flag=ffh
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=l) , frame_f=0 frame_f=i reception threshold frame_cnt=l frame cnt=2 reached, ignore flag r6=l clear. gain_adj=0 ignoref=0 link_cnt=37H link_cnt=0 link flag=0 link_flag=ffh
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=6) , frame_f=0 frame_f=l reception threshold not frame_cnt=l frame cnt=2 reached, ignore flag r6=6 clear. gain_adj=0 ignoref=0 * link_cnt=l link_cnt=2 link_flag=0 link flag=0
Idle mode, sync detected, th0,tl0=8a26h sync expected (r6=6) , frame_f=0 frame_f=l reception threshold frame_cnt=l frame cnt=2 reached, ignore flag r6=6 clear. gain_adj=0 ignoref=0 link_cnt=37H link_cnt=0 link_flag=0 link_flag=ffh
Idle mode, Sync when not thO,tlO=8a26h expected, gain not max, r6=4 r6=l wait flag clear. gain_adj=0
$6001=0 $6001=8 rf=4 rf=8 link_flag=ffH link_flag=0 waitf=0 waitf=o
Idle mode, Sync when not th0,tl0=8a26h expected, gain max, wait r6=4 r6=l flag clear. gain_adj=0
$6001=3Ch $6001=0 rf=lCH rf=0 link_flag=ffH link_flag=0 waitf=0 waitf=0
Idle mode, Sync when not th0,tl0=8a26h expected, wait flag set. a=3 gain_adj=0 psw=bank 3 a=3 IEO = 1 psw=bank 3 r6=4 IEO = 0
EET waitf=l waitf=0
Idle mode, no sync when expected, gain not min. th0,tl0=8a30h gain_adj=0 r6=6 r6=0 waitf=0 waitf=l rf=08 rf=04
$6001=0 $6001=4 link_cnt=l link_cnt=0 link_flag=ffh link_flag=0
Idle mode no sync when th0,tl0=8a30h expected, gain min. r6=6 r6=0 gain_adj=0 waitf=0 waitf=l rf=00 rf=00 link cnt=l link cnt=0 link_flag=ffh link_flag=0
Gain_adj flag set, gain up. ghold=0 gain_adj=l gain_up=l STOP:GN UP
Gain_adj flag set, gain ghold=0 down. gain_adj=l gain up=0 ST0P:GN DN
1.9 UNIT LIST
None.
SUBSTITUTE SHEET ++/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
EQUATES
INTERR EQU /INTERRUPT OVERHEAD ERROR (13.5 usec)
LSN_MIN EQU (717*2) /3 ;MIN LSN FIELD TIME LSN_MAX EQU (1204*2) /3 ;MAX LSN FIELD TIME MSN_MIN EQU (1327*2) /3 ;MIN MSN FIELD TIME MSN MAX EQU (1814*2) /3 ;MAX MSN FIELD TIME
INTBUFF EQU 3500H ;TELE 'S INTERVAL BUFFER ADDRESS ISRBUFF EQU 3400H ;ISR'S INTERVAL BUFFER DBUFF EQU 3300H ;DATA BUFFER ADDRESS
MEAS_TOL EQU <(15*2)/3) /ALLOWABLE MEASUREMENT ERROR SKEW EQU 30 ;TIME INTERVAL WINDOW BS EQU ((SKEW*2)/3)/2 ;SKEW TO CENTER OF FIRST BIT SYNCTIME EQU (122*2) /3 /SYNC INTERVAL IDTIME EQU (( (274-122) *2)/3) /TIME TO CENTER OF ID
SYNC_MIN EQU 8B0EH /MIN SYNC INTERVAL
SYNC_AVE EQU 8B18H
SYNC_MAX EQU 8B22H
ID0_MIN EQU 8B25H (adjusted +2 for id compensation)
ID0_AVE EQU 8B2FH (adjusted +2 for id compensation)
ID0_MAX EQU 8B39H (adjusted +2 for id compensation)
ID4_MIN EQU 8B74H
ID4 MAX EQU 8B88H
/min sync = δadOh + 122 - 15.26 - 13.5 = 8b0eh /max sync = 8ad0h + 122 + 15.26 - 13.5 = 8b22h /min 0 ~ 8ad0h + 152.5 - 15.26 - 13.5 = 8b23h /max 0 = 8ad0h + 152.5 + 15.26 - 13.5 = 8b37h
SUBSTITUTE SHEET min 1 = 8ad0h + 152.5 + 15.26 - 13.5 = 8b38h min 4 = 8ad0h + 152.5 + 4 * 30.52 - 15.26 - 13.5 = 8b74h max 4 = min 4 + 30.5 us = 8b88h
MAX TIME EQU 0-(1900/8) /MAX TIMEOUT COUNT (8 MSEC/COUNT)
SKIP **/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
1 TELEM (XMIT TASK)
1.1 CALLED BY:
XMIT TASK
1.2 DESCRIPTION OF UNIT:
This task is called from XMIT when telemetry data is expected following a downlink.
The task begins by initializing the data collection (telem) mode of the ISR (EXTO) and setting the ghold flag.
Register Rl is used to determine when a new interval is placed into the interval buffer at $3400. As intervals are stored, a search is made to detect a sync interval. When a sync is found the next interval is examined. If this interval is a sync interval or (ID field) is not a zero, the routine returns to its sync scanning mode. If a sync followed by a zero ID is found, data interval storage is begun.
Data intervals are placed into the interval buffer ($3400) by the ISR and are extracted from this circular buffer by telem and placed into more permanent storage beginning at $3500. When the intervals are moved the values are normalized and corrected for software overhead error.
As the data intervals are moved telem looks for a timeout or buffer full condition. When either is encountered, interval storage is stopped and the translation phase is begun.
During the interval collection a 1900 msec timer (icg_time) is used to time the response from the IPG. This timer is used to halt data collection if noise pulses are being received at a rate < 45 msec.
The translation phase involves calls to unit GET_FRAME which decodes the intervals stored at $3500 and returns these values to telem. During translation SYNC and ID field errors are ignored.
When all 76 data bytes have been translated, the two halves of the message are compared and, if equal, the message is sent to the MPU. If an error is detected, an error code is returned to the MPU.
1.2.1 GET_FRAME UNIT
The GET_FRAME unit is called after all frames of data have been input (by EXTO) . GETJFRAME decodes the pulse interval values placed into the input buffer and passes the value of the frame ID and data back to the caller. Status, ID value and data will be passed to the calling routine through variables fr__stat, fr_id and fr_data.
1.3 FLOW 1.3.1 PDL
clear ace clear timeout count [to_cnt=0] disable interrupts [EA] clear no mans land counter [NO_MAN_HI,LO] select register bank 2 clear circular buffer pointers [rO,rl] initialize P2 [p2=msb of isrbuff] clear timeout flag [to_f] enable interrupts [EA] initialize destination pointer [dptr=intbuff] set telemetry receive mode [ghold=l] initialize message timer [icg_time=max_time] save copy of isr buffer pointer [int_cnt=rl]
SY1: (Wait for sync interval) while isr pointer unchanged [int_cnt=rl] if timer expired [igc_time = 0] flag error [err_byt=ffH] set num of bytes to mpu [a=l] go complete request [EXIT_COM] endif endwhile
put in telem buffer [call mov_int] bump pointer to next interval [rO+2]
CHECK_SYNC: (Check interval for sync) get interval [@r0] if msb of interval not = sync [high sync_ave] bump source pointer [rO+2] bump saved pointer to next [int_cnt +2] reset data pointer [dptr=intbuff] goto SY1 endif if lsb of interval not = sync [low sync_ave] bump saved pointer to next [int_cnt +2] reset data pointer [dptr=intbuff] goto SY1 endif bump saved pointer to next [int_cnt +2]
ID_WT: (Wait for ID of 0) while isr pointer unchanged [int_cnt=rl] if timer expired [igc_time = 0] flag error [err_byt=ffH] set num of bytes to mpu [a=l] go complete request [EXIT_C0M] endif endwhile put in telem buffer [call mov_int] if interval = ID of zero or 4 [§r0 < idl_min or id3_max<§r0<id5_min] go wait for data [data_wait] else bump no mans count [NO_MAN_HI,LO +1 (16 bit)] if no mans count reached [NO_MAN_HI = 4] goto NOMANJERR endif point back to start of interval [r0-2] go check for sync [goto CHECK_SYNC] endif
DATA_WAIT: (Wait for message to be received) bump saved pointer to next [int_cnt+2] DWl: while isr pointer unchanged [int_cnt=rl] if timer expired or 45 msec timeout or buffer full [igc_time = 0, to_f=l, dph = 39H] go process intervals [COLLECT] endif endwhile get interval sb from isr buffer [§r0] put in telem buffer [call mov__int] bump pointer to next interval [rO+1] bump saved pointer to next [int_cnt +2] goto DW1
COLLECT: (Process collected intervals) turn MPU interrupt off [EX1] turn telemetry interrupt off [EXO] clear telem flag [ghold] turn timer interrupt off [ETO] stop the timer [TRO]' select register bank 2 prevent gain adjust following decode [waitf=l] reset interval counter [r6=0] select register bank 1 init loop counter [frm_cnt=76] init destination pointer [dptr = dbuff] init source pointer save [bphi,bplo = intbuff]
do: (DATA_DO) get frame ID and data [GET_FRAME] dec frame counter [frm_cnt-l] if frame status bad [ (fr_stat & 10110100B) <> 0] go report error [FR_ERR] endif save data [@dptr=fr_data] bump pointer [dptr+1] while (frm cnt > 0)
COMPARE : (Compare message halves) get message length [frm_cnt=38] set pointer to start of data buffer [dptr=dbuff] set p2 to page address [p2=high dbuff] set rO to LSB of second half of message [rO=low dbuff +39]
do: (COMP_DO) get message byte first half [a=§dptr] if halves not equal [a <> §r0] flag error [err_byt=88h] set completion byte count [r4=l] go exit [EXIT_COM] endif decrement counter [frm_cnt-l] bump pointers [dptr+l,r0+l] while (buffer counter <= 0) [frm_cnt]
(NORMAL COMPLETION) show good completion [err_byt=0] set message length [r4=39]
EXIT_COM: (Cleanup and exit) enable gain adjustment [ghold=0] select bank 1 reset isr buffer pointer [p2=high dbuff,r0=0] select register bank 0 save completion count [r4=a] turn timer on [TR0=1] turn timer interrupt on [ETO] enable telem interrupt [EXO] enable MPU interrupt [EX1] exit [ret_err]
NOMANJΞRR: set completion code [err_byt=fdH] set completion count [a=l] go to common code [EXIT_COM]
FR_ERR: set completion code [err_byt=feH] set completion count [a=l] go to common code [EXIT_COM]
M0V_INT: get msb [a=@r0] save msb of interval [tac_hi=a] bump source pointer [rO+1] get lsb of interval [a=@r0] bump pointer [a=@r0] clear carry compute normalized value lsb [a = a - lo (basetime - interr) ] save lsb [tac_lo =a] point back to msb [rO-1] get msb [a=tac_hi] compute normalized value msb [a = a - high(basetime - interr)] save value [@dptr=a] bump destination pointer [dptr+1] get lsb [a=tac_lo] save in buffer [@dptr=a] bump destination pointer [dptr+1] restore a with msb [a=@r0] return to caller [ret]
1.4 CONSTRAINTS
This routine must not destroy register (bank 2) data used by extO. While searching for the start of uplink at the beginning of this task the SYNC and ID fields should be tested as intervals. Hardware test information shows that these fields are more accurately measured by individual intervals instead of summing relative to Pframe.
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
The interrupt processor (EXTO) must place data frame intervals into the buffer before or during the execution of this task.
1.5.2 DATA ELEMENTS
igσ_time input response timer fr_stat from GET_BYTE - operation status fr_id from GET_BYTE - frame ID fr_data from GET_BYTE - frame data
P2 used by telem isr and this task as ; buffer pointer rl telem isr circular buffer pointer (lsb) bphi,bplo buffer pointer used by GET FRAME
1.6 OUTPUT REQUIREMENTS:
1.6.2 DATA ELEMENTS
$3400 address of telem circular interval buffer
SUBSTITUTE SHEET $3500 interval buffer used by this task
$3300 message buffer (assembled message) ghold telem mode flag err_byt task completion code r4.b0 completion data byte count bphi GET_FRAME interval buffer pointer MSB bplo GET_FRAME interval buffer pointer LSB exO EXTO interrupt enable exl EXTl interrupt enable etO Timer 0 interrupt enable trO Timer 0 start/stop waitf Gain (EXTO) wait flag frm_cnt Input frame counter r6.b2 EXTO pulse counter tac_hi temp valiable tac_lo temp variable
1.7 LOCAL DATA
NO_MAN_HI no man's land counter hi
NO_MAN_LO no man's counter lsb cmp_cnt frame counter frm_cnt frame counter (compare) igc_time 8 msec timer decremented by ROM code dptr misc pointer
1.8 UNIT LEVEL TEST LIST
<test case description> input values output values
T Initialization and completion. a=ffh a=0 cmp_cnt=aah cmp_cnt=0 bankl.r0=55h bankl.rO=o bankl.rl=33h bankl.rl=0 icg_time=ffh icg_time=0 int cnt=ffh int cnt=0
Input timer expiration and completion (sync detect phase 1) start: SY1 err_byt=0 bankl.rl=l err_byt=ffh bankl.r0=l bankl.r4=l igc_time=0 trO=l trO=0 et0=l etO=0 p2=34H bank 2 bankl.r0=0 p2=ffh bankl.rl=0 bankl.r4=5 bankl.r4=l ghold=l ghold=0 exO=0 ex0=l
Extract and identify invalid MSB Start:SY1 (high) sync interval p2=34h bankl.rl=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8clbH icg_time=fOH dptr=35ffH
Extract and identify invalid MSB Start:SYl (low) sync interval p2=34h bankl.rl=2 int_cnt=2 bankl.r0=0 dptr=3500H int cnt=0 End:SYl $3400=8albH icg_time=fOH dptr=35ffH
Extract and identify invalid Start:SYl (LSB) sync interval (low) p2=34h bankl.r1=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8bllH icg_time=fOH dptr=35ffH
Extract and identify invalid Start:SYl (LSB) sync interval (high) p2=34h bankl.r1=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8b25H icg_time=fOH dptr=35ffH
Extract and identify valid Start:SYl sync interval p2=34h bankl.rl=2 int_cnt=2 bankl.r0=0 dptr=3502H int_cnt=0 bankl.r0=2 $3400=8blbH icg_time=fOH dptr=35ffH End:ID WT
Input timer expiration and completion (ID 0 detect start: ID_WT phase 1) . err_byt=0 bankl.rl=l err_byt=ffh
STITUTE SHEET bankl.r0=1 bankl.r4=l igc_time=0 End:EXIT COM
Extract and identify invalid Start:ID_WT (MSB) ID interval (low) p2=34h bankl.r1=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8c23H icg_time=fOH dptr=35ffH
Extract and identify Start:ID_WT invalid (MSB) p2=34h
ID interval (high) bankl.rl=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8c36H icg_time=fOH dptr=35ffH
Extract and identify Start:ID_WT invalid (LSB) ID interval p2=34h bankl.r1=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8b22H icg_time=fOH dptr=35ffH
Extract and identify valid Start:ID_WT ID (0) interval p2=34h bankl.r1=2 int__cnt=2 bankl.r0=0 dptr=3502H int cnt=0 bankl.r0=2
UBSTITUTE SHEET $3400=8b23H icg_time=fOH dptr=35ffH End:DWl
Extract and identify invalid Start:ID_WT (LSB) ID interval no mans cmp_cnt=l count not expired. p2=34h cmp_cnt=2 bankl.rl=2 int_cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:SYl $3400=8b22H icg_time=fOH dptr=35ffH
Extract and identify invalid Start:ID_WT
(LSB) ID interval no mans cmp_cnt = feh err__byt=fdH count expired. p2=34h a=l bankl.r1=2 int__cnt=2 bankl.r0=0 dptr=3500H int_cnt=0 End:EXIT_COM $3400=8b22H icg_time=fOH dptr=35ffH
Response timeout (phase 2) Start:DW1 to_f=0 dph=35H icg_time=0 End'.COLLECT
45 msec timeout (phase 2) Start:DW1 to_f=l dph=35H icg_time=fOH End:COLLECT
Buffer overflow (phase 2) Start:DW1 to_f=0 dph=39H icg_time=fOH End:COLLECT
Initialize loop. Start:DATA_D0 ghold=l ghold=0 et0=l etO=0 tr0=l tr0=0 bank 1 bank 2 frm_cnt=0 frm_cnt=76 dptr=0 dptr=3300H bphi=0 bphi=35H bplo=ffh bplo=0 End:DATA DO
Data loop - count expired. Start:DATA_DO . Patch out:GET_FRAME frm_cnt=l frm_cnt=0 fr_stat=0 End:COMPARE
Data loop - normal pass. Start:DATA_DO Patch out:GET FRAME frm_cnt=2 frm_cnt=l dptr=3300H dptr=3301H $3300=0 fr_data=aaH $3300=aaH fr stat=0 End:DATA DO
Data loop - bad frame status. Start:DATA_DO Patch out:GET FRAME frm_cnt=2 frm_cnt=l dptr=3300H dptr=3301H $3300=0 fr_data=aaH $3300=00H err_byt=0 err_byt=feH
SUBSTITUTE SH fr stat=80h acc=l End:EXIT COM
Compare initialization. Start:COMPARE frm_cnt=0 f rm_cnt=38 dptr=0 dptr=3300H p2=0 p2=33H rθ=0 r0=38 End : COMP DO
Compare good - end of buffer Start : COMP DO normal completion. frm_cnt=l frm_cnt=0 dptr=3300H dptr=3301H p2=33H p2=33H r0=26 r0=27
$3300=61h
$3326=61h err_byt=ffH err_byt=0 a=0 a=39 End : EXIT COM
1. 9 UNIT LIST
GET BYTE
++/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SKIP •**/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
GET FRAME UNIT (TELEM TASK) 1.1 CALLED BY:
TELEM TASK
1.2 DESCRIPTION OF UNIT:
This unit is used to decode incomming uplink telemetry time intervals and assemble data frames.
The buffer pointer for GET_FRAME (bphi, bplo) is initialized to the start of the interval buffer by the calling routine. Calls to this unit will extract the next sequential frame from the buffer and will pass this data to the caller.
When called this unit assumes the buffer pointer is pointing at the first interval of the frame. That is, the value which should indicate the sync interval.
This unit is used only for uplink telemetry and is interested only in the LSN and MSN fields of the frames. Each frames intervals will be summed until a time value is collected which exceeds the minimum LSN time. At this time the LSN will be calculated and summing will continue until the minimum MSN time is exceeded. After calculating the MSN value the data will be passed back to the caller in fr_data and the buffer pointer will be incremented to bypass the ending Pframe pulse interval.
Any error in the frame will be returned in fr_stat as follows:
lxxxxxxx = Unused xlxxxxxx = Unused xxlxxxxx = No LSB pulse found
E SHEET xxxlxxxx No MSB pulse found xxxxlxxx Unused xxxxxlxx Unused xxxxxxlx Unused xxxxxxxl Unused
1.2.1 GET VAL UNIT
Unit GET_VAL is called to extract the data value from table time_tab. It is called with rl,r2 = time interval - start of data field time and returns with the data value in the A register.
1.3 FLOW
1.3.1 PDL
save the data pointer [push dph,dpi] get interval buffer pointer [dph=bphi,dpl=bplo] clear time accumulator [tac_hi,tac_lo2=0] clear frame status [fr_stat = 0] clear frame id [fr_id = 0]
GETLSN: get normalized interval [call GET_INT] if not LSN [tac_hi,tac_lo < min_lsn] get next interval [goto GETLSN] endif if missed LSN [tac_hi,tac_lo > max_lsn] flag no LSN [set bit 5 fr_stat] flag gain adjustment [call AGC_LOSS] go check for MSN [goto GETMSN_CHK] endif compute LSN time [rl,r2 = tac_hi,tac_lo - min_lsn] get table data [GET_VAL] save data [fr_data = a]
GETMSN: get normalized interval [call GET_INT]
GETMSN_CHK: if not MSN [tac_hi,tac_lo < min_msn] flag gain adjustment [call AGC_NOISE] get next interval [goto GETMSN] endif if missed MSN [tac_hi,tac_lo > max_msn] flag no MSN [set bit 4 fr_stat] flag gain adjustment [call AGC_LOSS] go exit [goto GF_EXIT] endif compute MSN time [rl,r2 = tac_hi,tac_lo - min_msn] get table data [GET_VAL] save data [fr_data = (a « 4) ORed with fr_data]
GF_EXIT: bump pointer past Pframe [dptr + 2] save buffer pointer [bphi=dph, bplo=dpl] restore dptr [pop dpi,dph] return
GET_INT: get interval MSB from buffer [a=@dptr] bump pointer [dptr+1] save interval [rl=a] get interval LSB [a=§dptr] bump pointer [dptr+1] save LSB [r2,a] compute new time [tac_lo = tac_lo + r2] compute new time [tac_hi = tac_lo + rl] return to caller
1.4 CONSTRAINTS
The higher level routine (TELEM) normalizes the intervals and corrects for error caused by interrupt latency.
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
Corrected time intervals are placed into the interval buffer ($3500) by the calling routine.
The interval buffer pointer (bphi, bplo) is initialized by the caller.
1.5.2 DATA ELEMENTS
bphi interval buffer pointer MSB bplo interval buffer pointer LSB
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
1.6.2 DATA ELEMENTS
bphi interval buffer pointer MSB bplo interval buffer pointer LSB fr_stat frame decode status fr_id frame id value fr data frame data value 1.7 LOCAL DATA rl.b2 pulse interval msb r2.b2 pulse interval lsb r4.bl frame pulse counter
1.7.1 LOCAL EQUATES
lsn_min min value for LSN field [717/1.5] lsn_max max value for LSN field [1204/1.5] msn_min min value for MSN field [1327/1.5] msn max max value for MSN field [1814/1.5]
1.8 UNIT LEVEL TEST LIST
<test #> <test case description> input values output values
Check initialization. dptr=1234h bphi=56h bplo=78h dptr=5678h tac_hi=12h tac_hi=0 tac_lo=34h tac_lo=0 fr_stat=ffh fr_stat=0 fr data=98h fr_data=0 end:GETLSN
Check GET INT. start:GET_INT dρtr=3500h
$3500=12h
$3501=34h rl=0 rl=12h r2=ffh r2=34h
Check GETLSN, good interval, first
SUBSTITUTE EET try. start:GETLSN dptr=3500h fr_stat=0 tac_hi=0 tac_lo=0 fr_stat=0
$3500=02h tac_hi=02
$3501=38h tac_lo=38h rl=00 r2=5Ah stop:GET_VAL
Check GETLSN, 2 short start:GETLSN intervals summing to valid dptr=3500h LSN value. $3500=01
$3501=70h rl=00 $3502=0 r2=5Ah $3503=c8h stop:GET_VAL
Check GETLSN, missed LSN. start:GETLSN dptr=3500h
$3500=03 $3501=7fh fr_stat=20h fr stat=0 stop: AGC LOSS
Check GETMSN, good interval , first try . start : GETMSN dρtr=3500h rl=00 tac_hi=02 r2=99h tac_lo=38h fr_stat=0 fr_εtat=0 tac_hi=04 fr_data=01 tac _ lo=0dh
$3500=01h $3501=d5h stop : GET VAL Check GETMSN, 2 short intervals start:GETMSN summing to valid MSN value. dptr=3500h tac_hi=0 tac_lo=0
$3500=02 $3501=38h rl=00 $3502=01 r2=99h $3503=d5h stop:AGC_NOISE
Check GETMSN, missed MSN. start:GETMSN dptr=3500h $3500=04
$3501=b6h fr_stat=10h fr_stat=0 stop:AGC_LOSS
Check exit code. start:GF_EXIT stack=1122h dptr=5678h bphi=12h bphi=56h bplo=34h bplo=7Ah dptr=H22h
1.9 UNIT LIST
AGC_NOISE gain control noise adjustment AGC_LOSS gain control signal loss adjustment GET VAL table look up
-++/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -++/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
« " ,rw(J4iiι-»r- eu 1 GET_VAL UNIT
1.1 CALLED BY:
GET_FRAME UNIT DMARK UNIT
1.2 DESCRIPTION OF UNIT:
This unit is used to extract the telemetry frame data value from table time_tab returning the data value in the A register.
Note that an extra byte appears after every 60 bytes of table. This is to compensate for the .5 usec error in table resolution incurred for each value group.
1.3 FLOW
1.3.1 PDL
save dptr [stack] compute table index [dptr = time_tab + rl,r2] get value from table [a = @dptr] restore dptr [stack] return to caller [a = data]
1.4 CONSTRAINTS
This unit does NO range checking on the input value (rl, r2) . This must be done by the caller.
1.5 INPUT REQUIREMENTS: 1.5.1 PROCESSING:
1.5.2 DATA ELEMENTS
time tab interval translation table
TIME TAB:
DB 0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0
DB 1,1,1,1,1,1,1,1,1,1
DB 1,1,1,1,1,1,1,1,1,1
DB 2,2,2,2,2,2,2,2,2,2
DB 2,2,2,2,2,2,2,2,2,2
DB 2
DB 3,3,3,3,3,3,3,3,3,3
DB 3,3,3,3,3,3,3,3,3,3
DB 4,4,4,4,4,4,4,4,4,4
DB 4,4,4,4,4,4,4,4,4,4
DB 5,5,5,5,5,5,5,5,5,5
DB 5,5,5,5,5,5,5,5,5,5
DB 5
DB 6,6,6,6,6,6,6,6,6,6
DB 6,6,6,6,6,6,6,6,6,6
DB 7,7,7,7,7,7,7,7,7,7
DB 7,7,7,7,7,7,7,7,7,7
DB 8,8,8,8,8,8,8,8,8,8
DB 8,8,8,8,8,8,8,8,8,8
DB 8
DB 9,9,9,9,9,9,9,9,9,9
DB 9,9,9,9,9,9,9,9,9,9
DB 10,10,10,10,10,10,10,10,10,10
DB 10,10,10,10,10,10,10,10,10,10
DB 11,11,11,11,11,11,11,11,11,11 DB 11,11,11,11,11,11,11,11,11,11
DB 11
DB 12,12,12,12,12,12,12,12,12,12
DB 12,12,12,12,12,12,12,12,12,12
DB 13,13,13,13,13,13,13,13,13,13
DB 13,13,13,13,13,13,13,13,13,13
DB 14,14,14,14,14,14,14,14,14,14
DB 14,14,14,14,14,14,14,14,14,14
DB 14
DB 15,15,15,15,15,15,15,15,15,15
DB 15,15,15,15,15,15,15,15,15,15
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
1.6.2 DATA ELEMENTS
1.7 LOCAL DATA rl.bx pulse interval msb r2.bx pulse interval lsb time tab table of frame field values as follows (located in GET FRAME)
1.7.1 LOCAL EQUATES
1.8 UNIT LEVEL TEST LIST
<test #> <test case description> input values output values Check table lookup, 16 bit index. dptr=1234h rl=θl r2=2Ch A=14 dptr=1234h
1.9 UNIT LIST
None.
++/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SKIP **/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
1 AGC_NOISE UNIT
1.1 CALLED BY:
GET_FRAME
1.2 DESCRIPTION OF UNIT:
This unit is called from GET_FRAME during the telemetry decoding process if an extra RF pulse is detected.
The purpose of the unit is to flag a gain adjustment to the logic contained in the telemetry interrupt service routine (EXTO) .
Two flags are involved, "gain_adj" and "gain_up". The gain_adj flag indicates that the need for a gain adjustment has been determined. The gain_up flag tells EXTO which way to move the gain.
HEET On entry to this unit the gain_adj flag is checked. If a noise adjustment has already been determined, the routine is exited. If a loss adjustment has been flagged, gain_adj is cleared and no adjustment is performed.
1.3 FLOW
1.3.1 PDL
if gain adjustment already flagged [gain_adj=l] if adjustment is loss [gain_up=l] clear adjustment required flag [gain_adj=0] endif else set gain adjust required flag [gain_adj=l] flag decrement gain [gain_up=0] endif return
1.4 CONSTRAINTS
1.5 INPUT REQUIREMENTS:
None.
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
None.
1.6.2 DATA ELEMENTS
gain_adj gain adjustment reguired flag. gain_up increase gain flag.
1.7 LOCAL DATA
None.
1.8 UNIT LEVEL TEST LIST
<test #> <test case description> input values output values
1. Check for flags set, gain_adj=0 gain_adj=l gain_up=l gain_up=o
2. Check for flags cancelling. gain_adj=l gain_adj=0 gain_up=l
3. Check for no change if already set. gain_adj=l gain_adj=l gain_up=0 gain_up=0
1.9 UNIT LIST
None.
++/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SKIP
TE SHEET **/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
1 AGC_LOSS UNIT
1.1 CALLED BY:
GET_FRAME
1.2 DESCRIPTION OF UNIT:
This unit is called from GET_FRAME during the telemetry decoding process when missing RF pulse are detected.
The purpose of the unit is to flag a gain adjustment to the logic contained in the telemetry interrupt service routine (EXTO) .
Two flags are involved, "gain_adj" and "gain_up". The gain_adj flag indicates that the need for a gain adjustment has been determined. The gain_up flag tells EXTO which way to move the gain.
On entry to this unit the gain_adj flag is checked. If a loss adjustment has already been determined, the routine is exited. If a noise adjustment has been flagged, gain_adj is cleared and no adjustment is performed.
1.3 FLOW
1.3.1 PDL if gain adjustment already flagged [gain_adj=l] if adjustment is noise [gain_up=0] clear adjustment required flag [gain_adj=0] endif else set gain adjust required flag [gain_adj=l] flag increment gain [gain_up=l] endif return
1.4 CONSTRAINTS
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
1.5.2 DATA ELEMENTS
None
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
None.
1.6.2 DATA ELEMENTS
gain_adj gain adjustment reguired flag, gain up increase gain flag.
1.7 LOCAL DATA
None.
UTE SHEET 1.8 UNIT LEVEL TEST LIST
<test #> <test case description> input values output values
1. Check for flags set, gain_adj=0 gain_adj=l gain_up=0 gain_up=l
2. Check for flags cancelling. gain_adj=l gain_adj=0 gain_up=0
3. Check for no change if already set. gain_adj=l gain_adj=l gain_up=l gain_up=l
1.9 UNIT LIST
None.
++/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
**/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;
FILE NAME: idle_lib.S
TASK NAME: LNKCHK
FUNCTION: GLOBAL SUPPORT FUNCTION
1 LNKCHK
1.1 CALLED BY:
Time out of pseudo timer 3. 1.2 DESCRIPTION OF UNIT:
•LNKCHK* is a time scheduled task running once every 125 msec to check the status of the telemetry channel. If the PPU is busy, return, leave timer active. Otherwise, reset pseudo timer 3 for 125 msec, send the 'check link status' command to PPU and wait for completion. If the link status is unchanged then exit, else the task updates the link status L.E.D. and vectors to the 'Link Status Changed' handler if the link is good.
•LNKCHK' also maintains the signal strength indicator displayed on line 2 of the LCD. The signal strength indicator consists of the string 'SIGNAL:' and a signal strength value in the range 0-9. When the link is found to be bad, the stability factor stored in the RAM variable STABILITY is decreased. If the link is found to be good, the stability factor is increased. Note that the amount the stability factor is decreased for a bad link is significantly greater than the amount the stability factor is increased for a good link. The displayed signal strength is derived from the normalized gain value minus the stability factor. The value is clipped to keep it within the 0-9 value range.
IF THE LINK GOES FROM BAD TO GOOD THEN THE D0_ANYWAY FLAG WILL BE CHECKED, IF THIS FLAG IS NOT SET THEN THE ROUTINE WILL RETURN IF THE FLAG IS SET THEN THE TIMER PT7 WILL BE CHECKED. IF PT7 IS ON THEN THE DO_ANYWAY FLAG WILL BE SET AND THE ROUTINE WILL EXIT. IF THE TIMER IS NOT ACTIVE, THEN THE HANDLER WILL BE CALLED.
1.2.1 SEND UNIT
This routine is called when a message is to be sent to the
SUBSTITUTE SHEET PPU. A message block is passed that contains the PPU command code followed by any data that is to be sent. The command byte is written to the command register and the remaining data bytes are written one at a time to the PPU data register.
Inputs:
DE - Address of block to send
C - Length of block to send HL - Address of return status handler
1.2.2 PPUGON UNIT
THIS ROUTINE IS GIVEN CONTROL WHEN THE PPU HAS FAILED TO RESPOND TO AN OUTPUT REQUEST OR FAILED TO DELIVER DATA. THE OPERATOR IS NOTIFIED AND THE SYSTEM IS SHUT DOWN. PC, FROM WHERE PPUGON IS CALLED, IS STORED IN NON-VOLATILE RAM.
1.2.3 HEXASC UNIT
Convert a 1 byte value to a 2 char ascii hex representation suffixed by Η1.
Inputs:
A = HEX NUMBER ( 1 BYTE)
1.2.4 DISPLY UNIT
DISPLAYS CHARACTER MESSAGE ON 4 ROW X 40 COLUMN LCD DISPLAY.
Inputs:
[HL] = MESSAGE
C = ROW/COLUMN ADDRESS OF CHARACTER ON LCD B = UNDERLINE FLAG: 8OH. - UNDERLINE THE MESSAGE
00H - NO UNDERLINES 1. 3 FLOW
1. 3 . 1 PDL
—CHECK OUT PPU— if PPU is busy [[PPUSTS]<>0] then set timer to return [[PT3]=0] immediately return else reset timer to 125 ms. [[PT3]=0CH] check link [DE=LNKMSG,C=l,SEND] clear PPU status flag [[PPUSTS]=0] set loop time out value [B=0] loop until PPU responds or time out if no PPU response [[GSTAT] and DIFULL =0] then decrement time out counter [B=B-1] endloop if loop timed out [B=0] then call PPU [PPUGON] mortician (halt operation) save link status [[PPDIN] to stack]
—UPDATE SIGNAL STRENGTH INDICATION— check gain status [DE=GANMSG,C=l,SEND] clear PPU status flag [[PPUSTS]=0] set loop time out value [B=0] loop until PPU responds or time out if no PPU response [[GSTAT] and DIFULL =0] then decrement time [B=B-1] out counter endloop
T if loop timed out [B=0] then call PPU mortician [PPUGON] (halt operation)
Figure imgf000083_0001
convert gain to hex format [HEXASC, [HL]=string] if ok to display signal [[STR_FLG]=0FFH] then save current test [stack=[TEST_ON] ] recording condition turn off auto test [TEST_ON.b4=0 recording display gain value [BC=047H,DISPLY] display 'SIGNAL: [BC=40H,HL=NMSG,DISPLY] string restore auto test [ [TEST_ON=stack] recording
-UPDATE STABILITY FACTOR— restore link status [stack to AF] if link status is [AO0FFH] not good then account for [ [STABILITY]=[STABILITY]+2COH] unstable link else account for [ [STABILITY]=[STABILITY]-0C0H] more stable link
—UPDATE POSITION HEAD LED,
CHECK FOR INTERROGATE CONDITIONS— if link status has [POP AF, A<>[LINKST]] changed then set LED control to current state update RAM status update 810 I/O controller if previous link status [[LINKST]O0FFH] is not good then return else if link is bad [AO0FFH] then return else if not OK to inter [[DO_ANYWAY]=0] then return if timer not on [[PT7]= 0 or OFFH] then vector to link change handler (exit) else set inter flag for next [[DO_ANYWAY]=l] pass return
1.4 CONSTRAINTS
none
1.5 INPUT REQUIREMENTS:
1.5.1 PROCESSING:
none
1.5.2 DATA ELEMENTS NAME DESCRIPTION
PPUSTS PPU status flag
PT3 Link check timer
GSTAT MPU status byte register
STABILITY Link stability condition flag
STR_FLG Signal display flag, controls ; display of signal
LINKST Link status flag DO_ANYWAY Wait flag for Auto-Interrogate PT7 Interrogate retry timer TEST ON Auto test recording status flag
1.6 OUTPUT REQUIREMENTS:
1.6.1 PROCESSING
none
1.6.2 DATA ELEMENTS
NAME DESCRIPTION
PT3 Link check timer
STABILITY Link stability condition flag DO ANYWAY Wait flag for Auto-Interrogate
1.7 LOCAL DATA
NMSG •SIGNAL:' message
LNKMSG Check link status command
GANMSG Check current gain value
1.8 UNIT LEVEL TEST LIST TEST CASES: <test #> <test case description> input values output values
A. If PPU is busy upon entry: [PPUSTS]<>0 a) Verify PT3 reset to time out immediately. [PT3]=0 b) Verify unit exits.
B. If PPU not busy upon entry: [PPUSTS]=0 a) Verify link timer reset to 250 ms. [PT3]=0CH
When checking link and B decremented through all gain status: values while wating on PPU. a) Verify no response from PPU causes system halt.
C. Verify gain normalized to PPDIN=0 values within 2-9.
Verify "SIGNAL" displayed on LCD line 2.
Verify gain of 9 displayed on LCD line 2.
D. Verify gain normalized to PPDIN=7 values within 2-9.
Verify "SIGNAL" displayed on LCD line 2.
Verify gain of 0 displayed on LCD line 2.
E. Like case D where PPDIN=7 but STR_FLAG is 0.
Verify "SIGNAL" and gain of 0 are NOT displayed on LCD line 2.
F. With PPDIN <> OFFH, Cause Stability value to be incremented with No carry
If returned link status link stat from stack <> OFFH is bad: Verify stability factor [STABILITY]=[STABILITY]+2C0H adjusted.
G. With PPDIN <> OFFH, Cause Stability value to be incremented with carry
If returned link status link stat from stack <> OFFH is bad:
Verify stability factor [STABILITY]=[STABILITY]+2C0H adjusted.
H. With PPDIN == OFFH, Cause Stability value to be decremented with No carry If returned link status link stat from stack = OFFH is good. Verify stability factor [STABILITY]=[STABILITY]-0C0H adjusted.
I. With PPDIN == OFFH, Cause Stability value to be decremented with carry If returned link status link stat from stack = OFFH is good. Verify stability factor [STABILITY]=[STABILITY]-OC0H adjusted.
J. with DO_ANYWAY=l, PPDIN=0FFH, LINKST=01FH, PT7 = 0, verify:
EET PORTCR bit 1 is cleared DO_ANYWAY remains set to 1 [LINKSV] stub is vectored to Unit returns with Z flag cleared
K. with DO_ANYWAY=2, PPDIN=0FFH, LINKST=OFFH, PT7 = 0, verify:
PORTCR bit 1 is NOT cleared DO_ANYWAY is NOT set to 1 [LINKSV] stub is vectored to Unit returns with Z flag cleared
L. with DO_ANYWAY=0, PPDIN=0FFH, LINKST=0FFH, PT7 = 0, verify:
PORTCR bit l is NOT cleared DO_ANYWAY is NOT set to 1 [LINKSV] stub is NOT vectored to Unit returns with Z flag set
M. with DO_ANYWAY=l, PPDIN=OFFH, LINKST=0FFH, PT7 = OFFH, verify:
PORTCR bit 1 is NOT cleared DO_ANYWAY is set to 1 [LINKSV] stub is vectored to Unit returns with Z flag cleared
N. with DO_ANYWAY=2, PPDIN=OFFH, LINKST=02H, PT7 = 1, verify:
PORTCR bit 1 is cleared
DO_ANYWAY is set to 1
[LINKSV] stub is NOT vectored to
E SHEET Unit returns with Z flag cleared
$LNKCHK:IDLE_LIB %INPUT
; Type Identifier Input Data
#include <chg_gstat.cfi> ; re-map ppu registers, for direct control #include <cout.cfi> ; re-map display primitives
set line2 I * I
b TEST ENABLE Turn OFF default printer dumps! ; A B C D E F mb STR FLG 1,1,1,1,0,1 Signal Strength Flag l=display
mb SEND [0DDH,2AH,00H,0F6H, \ LD IX, [0F600H] 0DDH,73H,00H, \ LD [IX+0],E 0DDH,72H,01H, \ LD [IX+1],D 0DDH,71H,02H, \ LD [IX+2] ,C 0DDH,023H, \ INC IX 0DDH,023H, \ INC IX 0DDH,023H, \ INC IX 0DDH,22H,00H,0F6H, \ LD [0F600H],IX 0C9H] ,@ RET
mw 0F600H <0F602H> ; where SEND writes mb:6 0F602H OFFH ; init for 2 calls
mb 0F630H [00H, \ NOP
0E5H, \ PUSH HL 21H,08H,0F6H, \ LD HL, 0F608H 034H, \ ; INC [HL] 0E1H, \ ; POP HL 0C9H],§ ; RET
mw LINKSV <0F630H> ; set Addr of LNKSV handler mb 0F608H 0 ; # times LNKSV is vectored to
mb PPUGON:PPU_COM [0OH,0OH] ,@ ;NOP so that we can stop on call
55H ; init to known value mb PT3 66H mb TEST ON 034H
mb PORTCR OFFH / Can't modify PORTC, / but PORTCR will be the same
/ A B C D E F G H I mb DO_ANYWAY 0,0,0,0,0,0,0,0,0,\ / Case A-I Must
INTER 1,2,0,1,2
mb STABILITY 0,0, [OAH,00H] , \ / Cause no borrow case C
[00H,0AH], \ ; Cause Borrow case D [00H,0AH], \ ; Cause Borrow case E [09H,00H], \ ; case F
EET [00H,00H], \ / case G [0BFH,00H], \ / case H [05H,2CH] / case I
signal depends on
PPDIN & STABILITY mb PPDIN / Case C, signal will be 9 / Case D, signal will be 8 / Case E, signal will be 8
Case F
Case G
Case H
Case I
Figure imgf000091_0001
Case J - end
A B C D E F H
mb LINKST 0,0,0,7,7,20,40,02FH,02FH,\ / Case A-I LINKST same as PPDIN - exit via DO_ANYWAY=0
01FH, \ / Case J - exit via bad link
OFFH, OFFH,OFFH, \ / Case K-M 02H ; Case N
/ A B C D E F G H I J K L M N mb PT7 0,0,0,0,0,0,0,0,0,0,0,0,OFFH,1
mb PPUSTS 1,0 / 1 = PPU busy mb GSTAT §,0, DIFULL ; Case B, set to no response
e §,PPUGON,§ Case B, stop on call to PPUGON
UTPUT
Type Identifier Expected Output
mb TEST ON 034H ; original value always saved
; A B C D E F G H I mb DO_ANYWAY 0,0, 0,0,0,0, 0,0,0,\ ; Case A-I Must INTER 1,2,0,1,1 ;
mb PT3 0,0CH
mw 0F602H §, <LNKMSG> ; DE - first call to SEND mb 0F604H @, 1 ; C - first call to SEND
mw 0F605H 0FFFFH,0FFFFH, <GANMSG> ; DE - second call to SEND mb 0F607H OFFH, OFFH, 1 / C - second call to SEND
/ A B C D E F G H I J K L M N mb 0F608H 0,0,0,0,0,0,0,1,0,1,1,0,1,0 / 1 if [LINKSV]
Vectored to
mb PPUSTS 1,0,0
mw STABILITY @,§,0CA02H, \ Case C ok as is 0C009H, \ Case D set to 9 OC009H, \ Case E set to 9 0C902H, \ Case F 0C002H, \ Case G 0000H, \ Case H 0C509H, \ Case I
BSTITUTE SHEET not testing cases J-end
show line2 § , @ , \ Nothing for A-B
'SIGNAL:9******************************* ' , \ Case C
'SIGNAL:0******************************* ' \ Case D
***************************************** \ Case E
•SIGNAL:4******************************* ' \ Case F
'SIGNAL:7*******************************' \ Case G
'SIGNAL:2*******************************' , \ Case H
'SIGNAL:0******************************* ' \ Case I § ignore case J-end
/A B C D E F G H I J K L M N mb PORTCR @, @,§,@,§,@-,@,@,@,0FEH;OFFH,OFFH,OFFH,OFEH
OxxxxxxB, \ / Case A
§, \ / Case B • • doesn't matter XOXXXXXXB, \ Case C - RET at DO_ANYWAY check
XOXXXXXXB, \ Case D - RET at DO_ANYWAY check xOxxxxxxB, \ Case E - RET at DO_ANYWAY check
XOXXXXXXB, \ Case F - RET at DO_ANYWAY check
XOXXXXXXB, \ Case G - RET at DO_ANYWAY check OXXXXXXB, \ Case H - RET at DO_ANYWAY check
XOXXXXXXB, \ Case I - RET at DO_ANYWAY check
XOXXXXXXB, \ Case J - RET 'cause of BAD LINK xOxxxxxxB, \ ; Case K xlxxxxxxB, \ ; Case L - RET after DO ANYWAY check
XOXXXXXXB, \ ; Case M XOXXXXXXB ; Case N
SHEET 1.9 UNIT LIST
NAME STATUS DESCRIPTION
sends command to PPU embalms system converts value to ASCII
Figure imgf000094_0001
++/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
; IF PPU OPERATION IN PROGRESS ; THEN RETURN TO CALLER...
/DO IT AGAIN IN 250 MS IF NO OPERATION ;NO DELAY SO TIMER NEEDS 250 ;STILL NEED FLAG & NEED TO CHECK AGAIN SOON
LNK000: LD [PT3],A RET NZ /GO AROUND AGAIN
/ SEND CHECK LINK MSG TO PPU
/ CLEAR OUT OPERATION IN PROGRESS
/ FAIL SAFE TIME OUT VALUE = 256
/ CHECK FOR RESPONSE FROM PPU
Figure imgf000094_0003
/ NO RESPONSE YET, DECREMENT
HEET ; FAIL SAFE AND REPEAT LOOP
PPU
IS DEAD...
LONG LIVE THE PPU
;SAVE LINK STATUS
; SEND CHECK LINK MSG TO PPU
; CLEAR OUT OPERATION IN PROGRESS
; FAIL SAFE TIME OUT VALUE = 256
; CHECK FOR RESPONSE FROM PPU
; NO RESPONSE YET, DECREMENT ; FAIL SAFE AND REPEAT LOOP
PPU
IS DEAD...
LONG LIVE THE PPU
/ CURRENT RF GAIN /NORMALIZE VALUE
/INVERT IT
;MASK OTHER BITS (ONLY 0 - 7)
Figure imgf000095_0001
/CLEAR CARRY
SUBSTITUTE SHEET ILITY] /GET STABILITY INTO DE
/SUBTRACT OUT STABILITY FACTOR
(USE MSB) /NO BORROW /MIN SIGNAL LEVEL IS 0
NOB
/CONVERT FOR DISPLAY
/LINE 2 CHR 9D = 40H+9H
/load IY with pointer to string
/get the digit we want to display /overwrite the first digit with the display digit
/point to position following display digit /zero terminate display string
Figure imgf000096_0001
/point to start of display string again
/CHECK FLAG FOR DISPLAY
Figure imgf000096_0002
/NO DISPLAY
/GET AUTO TEST STATUS /SAVE AUTO TEST STATUS /SET AUTO TEST TO OFF /SET AUTO TEST TO OFF
/DISPLAY SIGNAL STRENGTH VALUE
/DISPLAY •SIGNAL: ' STRING
/RETRIEVE AUTO TEST STATUS
Figure imgf000096_0003
/RESTORE AUTO TEST'STATUS N0_DIS: POP AF PUSH AF /SAVE IT AGAIN LD HL, [STABILITY] /GET STABILITY VALUE LD DE,02C0H ;INSTABILITY VALUE FOR BAD LINK CP OFFH ;CHECK FOR GOOD LINK JR Z,LGOOD ;LINK IS GOOD ADD HL,DE ;BUMP (IN)STABILITY UP LD A,H CP 10 JR C,NOB2 ;NO CARRY (MAX 7) LD A,9 JR NOB2 LGOOD: LD DE,0C0H /STABILITY VALUE FOR GOOD LINK OR A SBC HL,DE ;DEC (IN)STABILITY)
LD A,H
JR NC,NOB2
LD A,0
LD L,0 ;MIN STABILITY 0 NOB2: LD [STABILITY+1] ,A /STORE MSB
LD A,L
LD [STABILITY] ,A
POP AF GET LINK STATUS BACK
LD HL,LINKST IF STATUS HAS NOT CHANGED,
CP [HL]
JR NZ,LNK021
CP OFFH /IF LINK BAD THEN RETURN TO CALLER
RET NZ /LINK IS BAD NOW.
Figure imgf000097_0001
LNK021: LD [HL],A AND PASS CONTROL TO HANDLER.
COMPLEMENT THE BITS. ISOLATE LED CONTROL BIT
AND SAVE IT GET CURRENT STATUS OF PORT C FORCE LED CONTROL BIT OFF. ET LED CONTROL TO CURRENT STATE UPDATE RAM STATUS.
AND 810 I/O CONTROLLER
ONLY VECTOR IF LINK IS GOOD
Figure imgf000098_0001
LINK BAD
LNK022: LD A, [PT7] /IF TIMER NOT ON THEN INC A / (NOT ON MEANS =0 OR FFH) AND OFEH /TEST BIT 0 CHECKS BOTH CASES JR Z,LNK023 /IS OK TO INTER - TIMER OFF LD A,l /SET DO_ANYWAY FLAG FOR NEXT PASS LD [DO_ANYWAY],A RET /MUST WAIT
LNK023 : LD HL, [LINKSV] / VECTOR TO LINK CHANGE HANDLER. JP [HL] r • • • X • • •
; CHECK LINK STATUS COMMAND / CHECK CURRENT GAIN VALUE
Figure imgf000098_0002
. **/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Claims

WHAT IS CLAIMED IS:
1. In a software-controlled, external programmer for programming by downlink telemetry and receiving by uplink telemetry, data to and from an implanted medical device, the improved method for automatically optimizing gain level to minimize interference in the presence of noise in the uplink telemetry mode, comprising the steps of: providing in said programmer an adjustable gain amplifier dependent upon a gain control input signal gain value for amplifying uplink telemetry radio frequency signals; detecting uplink telemetry signals amplified by said amplifier which match detect criteria; setting the gain control input signal applied to said amplifier to a minimum gain value; starting a first time interval upon setting the gain value/ incrementing said gain value by a predetermined gain factor if no telemetry signal is detected within said first time interval; comparing said incremented gain value to a maximum gain value and resetting said gain value to said minimum gain value each time said incremented gain value reaches said maximum gain value; restarting said first time interval when an amplified signal is detected; measuring the time interval between successive detected uplink telemetry signals and comparing said time interval to first and second formatted data intervals; incrementing said gain value by said predetermined factor when the measured interval between successive telemetry signals exceeds both formatted data intervals; and decrementing said gain value by a decrement gain value factor whenever said interval between successive telemetry signals is less than but not equal to said first and second formatted intervals, whereby said gain value linearly increases and decreases as a function of the interval between telemetry signals.
2. The method of Claim 1 further comprising the steps of: complementing and scaling said gain value to provide a numeric value indicative of relative signal strength; and displaying said numeric value to the user of the programmer in order to simplify positioning of said programmer in relation to said medical device to optimize data transmission.
3. In a software-controlled, external programmer for programming by downlink telemetry and receiving by uplink telemetry, data to and from an implanted medical device, the improvement for automatically optimizing gain level to minimize interference in the presence of noise in the uplink telemetry receive mode, comprising: an adjustable gain amplifier in said programmer dependent upon a gain control input signal gain value for amplifying uplink telemetry radio frequency signals; means for detecting uplink telemetry signals amplified by said amplifier which match detect criteria; means for setting the gain control input signal applied to said amplifier to a minimum gain value; means for starting a first time interval upon setting the gain value/ means for incrementing said gain value by a predetermined gain factor if no telemetry signal is detected within said first time interval/ means for comparing said incremented gain value to a maximum gain value and resetting said gain value to said minimum gain value each time said incremented gain value reaches said maximum gain value/
SUBSTITUTE SHEET eans for restarting said first time interval when an amplified signal is detected/ means for measuring the time interval between successive detected uplink telemetry signals and comparing said time interval to first and second formatted data intervals/ means for incrementing said gain value by said predetermined factor when the measured interval between successive telemetry signals exceeds both formatted data intervals/ and means for decrementing said gain value by a decrement gain value factor whenever said interval between successive telemetry signals is less than but not equal to said first and second formatted intervals, whereby said gain value linearly increases and decreases as a function of the interval between telemetry signals.
4. The apparatus of Claim 1 further comprising: means for complementing and scaling said gain value to provide a numeric value indicative of relative signal strength/ and means for displaying said numeric value to the user of the programmer in order to simplify positioning of said programmer in relation to said medical device to optimize data transmission.
5. In a software-controlled, external programmer for transcutaneously programming by downlink telemetry and receiving by uplink telemetry data to and from an implanted medical device, the improved apparatus for automatically minimizing interference in the presence of noise comprising: adjustable gain amplifier means dependent upon a gain control input signal gain value for amplifying uplink telemetry data signals and providing an output signal/ threshold detector means for comparing said output
STITUTE SHEET signal to preselected detect criteria and providing a telemetry detect signal each time said output signal meets said detect criteria/ means for measuring the time intervals between successive detect signals and providing detect intervals/ gain control signal establishing means for providing said gain control input signal gain value in a range between a minimum and maximum value as a function of the detect intervals further comprising: means for initially setting said gain value to a predetermined low gain initial value within said range/ means for increasing said gain value in the absence of detect signals within a first predetermined time interval/ means for comparing said incremented gain value to a maximum gain value and resetting said gain value to said minimum gain value each time said incremented gain value reaches said maximum gain value.
,
6. The apparatus of Claim 5 further comprising: means for establishing at least first and second data bit reference intervals/ means for comparing each detect interval to said first and second data bit reference intervals and providing a first signal each time said detect interval exceeds the longer of said data bit intervals, a second signal each time said detect interval is less than but not equal to either one or the other of said data bit reference intervals, and a third signal each time said detect interval matches a data bit interval/ and means for increasing said gain value in response to said first signal, decreasing said gain value in response to a second signal, and maintaining said gain value in response to a third signal.
ET
7. The apparatus of Claim 5 further comprising: means for establishing a reference data frame interval and a reference sync interval; and means for comparing each detect interval to said frame interval and increasing said gain value when said detect interval exceeds said frame interval and decreasing said gain value when said detect interval is less than said sync interval.
8. The apparatus of Claim 7 wherein said comparing means provides a sync detect signal each time a detect interval matches a sync interval, and further comprising: means responsive to a sync detect signal for counting subsequent detect intervals within said data frame interval and providing a detect interval count/ means for comparing said count to a frame reference count/ and means for increasing said gain value when said count is less than said reference count and decreasing said gain value when said count is greater than said reference count.
9. In a software-controlled, external programmer for transcutaneously programming by downlink telemetry and receiving by uplink telemetry data to and from an implanted medical device, the improvement for automatically minimizing interference in the presence of noise and providing a real-time indication of the uplink telemetry signal strength to the user of the programmer comprising: adjustable gain amplifier means dependent upon a gain control input signal gain value for amplifying uplink telemetry data signals and providing an output signal/ threshold detector means for comparing said output signal to preselected detect criteria and providing a telemetry detect signal each time said output signal meets said detect criteria/ means for measuring the time intervals between successive detect signals and providing detect intervals/ gain control signal establishing means for providing said gain control input signal gain value in a range between a minimum and maximum value as a function of the detect intervals/ means for complementing and scaling said gain value to provide a signal strength indication numeric value between a minimum and maximum value/ and means for displaying said signal strength value to the user of the programmer in order to simplify positioning of said programmer in relation to said medical device to optimize data transmission.
10. The apparatus of Claim 9 further comprising means for stabilizing said signal strength value.
11. In a software-controlled, external programmer for transcutaneously programming by downlink telemetry and receiving by uplink telemetry data to and from an implanted medical device, the improved method for automatically minimizing interference in the presence of noise comprising the steps of: amplifying uplink telemetry data signals as a function of a gain control input signal gain value and providing an output signal/ comparing said output signal to preselected detect criteria and providing a telemetry detect signal each time said output signal meets said detect criteria/ measuring the time intervals between successive detect signals and providing detect intervals/ providing said gain control input signal gain value in a range between a minimum and maximum value as a function of the detect intervals further comprising: initially setting said gain value to a predetermined low gain initial value within said range/ increasing said gain value in the absence of detect signals within a first predetermined time interval/ and decreasing said gain value to said initial value when the increased gain value equals or exceeds the maximum gain value.
12. The method of Claim 11 further comprising: establishing at least first and second data bit reference intervals/ comparing each detect interval to said first and second data bit reference intervals and providing a first signal each time said detect interval exceeds the longer of said data bit intervals, a second signal each time said detect interval is less than but not equal to either one or the other of said data bit reference intervals, and a third signal each time said detect interval matches a data bit interval/ and increasing said gain value in response to said first signal, decreasing said gain value in response to a second signal, and maintaining said gain value in response to a third signal.
13. The method of Claim 11 further comprising: establishing a reference data frame interval and a reference sync interval/ and comparing each detect interval to said frame interval and increasing said gain value when said detect interval exceeds said frame interval and decreasing said gain value when a sync interval is expected and said detect interval is less than said sync interval.
14. The method of Claim 13 wherein said comparing step provides a sync detect signal each time a detect interval matches a sync interval, and further comprising the steps of: counting said detect intervals within said data frame interval and providing a detect interval count/ comparing said count to a frame reference count/ and increasing said gain value when said count is less than said reference count and decreasing said gain value when said count is greater than said reference count.
15.In a software-controlled, external programmer for transcutaneously programming by downlink telemetry and receiving by uplink telemetry data to and from an implanted medical device, the improved method for automatically minimizing interference in the presence of noise and providing a real-time indication of the uplink telemetry signal strength to the user of the programmer comprising the steps of: amplifying uplink telemetry data signals as a function of a gain control input signal gain value and providing an output signal/ comparing said output signal to preselected detect criteria and providing a telemetry detect signal each time said output signal meets said detect criteria/ measuring the time intervals between successive detect signals and providing detect intervals/ providing said gain control input signal gain value in a range between a minimum and maximum value as a function of the detect intervals/ complementing and scaling said gain value to provide a signal strength indication numeric value between a minimum and maximum value/ and displaying said signal strength value to the user of the programmer in order to simplify positioning of said programmer in relation to said medical device to optimize data transmission.
16. The method of Claim 17 further comprising the step of stabilizing said signal strength value.
PCT/US1991/006663 1990-11-02 1991-09-16 Telemetry gain adjustment algorithm and signal strength indication in a noisy environment WO1992007620A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US608,492 1990-11-02
US07/608,492 US5107833A (en) 1990-11-02 1990-11-02 Telemetry gain adjustment algorithm and signal strength indication in a noisy environment

Publications (1)

Publication Number Publication Date
WO1992007620A1 true WO1992007620A1 (en) 1992-05-14

Family

ID=24436727

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1991/006663 WO1992007620A1 (en) 1990-11-02 1991-09-16 Telemetry gain adjustment algorithm and signal strength indication in a noisy environment

Country Status (3)

Country Link
US (1) US5107833A (en)
AU (1) AU8646691A (en)
WO (1) WO1992007620A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0684783A1 (en) * 1993-12-15 1995-12-06 Pacesetter, Inc. Telemetry system power control for implantable medical devices
EP0850663A1 (en) * 1996-12-24 1998-07-01 Ela Medical Autonomous device, especially active implantable medical device and its external programmer, with dynamic adjustemnt of the transmitting power

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127404A (en) * 1990-01-22 1992-07-07 Medtronic, Inc. Telemetry format for implanted medical device
ATE201787T1 (en) * 1992-11-25 2001-06-15 Simmonds Precision Products DATA PROCESSING STRUCTURES AND METHODS
US5433115A (en) * 1993-06-14 1995-07-18 Simmonds Precision Products, Inc. Contactless interrogation of sensors for smart structures
US5581248A (en) * 1993-06-14 1996-12-03 Simmonds Precision Products, Inc. Embeddable device for contactless interrogation of sensors for smart structures
US5515041A (en) * 1993-06-14 1996-05-07 Simmonds Precision Products Inc. Composite shaft monitoring system
US5602540A (en) * 1993-06-14 1997-02-11 Simmonds Precision Products Inc. Fluid gauging apparatus with inductive interrogation
DE4329898A1 (en) * 1993-09-04 1995-04-06 Marcus Dr Besson Wireless medical diagnostic and monitoring device
SE9401402D0 (en) * 1994-04-25 1994-04-25 Siemens Elema Ab Medical implant
US5591217A (en) * 1995-01-04 1997-01-07 Plexus, Inc. Implantable stimulator with replenishable, high value capacitive power source and method therefor
US5620472A (en) * 1995-01-12 1997-04-15 Pacesetter, Inc. Apparatus and method for dynamically interpreting and displaying a real-time telemetry link
US5562713A (en) * 1995-01-18 1996-10-08 Pacesetter, Inc. Bidirectional telemetry apparatus and method for implantable device
US5630835A (en) * 1995-07-24 1997-05-20 Cardiac Control Systems, Inc. Method and apparatus for the suppression of far-field interference signals for implantable device data transmission systems
US5683432A (en) * 1996-01-11 1997-11-04 Medtronic, Inc. Adaptive, performance-optimizing communication system for communicating with an implanted medical device
US5755737A (en) 1996-12-13 1998-05-26 Medtronic, Inc. Method and apparatus for diagnosis and treatment of arrhythmias
US5836975A (en) * 1996-12-19 1998-11-17 Medtronic, Inc. Method and apparatus for diagnosis and treatment of arrhythmias
US5987356A (en) * 1997-06-05 1999-11-16 Medtronic, Inc. Method and apparatus for diagnosis and treatment of arrhythmias
US6947795B2 (en) * 2001-10-01 2005-09-20 Transoma Medical, Inc. Frame length modulation and pulse position modulation for telemetry of analog and digital data
US6009350A (en) * 1998-02-06 1999-12-28 Medtronic, Inc. Implant device telemetry antenna
US6714811B1 (en) 1999-03-05 2004-03-30 Medtronic, Inc. Method and apparatus for monitoring heart rate
US6508771B1 (en) 1999-03-05 2003-01-21 Medtronic, Inc. Method and apparatus for monitoring heart rate
US6223083B1 (en) 1999-04-16 2001-04-24 Medtronic, Inc. Receiver employing digital filtering for use with an implantable medical device
US6295473B1 (en) 1999-04-16 2001-09-25 Medtronic, Inc. Digital delay line receiver for use with an implantable medical device
US6167312A (en) * 1999-04-30 2000-12-26 Medtronic, Inc. Telemetry system for implantable medical devices
US20020052539A1 (en) * 1999-07-07 2002-05-02 Markus Haller System and method for emergency communication between an implantable medical device and a remote computer system or health care provider
US6820019B1 (en) 1999-07-31 2004-11-16 Medtronic, Inc. Device and method for determining and communicating the remaining life of a battery in an implantable neurological tissue stimulating device
US6304778B1 (en) 1999-08-20 2001-10-16 Cardiac Pacemakers, Inc. Implantable defibrillators with programmable cross-chamber blanking
US6687547B2 (en) 1999-09-14 2004-02-03 Medtronic, Inc. Method and apparatus for communicating with an implantable medical device with DTMF tones
US6263246B1 (en) 1999-09-14 2001-07-17 Medtronic, Inc. Method and apparatus for communications with an implantable device
US6379300B1 (en) 1999-10-08 2002-04-30 Medtronic, Inc. Telemtry system for implantable medical devices
US6644321B1 (en) 1999-10-29 2003-11-11 Medtronic, Inc. Tactile feedback for indicating validity of communication link with an implantable medical device
US6317626B1 (en) 1999-11-03 2001-11-13 Medtronic, Inc. Method and apparatus for monitoring heart rate
US6752765B1 (en) 1999-12-01 2004-06-22 Medtronic, Inc. Method and apparatus for monitoring heart rate and abnormal respiration
US6438407B1 (en) 2000-03-20 2002-08-20 Medtronic, Inc. Method and apparatus for monitoring physiologic parameters conjunction with a treatment
US7801606B2 (en) * 2000-08-29 2010-09-21 Cardiac Pacemakers, Inc. Implantable pulse generator and method having adjustable signal blanking
US6510339B2 (en) * 2000-12-06 2003-01-21 Cardiac Pacemakers, Inc. ECG auto-gain control
US6622044B2 (en) 2001-01-04 2003-09-16 Cardiac Pacemakers Inc. System and method for removing narrowband noise
US6556871B2 (en) * 2001-01-04 2003-04-29 Cardiac Pacemakers, Inc. System and method for receiving telemetry data from an implantable medical device
SE0100284D0 (en) * 2001-01-31 2001-01-31 St Jude Medical Medical communication system
US7001359B2 (en) * 2001-03-16 2006-02-21 Medtronic, Inc. Implantable therapeutic substance infusion device with active longevity projection
US6985773B2 (en) * 2002-02-07 2006-01-10 Cardiac Pacemakers, Inc. Methods and apparatuses for implantable medical device telemetry power management
US7551964B2 (en) * 2002-03-22 2009-06-23 Leptos Biomedical, Inc. Splanchnic nerve stimulation for treatment of obesity
US7239912B2 (en) * 2002-03-22 2007-07-03 Leptos Biomedical, Inc. Electric modulation of sympathetic nervous system
US7937145B2 (en) * 2002-03-22 2011-05-03 Advanced Neuromodulation Systems, Inc. Dynamic nerve stimulation employing frequency modulation
US7236822B2 (en) * 2002-03-22 2007-06-26 Leptos Biomedical, Inc. Wireless electric modulation of sympathetic nervous system
US20090259279A1 (en) * 2002-03-22 2009-10-15 Dobak Iii John D Splanchnic nerve stimulation for treatment of obesity
US7689277B2 (en) * 2002-03-22 2010-03-30 Leptos Biomedical, Inc. Neural stimulation for treatment of metabolic syndrome and type 2 diabetes
US7689276B2 (en) * 2002-09-13 2010-03-30 Leptos Biomedical, Inc. Dynamic nerve stimulation for treatment of disorders
US7702386B2 (en) * 2002-03-22 2010-04-20 Leptos Biomedical, Inc. Nerve stimulation for treatment of obesity, metabolic syndrome, and Type 2 diabetes
US7089057B2 (en) * 2002-04-26 2006-08-08 Medtronic, Inc. Detection of possible failure of capacitive elements in an implantable medical device
US6978181B1 (en) 2002-05-24 2005-12-20 Pacesetter, Inc. Inter-programmer communication among programmers of implantable medical devices
US20030220673A1 (en) * 2002-05-24 2003-11-27 Snell Jeffrey D. Multi-device telemetry architecture
US7986994B2 (en) 2002-12-04 2011-07-26 Medtronic, Inc. Method and apparatus for detecting change in intrathoracic electrical impedance
EP1601413B1 (en) * 2003-02-21 2006-09-20 Medtronic, Inc. Implantable neurostimulator programming with battery longevity indication
US20040199082A1 (en) * 2003-04-03 2004-10-07 Ostroff Alan H. Selctable notch filter circuits
US6901293B2 (en) * 2003-04-07 2005-05-31 Medtronic, Inc. System and method for monitoring power source longevity of an implantable medical device
US7369893B2 (en) 2004-12-01 2008-05-06 Medtronic, Inc. Method and apparatus for identifying lead-related conditions using prediction and detection criteria
US7167747B2 (en) * 2003-05-13 2007-01-23 Medtronic, Inc. Identification of oversensing using sinus R-wave template
US7133718B2 (en) 2003-06-19 2006-11-07 Medtronic, Inc. Method and apparatus for temporarily varying a parameter in an implantable medical device
US7937149B2 (en) * 2003-12-03 2011-05-03 Medtronic, Inc. Method and apparatus for detecting change in physiologic parameters
US7181275B2 (en) * 2003-12-23 2007-02-20 Medtronic, Inc. Method and apparatus for actively determining a coupling interval corresponding to a cardiac vulnerable zone
US7623924B2 (en) * 2004-08-31 2009-11-24 Leptos Biomedical, Inc. Devices and methods for gynecologic hormone modulation in mammals
US7333855B2 (en) * 2004-12-01 2008-02-19 Medtronic, Inc. Method and apparatus for determining oversensing in a medical device
US7266409B2 (en) * 2004-12-01 2007-09-04 Medtronic, Inc. Method and apparatus for determining oversensing in a medical device
US8380320B2 (en) * 2005-09-12 2013-02-19 Medtronic, Inc. Implantable medical device communication system with macro and micro sampling intervals
US8442627B2 (en) * 2005-12-30 2013-05-14 Medtronic, Inc. Advanced thoracic fluid monitoring capability with impedance
US8805526B2 (en) * 2006-05-03 2014-08-12 Cardiac Pacemakers, Inc. Configurable medical telemetry radio system
US8295926B2 (en) 2006-06-02 2012-10-23 Advanced Neuromodulation Systems, Inc. Dynamic nerve stimulation in combination with other eating disorder treatment modalities
EP2114515A1 (en) 2007-01-03 2009-11-11 Medtronic, Inc. Method and apparatus for reducing inappropriate detection of lead-related noise
US20090118777A1 (en) * 2007-08-09 2009-05-07 Kobi Iki Efferent and afferent splanchnic nerve stimulation
US8823382B2 (en) * 2008-04-30 2014-09-02 Medtronic, Inc. System and method for monitoring a power source of an implantable medical device
WO2009148425A1 (en) * 2008-06-02 2009-12-10 Medtronic, Inc. Impedance variability analysis to identify lead-related conditions
US20090299421A1 (en) * 2008-06-02 2009-12-03 Medtronic, Inc. Evaluation of implantable medical device sensing integrity based on evoked signals
EP2320999A1 (en) * 2008-06-02 2011-05-18 Medtronic, Inc. Sensing integrity determination based on cardiovascular pressure
US9037240B2 (en) * 2008-06-02 2015-05-19 Medtronic, Inc. Electrode lead integrity reports
US8200322B2 (en) * 2008-06-02 2012-06-12 Medtronic, Inc. Electrogram storage for suspected non-physiological episodes
US7974690B2 (en) * 2008-06-30 2011-07-05 Medtronic, Inc. Lead integrity testing during suspected tachyarrhythmias
US9522277B2 (en) 2008-07-28 2016-12-20 Medtronic, Inc. Lead integrity testing triggered by sensed signal saturation
US9713701B2 (en) 2008-07-31 2017-07-25 Medtronic, Inc. Using multiple diagnostic parameters for predicting heart failure events
US8255046B2 (en) * 2008-07-31 2012-08-28 Medtronic, Inc. Detecting worsening heart failure based on impedance measurements
US7953488B2 (en) * 2008-07-31 2011-05-31 Medtronic, Inc. Pre-qualification of an alternate sensing configuration
US8078277B2 (en) 2008-10-29 2011-12-13 Medtronic, Inc. Identification and remediation of oversensed cardiac events using far-field electrograms
US10118042B2 (en) 2008-10-31 2018-11-06 Medtronic, Inc. Lead integrity testing triggered by sensed asystole
US8632473B2 (en) 2009-01-30 2014-01-21 Medtronic, Inc. Detecting worsening heart failure based on fluid accumulation with respiratory confirmation
US20100268297A1 (en) * 2009-02-24 2010-10-21 Hans Neisz Duodenal Stimulation To Induce Satiety
US8321030B2 (en) 2009-04-20 2012-11-27 Advanced Neuromodulation Systems, Inc. Esophageal activity modulated obesity therapy
US8340772B2 (en) 2009-05-08 2012-12-25 Advanced Neuromodulation Systems, Inc. Brown adipose tissue utilization through neuromodulation
US8271072B2 (en) * 2009-10-30 2012-09-18 Medtronic, Inc. Detecting worsening heart failure
US8396543B2 (en) * 2010-01-28 2013-03-12 Medtronic, Inc. Storage of data for evaluation of lead integrity
US9480844B2 (en) 2010-10-29 2016-11-01 Medtronic, Inc. Method and apparatus for reducing noise in a medical device
US8712541B2 (en) 2011-01-28 2014-04-29 Medtronic, Inc. Far field telemetry operations between an external device and an implantable medical device during recharge of the implantable medical device via a proximity coupling
US8634927B2 (en) 2011-01-28 2014-01-21 Medtronic, Inc. Medical device recharge systems using a controller in wireless communication with a separate recharge device
US10286217B2 (en) 2011-01-28 2019-05-14 Medtronic, Inc. Far field telemetry communication with a medical device during a recharge session where a prior pairing with the medical device may not exist
US8774909B2 (en) 2011-09-26 2014-07-08 Medtronic, Inc. Episode classifier algorithm
US8437840B2 (en) 2011-09-26 2013-05-07 Medtronic, Inc. Episode classifier algorithm
US8744560B2 (en) 2011-09-30 2014-06-03 Medtronic, Inc. Electrogram summary
US9668668B2 (en) 2011-09-30 2017-06-06 Medtronic, Inc. Electrogram summary
US8886296B2 (en) 2011-10-14 2014-11-11 Medtronic, Inc. T-wave oversensing
US8521281B2 (en) 2011-10-14 2013-08-27 Medtronic, Inc. Electrogram classification algorithm
US10736516B2 (en) 2013-11-21 2020-08-11 Medtronic, Inc. Method and apparatus for accurately determining heart rate variability and sympathetic reserve
US9808632B2 (en) 2015-01-23 2017-11-07 Medtronic, Inc. Implantable medical device with dual-use communication module
US9636511B2 (en) 2015-01-23 2017-05-02 Medtronic, Inc. Tissue conduction communication (TCC) transmission
US9788756B2 (en) 2015-04-20 2017-10-17 Medtronic, Inc. Systems, devices, methods, and computer-readable storage facilitating locating an implantable medical device within a body
US10952686B2 (en) 2016-08-02 2021-03-23 Medtronic, Inc. Mobile application to prompt physical action to measure physiologic response in implantable device
EP3906091A4 (en) * 2019-01-04 2022-09-07 Iota Biosciences, Inc. Ultrasound-based protocol for operating an implantable device
US11717186B2 (en) 2019-08-27 2023-08-08 Medtronic, Inc. Body stability measurement
TWI747057B (en) * 2019-10-07 2021-11-21 宏碁智醫股份有限公司 Heart rhythm processing method, electronic device, and computer program
US11602313B2 (en) 2020-07-28 2023-03-14 Medtronic, Inc. Determining a fall risk responsive to detecting body position movements

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0107483A1 (en) * 1982-10-29 1984-05-02 Medtronic, Inc. Pacemaker programmer with telemetric functions
US4531523A (en) * 1984-10-04 1985-07-30 Medtronic, Inc. Digital gain control for the reception of telemetry signals from implanted medical devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4712179A (en) * 1984-08-15 1987-12-08 Cordis Corporation Method and apparatus for calibrating internal measurements of an implanted cardiac pacer
US5024221A (en) * 1985-05-17 1991-06-18 Siemens-Pacesetter, Inc. Programmable band-pass amplifier for use with implantable medical device
JPH0336328Y2 (en) * 1989-03-30 1991-08-01

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0107483A1 (en) * 1982-10-29 1984-05-02 Medtronic, Inc. Pacemaker programmer with telemetric functions
US4531523A (en) * 1984-10-04 1985-07-30 Medtronic, Inc. Digital gain control for the reception of telemetry signals from implanted medical devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0684783A1 (en) * 1993-12-15 1995-12-06 Pacesetter, Inc. Telemetry system power control for implantable medical devices
EP0684783A4 (en) * 1993-12-15 1996-04-03 Pacesetter Inc Telemetry system power control for implantable medical devices.
EP0850663A1 (en) * 1996-12-24 1998-07-01 Ela Medical Autonomous device, especially active implantable medical device and its external programmer, with dynamic adjustemnt of the transmitting power

Also Published As

Publication number Publication date
AU8646691A (en) 1992-05-26
US5107833A (en) 1992-04-28

Similar Documents

Publication Publication Date Title
WO1992007620A1 (en) Telemetry gain adjustment algorithm and signal strength indication in a noisy environment
US6167310A (en) Downlink telemetry system and method for implantable medical device
US5324315A (en) Closed-loop downlink telemetry and method for implantable medical device
EP0876179B1 (en) Adaptive, performance-optimizing communication system for communicating with an implanted medical device
US6647298B2 (en) Implantable medical device with variable incoming communication signal discrimination, and method for operating same
US4476869A (en) Pacer analyzer
US5549649A (en) Programmable pacemaker including an atrial rate filter for deriving a filtered atrial rate used for switching pacing modes
US6752155B2 (en) Tactile feedback for indicating validity of communication link with an implantable medical device
CA2205374C (en) Modification of pacemaker tachy response based on ffrw sensing
US4969467A (en) Pacemaker with improved automatic output regulation
AU701432B2 (en) Pacemaker tachy determination based on 2:1 sensing
US5792207A (en) Extracorporeal test device for an implantable medical device
EP1427480B1 (en) Controlling noise sources during telemetry
JPH0229271A (en) Cardiac signal detector and heart stimulator
US20220015723A1 (en) Identification of implanted electrode location
EP0562237A1 (en) Dual chamber pacemaker
EP0575674B1 (en) Pacemaker employing tachycardia prevention based on ventricular gradient
US5143065A (en) Implantable device with circadian rhythm adjustment
EP0734741A2 (en) Pacemaker system and method with improved detection of end of retrograde conduction
US4996986A (en) Implantable medical device for stimulating a physiological function of a living being with adjustable stimulation intensity and method for adjusting the stimulation intensity
EP0148486B1 (en) Improved rate adaptive pacemaker apparatus
US5645576A (en) Method and apparatus for controlling the base frequency of a cardiac pacemaker

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU CA JP

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IT LU NL SE

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

Ref country code: CA