SPORTS TRAINING DEVICE

Abstract: A sports training device provides synchronisation signals to induce and guide movements of a sportsperson engaged in a sporting activity. The device comprises a digital logic computer and a tone generator, the computer logic being programmed to activate the tone generator in accordance with stimulus parameters. Means are provided to input into the computer predetermined stimulus parameters based upon a behavioural analysis of models of relevant movement sequences of the sporting activity to cause the tone generator to generate a sequence of auditory pulses having predetermined characteristics. These characteristics such as intensity, duration, quality and the like relate to movements of different parts of the body and/or provide other information concerning the particular movement. The device also includes audio output means through which the generated sounds are relayed to the sportsperson as a preview and guide to the sporting activity.

Description: SPORTS TRAINING DEVICE Field of Invention The invention relates to training a sportsperson for som sporting activity and, in particular, to regulating the move- ments of the sportsperson engaged in that activity. Th invention has application to all kinds of sports and to a wide range of sportspersons including a novice commencing to • learn the rudiments of some sport as well as someone more proficient seeking to improve performance. Background of Invention Although related to the particular activity, sports training has, generally speaking, followed a miscellany of procedures varying from the casual to the systematic. The latter category has involved the employment of coaches, special training facilities and an assortment of sophisticated equip¬ ment. Timing an activity has been commoplace. The invention concentrates on temporal intervals between specific movements and on temporal proportionality of complex movements. Description of the Invention Broadly, in accordance with the invention, predetermined signals are used as timing synchronizers to induce and guide the execution of movements by a sportsperson engaged in a particular sporting activity. The signals may be produced by an electronic device which has been programmed to generate a sequence of auditory pulses having predetermined character¬ istics. In the first place, the predetermined signals are dependent upon the particular sporting activity. In addition, characte- ristics of the sequential pulses are derived from a prior analysis of the movements involved in an appropriate sporting behaviour. The prior analysis may be based upon an optimum model of performance where the sportsperson is being trained to achieve an output for which there is an accepted standard. Alternatively, the prior analysis may be based upon a model derived from a study of the sportsperson 1 s own behaviour. For example, the derived model may be used repetitively by that particular sportsperson in order to achieve consistency in timing. In another example, a number of models may be analysed so that the sportsperson may experiment with different timing strategies. The model may be a human one or it may be mechanical. From the analysis of the appropriate sporting behaviour, stimulus parameters are derived. These parameters may include the onset of movement of a body part, the duration of move¬ ment and the relative timing of movements of different parts of the body. Other information such as speed or force of movement may be included. The stimulus parameters are used to vary characteristics of the auditory pulses such as intensity or duration or quality or the like to relate to movements of different parts of the body and/or to provide other information concerning the particular movement. The stimulus parameters are fed into a programmable computer by such means as a keyboard. The auditory pulses are relayed to the sportsperson by audio output means. Preferably, the audio output means include an individual earpiece for each sportsperson. The audio output means may include a radio link to a remote sportsperson. In either case, timing information may be relayed directly and instantaneously to a sportsperson. In accordance with the invention, a sports training device to provide synchronisation signals to induce and guide movements of a sportsperson engaged in a sporting activity comprises a digital logic computer and a tone generator, the computer logic being programmed to activate the tone generator in accordance with stimulus parameters, means to input into the computer predetermined stimulus parameters based upon a behavioural analysis of models of relevant movement sequences of the sporting activity to cause the tone generator to generate a sequence of auditory pulses having predetermined characteristics and audio output means through which the generated sounds are relayed to the sportsperson as a preview and guide to the sporting activity. Brief Description of the Drawings Fig.1 is a block diagram illustrating a sports training device in accordance with the invention; and Figs.2a and 2b combined show a circuit diagram illustrating one embodiment of a sports training device in accordance with the invention. Detailed Description of the Embodiments To illustrate the invention, two applications thereof will be discussed. For convenience, these applications will be identified as "sports-synch" and "sports-pacer", respectively. A single sports training device may be designed so as to be suitable for use in both applications. Alternatively, separate devices may be designed specifically for one or other application. The sports-synch is intended primarily for what may be described as discrete activities such as hitting a golf ball or hitting a cricket ball. Such activities can be made more precise if the onset and duration of various body movements can be signalled precisely to the sportsperson. Incidentally, those two particularised activities illustrate the flexi¬ bility of the sports-synch to control self-contained, intern¬ ally triggered actions as occur in golf as well as actions which have external timing requirements as in cricket. The ideal golf swing involves synchronous movement of several parts of the body. A sequential signal pattern may be based on an analysis of the golf swing using a human or mechanical model. The synchrony may be signalled to the golfer by a sequence of different auditory tones which signal the onset of movement for different body parts. Preferably, the whole sequence commences with a brief synchronous tone .burst at, for example, 2 per second. This tone burst acts as an onset signal and may be triggered at the golfer's discretion. Th golfer will learn which tones are the trigger for movement o particular parts of the body and will then practise to put the sequence together with the timing indicated. Thus, th golfer will learn to maintain consistency in timing. The sports-synch also has application to cricket battin strokes. Efficient stroke-play in cricket involves a multi¬ plicity of decisions in a short space of time. Sports-sync will enable a batsman to practise the timing of specificall identified shots. The timing sequence of the shot could be based upon an ideal model or, alternatively, on an individual model as, for example, in the case of juniors whose body proportions do not allow them to approach the ideal. An analysis of skilled ball hitting (e.g., Bootsma and Wier- ingen, 1988) indicates that the external trigger for ball hitting is consistently related to the distance the ball is from the eyes. For this reason, the onset of the timing signals generated by a sports-synch for cricket shots will preferably be based upon an analysis of a practised profess- ional playing against a conventional bowling machine. Thus, unlike the sports-synch for golf, the device for cricket is externally triggered. However, like the golfing version, the sports-synch for cricket will generate tones identifying the movement of the certain parts of the body. A batsman will learn which tones relate to particular body parts. He will then practise the shot, initially without a ball and then, ideally, with a bowling machine. Each shot will be identified by a different tonal sequence and, preferably, a different onset signal for the commencement of each shot. The advantage of using the bowling machine is that the batsman could practise a certain shot over and over again provided that the bowling machine is set up to deliver a ball at constant length and velocity. In this event, the timing sequence would preferably be initiated remotely from the bowling machine by, for example, a radio link. If a human bowler were to be used, the timing sequence for the shot could be initiated remotely by a third party such as a coach. Thus the timing of each tone would be programmed in advance from a model such that the sequence for an activity may be triggered in full from a single input. The single input trigger could be initiated manually or by a remote signal from another device such as a bowling machine. The sports-synch could also be reprogrammed by the user in order to change various features of the total event to suit the individual. The sports-synch may be used in other activities which culmi¬ nate in a precise movement which has a timing prerequisite such as high- umping, bowling a cricket ball, putting, etc. All of these activities involve a single sequence of events which should be tailor-made and then initiated singly. On the other hand, the sports-pacer is intended for the timing of measured repetitive movements such as occurs in running and swimming. The essential purpose of this device is to deliver auditory signals which are to be synchronized with the mode of propulsion (e.g., a pace in running or a swimming stroke) such that the pacing feature is immediately convert¬ ible into a measure of velocity. Thus, a sports-pacer acts as a speedometer for the athlete. The accuracy of the speedo¬ meter function is dependent upon measurements of the partic- ular athlete performing over set distances so that paces or strokes per distance can be converted to pulses per unit time. Given this information, it is possible to programme a training regimen for an athlete or a full race without the athlete having constantly to check a time-piece. Preferably, the device would be flexible enough to correct for changes in terrain, simply by the athlete or coach noting the change in distance travelled over changes in slope of running surface. Thus, a race like a marathon could be pro¬ grammed from start to finish. The athlete, in full knowledge of his speed throughout the race, would be able to preset his pace for the race in advance. An athlete would also be able to test out different strategies for racing given that the pacer would enable the athlete to race at different velocities at different stages of the race, with a precise knowledge of what those velocities are. An application of the device which differs slightly from the prior examples is to aid in synchronizing the run-up of a bowler in cricket. Fast bowlers in particular need a precise rhythm when they bowl. A sports-pacer would be able to provide a series of pulses to pace each step in the run-up and the subsequent arm movements leading to the delivery of the ball. A sports-pacer needs to be a more flexible device than a sports-synch. The device would have inbuilt programmes of performance based, for example, upon the measurement of world-class athletes in appropriate races which can be used as a model. The device could also be based upon individual programmes over set distances. The sports training device illustrated in Fig.1 is suitable for both the sports-synch and sports-pacer applications. The device comprises a programmable electronic system made up of three main components. The first is an input device with a keypad which is used to select programmes (if there is more than one programme) and input stimulus parameters. The second is a computer and tone generator with an associated memory made with programmable microchips. The third is an audio amplifier and speaker, through which the sounds generated by the computer are relayed to a sportsperson. The device allows the user to select sounds covering a wide range of frequencies and intensities and arrange them in sequence. The sequence can then be played, on command from the keypad, through any of a number of speaker or earpiece outputs. The device may also contain a display which indicates to the user the precise details (frequency, duration, sequence, etc.) of the information currently programmed. The output characteristics of the device can cover the whole range of audible frequencies of sound, th tonal durations may range from milliseconds to seconds an the total duration of the auditory sequences can be as shor as milliseconds or as long as hours. The device may includ means whereby a number of different auditory sequences can b stored concurrently. Further, the device may incorporate mor than one programme. In this event, the appropriate programm and auditory sequence may be selected through operation of the keypad. Preferably, the audio output means used to relay a sequence of auditory tones to a sportsperson comprises an earpiece which may be worn by the sportsperson. In the case where the same sequence of auditory tones is to be relayed to more than one sportsperson, individual earpieces may be supplied to each person. Where the sportsperson is remotely located as in a marathon, the audio output means should include a radio link. To give greater portability, it is preferred that the training device be battery powered. Figs. 2a and 2b depict a circuit diagram for a sports train¬ ing device according to one embodiment of the invention. With this circuit and the computer programme hereinafter detailed, the training device may be used either as a sports-synch or a sports-pacer. The major differences in function result from the way in which tonal sequences are selected by the programme and are stored in the hardware and triggered by the sportsperson. In the case of the sports-synch function, preparatory signals start off a sequence. These are followed by a series of tones, whose frequency and inter-pulse- intervals have been selected so as to guide a whole-body action involving the movement of many parts. In the case of the sports-pacer function, the range of tones used will be less extensive, since it is the repetitive feature of a part¬ icular movement which will be signalled; however, the output will be such as to cover the repetitive movement sequence for the total duration of a sporting activity, such as the running of a marathon, which takes over two hours. The circuit shown in Figs. 2a and 2b represents a programmable tone sequence generator which is controlled by a Motorola (MC 68705C8) microcontroller UI. The controller UI monitors the input keys of keyboard KI and performs all timing and tone selection functions for the device operation in either of its sports-synch or sports-pacer applications. The tones and times are stored in the processor ROM and are accessed by the CPU to generate precisely controlled tones and accurate durations. The circuit also includes a reset generator (MC34064) which monitors the power supply and holds controller UI in a reset condition during power failure or low battery voltage. Volt¬ age regulator (MC78L05) U3 regulates the battery voltage to give +5 volts for the digital circuit. A generator U4 generates -5 volts from the +5 supply for the microchip of tone generator (ML2035) U5 which takes serial data from controller UI via the SPI in hexidecimal format to produce sine wave. A low power amplifier (LM386) U6 takes sine wav from tone generator U5 and provides sufficient power to driv low impedance head phones or earpiece. The power is provided by a 9 volt battery Bl. For the operation of the training device in the manner described, a programme suitable for use with the circuit shown in Figs. 2a and 2b is as follows:- JProgramable tone sequence generator 5* EQUATES * 5Port A Data/address LO Bus 5Port B address HI Bus 5Port C 0123 In, 4567 Out iPort D Inputs only Data Direction Registers 51/0 Port 5Out Port ; In/Out Port ;# Serial Periphial Interface Registers > Control Register >Status Register j I/O Data Register ;* • Serial Co ms Interface Registers BRR: EQU $0D jBaud Rate Register SCCRi: EQU $0E jControl Reg 1 SCCR2: EQU $0F ;Control Reg 2 scsR: EQU $10 »Status Reg SCDAT: EQU $11 ;l/0 Data Reg 5* Timer Registers JTi er Control Reg jTimer Status Reg jInput Capture Reg HI ; Input Capture Reg LO iOutput Compare HI ;Output Compare LO ;Timer Count HI ;Timer Count LO jTimer alternate Count HI .Timer alternate Count LO ;* Timer Registers in RAM TISR O.OOi second counter TISR 0.1 second counter NE MSECL: EQU $5ό NEWMSECH: EQU $57 ;* Ram Pointers RAMDATA: EQU $58 RAM data IN/OUT RAMADDL: EQU $59 RAMADDH: EQU $5A Next RAM address Temp store Temp store A Temp store X Temp store for ascon Temp store for ascon Tone counter- Flag register- No. of notes in sequence Temp store Key number LCD position pointer Storeit Note sequence counter TISR period counte lo TISR period counter hi 5End of RAM Lo byte ?End of RAM Hi byte .ORG $1FF4 ;SPI ;scι »Timer ; IRQ ;swι ;Reset .ORG $1000 zc: CVB: • .ORG $100 INIT: SEI jDisable MCU interupts RSP ;Reset stack pointer LDA £$FF » STA DDRA jSet up I/O ports STA DDRB }Makes PA fc PB outputs CLR PA ;PA = 0 CLR PB ;PB = o. CLR PRC ;PC = o LDA £$F0 }Port C, Bits 4567 outputs STA DDRC .Bits 3210 inputs XXXXX Initilize control bus and MCU ram AvAv vAXv BSET 7,PB ;CS/E0 for battery ram HI BCLR 4,PRC ;Address Latch Enable LO BSET 5,PRC ;Ram fc LCD R/W HI BCLR 6,PRC ϊLCD strobe line LO BSET 7,PRC .Sine strobe line LO CLR FLAG ;Flaq=0 ***** Initilize SPI fc SCI **** Baud rate = 9600/4MHz = 480072MHz Enable receiver **** Initilize RAM addresses fc sequence counter **** Point to tσp of RAM $7FFF Get contents Next byte $7FFE Next byte $7FFD Restore sequence number counter from ram. **** INITIALIZE THE LCD **** **** LCD ADDRESS A0=0 fc A0=1 **** iStart clock, ims ticks jFunction set jFunction set JFunction set jDisplay on cursor off 5Entry mode, INC address iWrite LCD control reg ;Start clock ;Delay = i S .Wait ImS jSetup 200 loops of logo sign jbefore beeping every 5 loops »Sound 3 beeps ***** FLASH <<SYNCR0 - SPORT>> MESSAGE ***** ***** Wait for Menu select keypress ***** ;Clear LCD Home cursor 5Display SYNCRO - TECH ;Start Millisecond timer i ∑ seconds on ;Check for keypress jAre they equal ;No then check again jStop clock jClear display and home cursor 5Display menu JSR STCLK JStart Millisecond timer LDX £30 ;3 seconds on FLSH: BRCLR 7,PD,MSELC jCheck for keypress CPX HSEC .Are they equal BNE FLSH ;No then check again CLR TCR .Stop clock DEC TIMOUT 5Loop counter BNE LOGO .Keep checking for a keypress LDA £05 5Reset loop counter STA TIMOUT ;for 5 counts BRA TOPB jKeep checking for a keypress ***** Menue select routine ***** MSELC: CLR TCR jStop clock LDA PRC .Read PORTC AND £$0F jMask off top 4 bits CMP £$06 ;lf key other than 6,7,E,F BEQ PLYONY ;selected warning beep sounded CMP £$07 ; rogram reverts to logo/menu. BEQ RSTMEM }Key=$06, play notes no store. CMP £$0E ;Bit 0,flag=0 BEQ PLYSTR ;Key=$07, Reset memory to $0000 CMP £$0F ;Key=$0E, Play and store notes. BEQ PLYMEM y notes in memory. DPYMNU: JSR PEEP JSetup beep for 1 beep JSR KEYRL 5Wait till key released BRA DPYMENU ;Sho menu message again .Keep sca ing keys RSTMEM: JMP RSTRAM »Reset memory to $0000 PLYMEM: JMP PLAYNUM IPlay what's in memory TNEND: JMP T0NEND .End tone sequence SETFLG: JMP SETC CLRFLG JMP CLRC PLYONY: BSET 0,FLAG Play fc store flag = 1 JSR PLYNSTR Set for play only JSR BNK0N BRA UP PLYSTR: BCLR 0,FLAG .Play fc store flag = 0 LDA SEQCNT ; If 1st sequence put end of CMP £$30 jsequnce marker in 1st ram loc BNE N0TFST ;Then 2nd loc is sequence number LDA £$FF »$FF is placed in ram 1st byte STA SCALE j to signify that the next byte JSR STOREIT ; is the sequence number NOTFST: INC SEQCNT ;Add 1 tϋ sequence number and JSR SEQSAVE ;store it in RAM $7FFD ;Get the sequence number- ;and store it ; in next free RAM byte ;Display 'SEQ No: ' ;Sequence number address ;Display sequence number ;for 2.5 seconds **** Tone selection program starts here **** Counter for positioning data i LCD. Initial value =$03 Clear rowb position counter- Notes message Wait till key released Get note from keys Save it Set flag for upper tones Clear- flag for lowe tones Exit collect notes routine if key =$0F Point to last line in table. Compare to 1st colum in table, Got a match, go found No then point to next line in table. ;No match, then try again, FOUND: ;Get note value (2nd column) jDis lay in next LCD position jtest for a sharp, note in TEMP ;High or low note LDA KEYTBL+2,X Note value (3rd fc 4th column) STA MSBY LDA KEYTBL+3,X STA LSBY BRA SCLE HIGHC: LDA KEYTBL+4,X Note value (5th fc 6th column) STA MSBY LDA KEYTBL+5.X STA LSBY SCLE: BRSET 0,FLAG,JPONY flf flag set play only LDA MSBY STA SCALE JSR STOREIT Store tone frequency LDA LSBY STA SCALE JSR STOREIT Store tone frequency The following code gets the period of the tσne (3 bytes) displays and stores it ready for ascon JSR TSTKEY jGet fc test 1st key write to LCD LDA TEMPA . STA DIGIT2 }Save 1st digit ready for ascon LDA £$2E .Decimal point JSR WLCD 5Write to LCD JSR TSTKEY .Get fc test 2nd key write to LCD LDA TEMPA STA DIGIT3 .Save 2nd digit ready fo ascon JSR TSTKEY .Get fc test 3rd key write to LCD LDA TEMPA * STA DIGIT4 ;Save 3rd digit ready for- ascon LDA £$30 jPut zero on end of digits JSR WLCD . in LCD The following code takes the 5 BCD digits stored in DIGIT1-5 and converts them to binary The result is stored in MSDIGIT fc LSDIGIT. Digits 1 fc 5 are always zero. CLR DIGIT1 .Digits 1 fc 5 always zero CLR DIGITS ieg. tone on =01.230 sees CLR MSDIGIT jClear upper byte LDA DIGIT1 ;6et most significant digit STA LSDIGIT jStore in lower byte LDX £$04 jSet index for 4 digits NXTDIG: LDA DIGIT5-i,X Get next digit JSR MULTEN DEC X BNE NXTDIG . Relitive jump to large The following code positions the notes and times in the LCD eg. (A 1.110 B 2.220) X 2 lines Point to next data group in L If =03 then put 4 spaces in L If =02 then go to line 2 i L If =01 then put $ spaces in L Ifnot 3,2, or 1 then must be Initialise data counter to $0 ;Ram full if 2,flag is set jPlay note no store jNext note RFUL; JMP DPYMNU ;Return to the menu TONEND: BRSET 0 , FLAG, TEND Return to menu if tone only LDA £$FF Put $FF in next free byte to STA SCALE JSR STOREIT indicate end of a tone sequence TEND : JMP DPYMNU Return to the menu • ______________________ SETC: BSET 1 , FLA6 Set high tones flag JMP UP Return to key checking routine CLRC: BCLR 1 , FLAG Clear high tones flag JMP UP Return to key checking routine SETROWB: JSR ROWB Set l d to 2nd line BRA FULTST Return to main routine SPFOUR: LDX £$04 Output 4 spaces to LCD MORES: LDA £$20 JSR WLCD DEC X BNE MORES BRA FULTST Return tσ main routine TSTKEY: JSR KEYRL Wait for key release JSR NTKEY CMP £$0C Key > C then no good BH ERROR CMP £$08 Key < 8 then more tests needed BLO TEST BRA OK 8 < key < C then key is ok TEST: CMP £$05 BLO OK If key < 5 then key is ok ERROR: JSR PEEP Beep if key is wrong BRA TSTKEY Then test next key OK: Key ok then search table NXTLIN: for a match Found one No then keep looking AOK: Ascii numbers for LCD BEQ SETSHP BCLR 3,FLAG No sharps BRA NOSHP Sharp note Places a £ symbol after D,F,G,A fc C in LCD If set then play fc store Point to next vac LCD positi If set then play fc store Point to next vac LCD positi 20 positions in 2nd line At the end yet No then get next note Clear rowb position counter- Yes then 2nd ro of LCD Return iOutput two spaces to LCD ;Output one space to LCD ;Return 5* Play note sequence Play it message Wait till key released Get sequence number- from keys Compare to $05 Branch if less than 6 06,07 not valid keys OB,OC,0D,0E,0F are not valid keys Warning tone Keep looking for a valid key jPoint to last line in table. ;Compare to 1st col in table. ;Got a match, go found jNo then point to jnext line in table. ;No match, then try again. ;Get sequence Num (2nd column) ;Store it fo a moment jDisplay in next LCD position jStart at $0000 5 iRead the 1st location CMP £$AA 5 If memory has $AA in 1st BEQ MEMCLR 5 location then memory is clear FINDSEQ: CMP £$FF BEQ FOUNDIT 5Play the sequence LDA RAMADDH .j CMP £$7C jEnd of usable RAM yet? BEQ PANIC jThen end search FNDSEQ: BSR NXTBYTE > BRA FINDSEQ 5Keep looking NXTBYTE: INC RAMADDL iNext byte BNE RAMR ;$FF bytes done yet INC RAMADDH ;Yes new block then RAMR: JSR RRAM ;No, read the address RTS FOUN IT: BSR NXTBYTE CMP TEMP BNE FNDSEQ JSR SHOWIT ;Display 'FOUND SEQUENCE No.' LDA RAMDATA jGet the sequence number JSR WLCD iDisplay the number Data -format in ram is 4 bytes long. The 1st fc 2nd bytes contain the tone frequency. The 3rd fc 4th byte has the period in multiples of 10 milliseconds MEMCLR: JSR CLRMEM iDisp1ay MEMORY EMPTY BRA SQUEND PANIC: JSR FAULT JDisplay ' 32K BYTES SEARCHED SQUEND : CLR MSBY CLR LSBY JSR TONE Inhibit tone generator BCLR 6,FLAG Set for normal timer counters LDX £10 Wait 1.0 sec before sounding JSR DELAYH 3 beeps and returning to menu. JMP TOPA Show menu message again Finished playing sequence. **** Get Key program starts here Ay AY AyXy NTKEY: BRSET 7,PD,NTKEY Wait for key press LDA PRC iGet key AND £$0F jMask off top bits RTS 5Return, $00-$0F in ACC GETKEY: BRSET 7,PD,GETKEY iWait for key press LDA PRC iGet key AND £$0F JMask off top bits ADD £$30 5Convert hex to ASCII JSR WLCD {Display not® in LCD JSR KEYRL jWait for key release RTS JReturn •,X.ViX.VXVXVXVX.V.X-V,7.- fr****** fr*** !* TONE GENERATION SUBROUTINES * _Laf__m ___.rτ¥..yVn PEEP: jPoint to 1st tone in table jNo of tones to play (1) 5 (value of X+No. of tones) BEEP3: JPoint to 1st tone in table JNo of tones to play (3) i (value of X+No. of tones) BEEP: JGet MSBY of tone frequency from itable and Save in MSBY iPoint to LSBY }Get LSBY of tone frequency from itable and Save in MSBY jPlay the tone jSave X iStart the timer ifor a 300 mS period LOOP: . I {Time up? no check again jStop the timer iYes then restore X JPoint to next tone iCheck if more tones ;No more tones? CLR MSBY ;Clear tone stores CLR LSBY jThen stop the tones BRA SENDT TONE Swaps the order of the bytes SENDT Sends the tones to tone generator iSave MSBY iGet the LSBY . iMirror bits iSave mirrored bits in MSBY ϊ iRetrive the MSBY iMirror bits iSave mirrored bits in LSBY .Load LSB to the SPI data iregister and initiate transfer .Wait till finished .Load MSB to the SPI data STA SPDR iregister and initiate transfer ERE: BRCLR 7,SPSR,ERE .Wait till finished BSET 7,PRC iStrobe in data BCLR 7,PRC RTS This routine takes the binary value in NUMBER and produces the mirror immage of the bits. The result of this bit manipulation is left in TEMP. Loop counter {Rotate bit into carry bit ;Rotate carry into next bit J8 bits yet j AAAAAAAAAAAAAAAAAAAAAAA***1 / V V V \f V V ϊ* * ϊ* BATTERY RAM SUBROUTINES * ϊ* * i* RAM address range $0000 - $7FFF * i* RAM address $7FFE fc $7FFF contains pointer to 1st * ϊ* vacant RAM address. * i* RAMDATA contains the data to be writen to and read * i* from the RAM. The 1st free location holds $AA * ϊ* * {XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX •fXvAv πwλAvXVXVXw . AVAV,AyAV . AYVA,AV VA,,AVXVAVAVAVΛVX,V.XVXiV.-XVX,VX>„X.X ι ._X ι _X.X^Xi'XV.X.V.V.Λv vΛvAvXvXvΛvXvΛvΛuΛv7i ;* Routine to store data in battery backed ram * {* At the end of this subroutine addresses $7FFF fc E * i* contain the address of the next free byte in ram. * i* The data in this byte is $AA. * • I ^X.X. " --tf -tf-V- v.-V. «.-V v v v v v v. v v v v v v v v f ΛV Λ V- ΛV Λ V- A V A V A V A Vι A Vi A V VA V v ^ Λ v A v A v - 7V1--^V A v - Λ vT7 vΓ i$7FFF = Address of ram pointer {Hi byte JGet the contents of $7FFF fo iRAM pointer Hi byte. DEC RAMADDL J$7FFE = Lo byte JSR RRAM SRead RAM address $7FFE for STA RAMPNTL iRAM pointer Lo byte. ;RAMPNT HfcL now contain the address of next free ram byte jTh ε address has to be put into RAMADDR H fc L STA RAMADDL JPut Lo byte in RAMADDL LDA RAMPNTH * STA RAMADDH jPut Hi byte in RAMADDH LDA SCALE iGet tone frequency STA RAMDATA iPut it where WRAM can get it JSR WRAM JStore it in RAM {** The following code increments ram address counter * {** and stores it back to $7FFF fc $7FFE, next free byte * {Point to next ram address i= 00 yet? No, then away {Yes, then point to next block {The battery ram is full AWAY: iSet RAM address to $7FFF . i {Get next RAM address Hi byte {Put it where WRAM can get it {Store it in RAM ($7FFF) DEC RAMADDL iSet RAM addres to $7FFE LDA RAMPNTL iGet next RAM address Lo byte STA RAMDATA iPut it where WRAM can get it JSR WRAM iStore it in RAM ($7FFE) RTS {Return ϊ* The following code writes $FF then $00 then $55 * i* then $AA in turn to all 32K bytes of RAM. * i* The sequence counter is reset to zero ($7FFD) . * {* $AA is then writen to the 1st byte of RAM. * RSTRAM: JSR TESTMSGA {RAM message CLR RAMADDH {Point to bottom of RAM CLR RAMADDL BLOCK: JSR TESTING {Test RAM INC RAMADDL {Next byte BNE BLOCK {$00 yet? No then do some more INC RAMADDH {Yes then next block BPL BLOCK {$7FFF bytes done yet JSR TESTMSGB {Finished message LDX £20 J JSR DELAYH {Display for 2 sees LDA £$AA CMP RAMDATA jDoes it =$AA BEQ D 5Yes then keep going Z=l JMP FAULTY {No then fault Z=0 D: RTS {Last test leaves RAM i location = $AA FAULTY: JSR WRNMSG {Sound warning beep RTS SEQSAVE: LDA £$7F iSequence number address STA RAMADDH i in RAM= $7FFD LDA £$FD STA RAMADDL LDA SEQCNT iGet sequence count STA RAMDATA iPut it where WRAM can get it JSR WRAM iWrite to RAM ($7FFF) RTS iReturn SEQGET: LDA £$7F {Sequence number address STA RAMADDH 5 in RAM= $7FFD LDA £$FD STA RAMADDL JSR RRAM {Get number in RAM STA SEQCNT {Put it in counter RTS {Return V V VV V V \ A A A AA A7 fYYYYYYYYYYYY YYYY..I x VxVxYxYxYxVxYxYxYxYxVxYxYxVxYxYxVxY * * * LIQUID CRYSTAL DISPLAY SUBROUTINES * * LCDIR Sets address A0=0 RS=0 * * LCDDR Sets address A0=1 RS=i * * WCTRL Writes to control register R/W=0 * * RCTRL Reads control register R/W=i * * WLCD Writes to data register R/W=0 * * PORTC Bitό Provides strobe pulse for LCD * * LCBUSY DB7=1 Then LCD Busy. Returns when DB7=0 * * NOTE: All LCD subroutines should leave control * * lines in original state. * y vyy v trxV.x.V.x-Yx,Vx.V.x-Y.x-Y,xVx. xV,xVxVxYxVxVxV ROWA: LDA £$80 JSet cursor to 1st row BRA WCTRL ϊ ROWB: LDA £$C0 {Set cursor to 2nd row WCTRL: JSR LCDIR JSet LCD IR address A0=0/RS=0 STA PA jWrite control word to LCD BCLR 5,PRC JR/W = 0 BSET 6,PRC JE = 1 Strobe E line on LCD BCLR 6,PRC JE = 0 BSET 5,PRC JR/W = 1 RTS {Return RCTRL: JSR LCDIR JSet LCD IR address (RS =0) CLR PA > STA DDRA ;P0RTA=input BSET 6,PRC {Strobe E line on LCD (R/W=i) LDA PA JRead BCLR 6,PRC JE = 0 RTS iReturns with LCD data in ACC WLCD: JSR LCDDR JSet LCD IR address (RS =1) STA PA jWrite data word to LCD BNKON: LDA £$0D jDisplay on/off control JSR WCTRL jDisplay on cursor off LDX £01 JSR DELAYM JWait imS RTS BNKOFF: LDA £$OC Display on/off control JSR WCTRL {Display on cursor off LDX £01 JSR DELAYM JWait ImS RTS . Y v y Y \ I A A A A 7 IP'XVXVXYXVXYXYXVXVXYXYXYXV7, f rx,γx v .xYx Y7 \ J* MISCELANEOUS SUBROUTINES * ϊ* ADDRESS LATCH ENABLE, * { * SAVE AfcX, RESTORE AfcX, * i* KEYRL, DELAY * { • ********** ALE: BSET 4,PRC {ALE = 1 BCLR 4,PRC {ALE = 0 RTS JReturn SAVE: STA TEMPA {Save A STX TEMPX {Save X RTS {Return RESTORE: LDA TEMPA {Restore A LDX TEMPX {Restore X RTS {Return DELAYM Uses X and MSEC to give a varrible length delay in O.OOi SEC increments. DELAY Uses X and HSEC to give a varrible length delay in 0.1 SEC increments. DELAYM: JSR TIMEINIT {Start clock L00P2: CPX MSEC ;Compare X with LOW counter BNE L00P2 Loop till equal BRA RTN jStop clock and return DELAYH: JSR STCLK jStart clock L00P3: CPX HSEC Compare X with HIGH counter BNE L00P3 {Loop till equal RTN: CLR TCR JStop clock RTS ;Return KEYRL: BRCLR 7,PD,KEYRL JWait till key released RTS JReturn J ******************************************************* J * LCD Messages * next next TESTMSGB: JSR ROWB {2nd line Df display CLR X 5 «0 REPTV: LDA MESGB,X {Get character JSR WLCD {Display it INC X • > CPX £20 {20 chrs yet BCS REPTV {No keep going RTS {Return. LCD cusor left at next {position. DPYSEQ: {Clear LCD JX=0 REPTW: {Get character {Display it I {8 chrs yet {No keep going {Return. LCD cusor left at next {position. {X=0 {Get character {Display it » {20 chrs yet {No keep going {2nd line {X«0 {Get character JDisplay it » {20 chrs yet {No keep going {Return WRNMSG: CLR X RPTZ: LDA WRNMESG,X JGet character JSR WLCD iDisp1ay it INC X CPX £20 i20 chrs yet BCS RPTZ {No keep going RTS {Return rt Y Y*■__*x****xxxy-j f V V V V V Timer Subroutines * ********** f* TIMEINIT: LDA £*F0 Initialise TISR to give a ImS STA TICL time delay LDA £*01 Hex *01F4-4 =$01F0 STA TICH Dec 0500-4 =0496 eg, 500 x 2uS=lms This code gets the contents of free running counter stores it in a tempory location, adds contents of TICL fc TICH to it, then stores it back into the Output Compare Register Zero milliseconds Zero hunthseconds Enable Bit 6 for interupt Clear Flags Clear processor interupt Return frXYXYVΛXYVΛYAVAVAYAAVAYYAVAXYXVXVXVXVXVXYXVXYXYXYXYXVXYXVXYXYYAXYYAXVXYXYXVXYAV XYTY * YAXYXYXYXVXYXVXY i* Timer Interupt Service Routine * e****xxxxxxxxxxxxx***********xxxxxxxxxxxxxx****** TISR: SEI Interupt Service Routine Gets the current value of timer counter, adds TICL fc H to it and stores it back into timer Output Compare Reg If clock = 2uS period of interupt = 2uS * 500 = imS STA TOCRH LDA TEMP2L STA TOCRL BRSET 6,FLAG,T0TM Set for tone timer MSEC counter +1 100 ImS counts yet No then return Yes then zero counter lOOmS counter Tone timer, counts down in irnS decrements to zero then sets tone end flag. Tone period finished T imer F l ags C l eared Return From Interupt J* LCD MESSAGES * ' <<SYNCRO - SPORT>> * • MENU: SELECT NUMBER.' *l:PLAY/SAVE 2:REPLAY' • 3:PLAY ONLY 4:MEMRST' • PLAY ONLY NO STORE ' • NOTE/TIME: ' 'PLAY SEQUENCE: ' MEMORY EMPTY ' 32K BYTES MEMORY ' RESET RAM CLEARED ' 32K BYTES CHECKED ' 'Found sequence No ' 'TESTING 32K BYTE RAM* ♦ Finished testing RAM' 'SEQ No: ' '<<< WARNING >>>' '< RAM IS FULL >* '<<< RAM FAULTY >>>' {****** XXXXXXXXXX*X************************************ f* TABLES fc CONSTANTS * KEYTBL: FCB ΦOO, 'D',Φ0C,Φ27,Φ18,ΦE4 FCB ΦOl, 'E',Φ0C,ΦE0,Φ19,ΦC0 FCB Φ02, 'F' ,Φ0D,ΦA4,*1B,*48 FCB Φ03, 'F' ,*0E,Φ74,Φ1C,ΦE8 FCB Φ04, '6' ,Φ0F,Φ50,Φ1E,*A0 FCB Φ05, '6',Φ10,*39,*20,*72 FCB Φ08, 'A',Φ11,Φ30,Φ22,Φ60 FCB Φ09, 'A',Φll,ΦόE,Φ22,ΦDC FCB ΦOA, 'B',*13,Φ4A,Φ2ό,Φ94 FCB ΦOB, 'C ,*14,*70,Φ28,ΦE0 FCB OC, 'C ,Φ15,ΦA8,Φ2B,Φ50 FCB ΦOD, 'D',Φ16,ΦF2,Φ2D,*E4 FCB Φ07, 'R' ,*00,*00,ΦOO,ΦOO SEQTBL: FCB ΦOO, '1' FCB ΦOl, '2' FCB Φ02,'3' FCB Φ03,'4' FCB Φ04,'5' FCB Φ05,'6' FCB Φ08,'7' FCB Φ09, '8' FCB ΦOA, '9' TIMTBL: FCB ΦOO,Φ01,'l' FCB Φ01,Φ02,'2' FCB Φ02,Φ03, '3* FCB Φ03,*04, '4' FCB Φ04,Φ05,'5' FCB *08,*0ώ,'ό' FCB *09,Φ07, '7' FCB Φ0A,Φ08, '8' FCB Φ0B,Φ09, '9' FCB ΦOC, OO, '0' TONETBL: FCB Φ0C,Φ27 FCB Φ0D,ΦA4 FCB Φ0F,Φ50 FCB Φ11,Φ30 FCB Φ13,Φ4A FCB Φ15,ΦA8 FCB Φ18,Φ4E FCB Φ1B,Φ48 FCB Φ1E,ΦA0 FCB $22,$60 END The software and hardware, as described, are subject to modification as may be necessary to adapt the training device to a variety of other athletic functions which have not been described specifically in this application. Other changes and modifications will be apparent to persons skilled in the art and may be made without departing from the broad concepts of the invention as herein described and claimed.

Claims: CLAIMS 1. A sports training device to provide synchronisation signals to induce and guide movements of a sportsperson engaged in a sporting activity comprising a digital logic computer and a tone generator, the computer logic being programmed to activate the tone generator in accordance with stimulus parameters, means to input into the computer predetermined stimulus parameters based upon a behavioural analysis of models of relevant movement sequences of the sporting activity to cause the tone generator to generate a sequence of auditory pulses having predetermined characteristics and audio output means through which the generated sounds are relayed to the sportsperson as a preview and guide to the sporting activity. 2. A device as claimed in Claim 1, wherein the sequence of auditory pulses signal the onset of specific movements to be performed by the sportsperson. 3. A device as claimed in Claim 1, wherein the sequence of auditory pulses signal the onset and duration of specific movements to be performed by the sportsperson. 4. A device as claimed in Claim 1, wherein the predetermined characteristics of the pulses relate to movements of different parts of the body. 5. A device as claimed in Claim 4, wherein the predetermined characteristics also signal additional information concerning the movements to be performed. 6. A device as claimed in Claim 1, wherein said audio output means includes an earpiece to be worn by the sportsperson. 7. A device as claimed in Claim 1, wherein the audio output means includes a radio link. 8. A device as claimed in Claim 1, wherein the means to input stimulus parameters includes a keyboard. 9. A device as claimed in Claim 1, including means whereby a number of different auditory sequences may be stored concurrently. 10. A device as claimed in Claim 1, wherein means are included to store a plurality of programmes.

Inventors: DAWSON RONALD GERRY, DAWSON, RONALD, GERRY
Applicants: DAWSON RONALD GERRY, DAWSON, RONALD, GERRY
Application year: 1992
Main classification: A63B26
IPC codes: A63B24, A63B69, A63B71, G07C1, G10L13