KR100494310B1 - How to detect the eject button on the tray - Google Patents

How to detect the eject button on the tray Download PDF

Info

Publication number
KR100494310B1
KR100494310B1 KR10-1998-0001056A KR19980001056A KR100494310B1 KR 100494310 B1 KR100494310 B1 KR 100494310B1 KR 19980001056 A KR19980001056 A KR 19980001056A KR 100494310 B1 KR100494310 B1 KR 100494310B1
Authority
KR
South Korea
Prior art keywords
tray
routine
chattering
pressed
eject button
Prior art date
Application number
KR10-1998-0001056A
Other languages
Korean (ko)
Other versions
KR19990065667A (en
Inventor
윤승렬
Original Assignee
디지털 비디오 시스템스 인코퍼레이션
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 디지털 비디오 시스템스 인코퍼레이션 filed Critical 디지털 비디오 시스템스 인코퍼레이션
Priority to KR10-1998-0001056A priority Critical patent/KR100494310B1/en
Publication of KR19990065667A publication Critical patent/KR19990065667A/en
Application granted granted Critical
Publication of KR100494310B1 publication Critical patent/KR100494310B1/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B17/00Guiding record carriers not specifically of filamentary or web form, or of supports therefor
    • G11B17/02Details
    • G11B17/04Feeding or guiding single record carrier to or from transducer unit
    • G11B17/0401Details
    • G11B17/0405Closing mechanism, e.g. door
    • G11B17/0407Closing mechanism, e.g. door controlling the loading of the record carrier
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B19/00Driving, starting, stopping record carriers not specifically of filamentary or web form, or of supports therefor; Control thereof; Control of operating function ; Driving both disc and head
    • G11B19/02Control of operating function, e.g. switching from recording to reproducing
    • G11B19/06Control of operating function, e.g. switching from recording to reproducing by counting or timing of machine operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs

Landscapes

  • Feeding And Guiding Record Carriers (AREA)

Abstract

본 발명은 트레이의 이젝트 버튼을 검출하여 이젝트 버튼을 인터럽트 포트뿐만이 아닌 일반 포트에도 연결 가능하도록 하여 인터럽트 포트를 다른 용도로 사용하기 위한 것으로, 이러한 본 발명은 트레이를 초기화시킨 다음 일정시간 반복적으로 이젝트버튼이 올바르게 눌려졌는지를 검색하는 채터링 루틴을 호출하여 이젝트버튼이 눌려졌는 지를 판별하여, 이젝트버튼이 눌려지면 트레이가 완전히 닫혀있는 상태에서는 트레이를 이젝팅시키는 오픈 루틴을 호출하고 트레이가 열려있는 상태에서는 트레이를 로딩시키는 클로즈 루틴을 호출하며, 트레이 오픈 동작 중이거나 트레이 클로즈 동작 중에 이젝트버튼이 눌려지면 지금의 루틴에서부터 리턴되고 그 반대 동작을 트레이 상태 변수에 저장하여 몇 번이라도 오픈, 클로즈의 변환 동작이 수행되도록 함으로써, 인터럽트 포트와 인터럽트 벡터 및 타이머를 다른 용도로 사용할 수 있게 됨에 따라 여유롭게 시스템 설계에 임할 수 있고 업그레이드 없이도 시스템을 효율적으로 사용할 수 있으며, 인터럽트 루틴의 처리를 플래그를 사용한 일반 루틴으로 완전 변환시킴으로써 다른 인터럽트 처리 루틴들도 일반 루틴으로 바꾸어 사용할 수 있게 되는 것이다.The present invention is to detect the eject button of the tray to enable the eject button to connect to the general port as well as the interrupt port to use the interrupt port for other purposes, the present invention initializes the tray and then repeatedly eject the button for a predetermined time Calls a chattering routine that retrieves whether the button has been pressed correctly to determine if the eject button has been pressed.If the eject button is pressed, it calls an open routine that ejects the tray when the tray is fully closed. When the eject button is pressed during the tray open operation or the tray close operation, it returns from the current routine and the reverse operation is stored in the tray state variable to open or close the conversion operation many times. Even if Locking allows you to use the interrupt ports, interrupt vectors, and timers for other purposes, freeing up system design, using the system efficiently without upgrading, and completely converting interrupt routine processing to generic routines with flags. Other interrupt handling routines can be replaced with regular routines.

Description

트레이의 이젝트버튼 검출방법How to detect eject button on tray

본 발명은 트레이를 사용하는 CD(Compact Disk, 컴팩트 디스크)-플레이어나 비디오 CD 플레이어(오토체인저) 또는 DVD(Digital Video Disk, 디지털 비디오 디스크)-플레이어와 같은 광학 매체 장치에 관한 것으로, 특히 트레이(Tray)의 이젝트(Eject) 버튼을 검출하여 이젝트 버튼을 인터럽트 포트뿐만이 아닌 일반 포트에도 연결 가능하도록 하여 인터럽트 포트를 다른 용도로 사용할 수 있도록 하는 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to optical media devices such as compact disc (CD) -players or video CD players (autochangers) or DVD (digital video disks) -players using trays, in particular trays ( The present invention relates to a method of detecting an eject button of a tray so that the eject button can be connected to a general port as well as an interrupt port so that the interrupt port can be used for other purposes.

일반적으로 DVD-플레이어나 시디-플레이어는 음향 및 영상신호를 기록한 디스크를 재생시킬 수 있는 장치이다.Generally, a DVD player or a CD player is a device capable of playing a disc on which sound and video signals are recorded.

이러한 일반적인 트레이를 사용하는 DVD-플레이어나 시디-플레이어 장치는, 도1에 도시된 바와 같이, 오픈 리미트 버튼(50)과 클로즈 리미트 버튼(60)의 신호를 입력받아 트레이(40)의 오픈/클로즈 동작을 제어하는 마이컴(10)과; 상기 마이컴(10)의 제어에 따라 전압차이로 강약이 조절된 트레이 구동 제어신호를 출력하는 드라이브부(20)와; 상기 드라이브부(20)의 제어신호에 따라 트레이(40)를 구동시키는 트레이 구동모터(40)와; 상기 트레이 구동모터(40)의 구동에 따라 오픈되거나 클로즈되는 트레이(40)와; 상기 트레이(40)의 오픈 동작이 완료되면 동작하여 상기 트레이(40)가 오픈완료되었음을 상기 마이컴(10)에 알리는 오픈 리미트 버튼(50)과; 상기 트레이(40)의 클로즈 동작이 완료되면 동작하여 상기 트레이(40)가 클로즈 완료되었음을 상기 마이컴(10)에 알리는 클로즈 리미트 버튼(60)으로 구성된다.DVD-players or CD-players using such a common tray, as shown in FIG. 1, receives the signals of the open limit button 50 and the close limit button 60 to open / close the tray 40. A microcomputer 10 for controlling an operation; A drive unit 20 for outputting a tray driving control signal whose strength and weakness are adjusted by voltage differences according to the control of the microcomputer 10; A tray driving motor 40 for driving the tray 40 according to the control signal of the drive unit 20; A tray 40 opened or closed according to the drive of the tray driving motor 40; An open limit button 50 which operates when the opening operation of the tray 40 is completed and informs the microcomputer 10 that the tray 40 is open; When the closing operation of the tray 40 is completed, the operation is configured as a close limit button 60 to notify the microcomputer 10 that the tray 40 has been closed.

이와 같이 구성된 종래의 트레이 구동 장치는 마이컴(1)에서 트레이(4)를 구동시킬 것인지 또는 정치시킬 것인지, 그리고 구동시킨다면 오픈/클로즈(Open/Close) 중 어느 것인지 만을 제어하는 신호를 출력하여 드라이브부(2)로 입력시키게 동작하였다. 그래서 드라이브부(2)는 방향만 다를 뿐 항상 일정한 출력이 나오게 되었다.The conventional tray driving apparatus configured as described above outputs a signal for controlling only whether the tray 4 is driven or left in the microcomputer 1 and, if so, a signal for controlling only whether the tray 4 is open or closed. (2) was operated. Therefore, the drive unit 2 is different only in the direction and always comes out a constant output.

도2는 종래 이젝트버튼(1)이 동작할 경우의 인터럽트 루틴을 보인 흐름도이다.2 is a flowchart showing an interrupt routine when the conventional eject button 1 is operated.

이에 도시된 바와 같이, 이젝트버튼(1)이 눌려지면 다른 인터럽트를 금지한 다음 채터링 후 이젝트버튼(1) 연결포트를 다시 한번 검사하여 이젝트버튼(1)이 올바르게 눌려졌는지를 검사하는 단계(ST1 - ST3)와; 상기 이젝트버튼(1)이 올바르게 눌려지지 않았으면 다른 인터럽트를 허용하고, 인터럽트 루틴을 끝내고 리턴하는 단계(ST4)(ST5)와; 상기 이젝트버튼(1)이 올바르게 눌려지면 타이머를 온 시키는 단계(ST6)와; 상기 타이머를 온 시킨 다음 현재 트레이(5) 상태에 따라서 클로즈된 상태이면 모터(4)를 온 시켜 트레이(5) 오프닝을 하고, 오픈된 상태 또는 스톱 상태이면 모터(4)를 온 시켜 트레이(5)를 클로즈시키며, 클로징 상태이면 모터(4)의 회전을 반대로 하여 트레이(5)를 오프닝시키고, 오프닝 상태이면 모터(4)의 회전을 반대로 하여 트레이(5)를 클로징 시킨 다음 각각의 해당 상태에 따라 플래그를 세팅하고 다른 인터럽트를 허용한 후 인터럽트 루틴을 끝내고 리턴하는 단계(ST7 - ST10)로 구성되었다.As shown in the figure, when the eject button 1 is pressed, another interrupt is prohibited, and after the chattering, the eject button 1 is checked again to check whether the eject button 1 is correctly pressed (ST1). ST3); If the eject button (1) is not pressed correctly, accepting another interrupt, and ending and returning an interrupt routine (ST4) (ST5); Turning on a timer (ST6) when the eject button (1) is pressed correctly; After the timer is turned on, if the state is closed according to the current tray 5 state, the motor 4 is turned on to open the tray 5, and if the timer is opened or stopped, the motor 4 is turned on to turn the tray 5 on. ), The tray 5 is opened by reversing the rotation of the motor 4 in the closing state, and the tray 5 is closed by reversing the rotation of the motor 4 in the opening state. The procedure consists of setting the flag and allowing another interrupt, then ending and returning the interrupt routine (ST7-ST10).

도3은 종래 오픈 리미트 버튼(7) 또는 클로즈 리미트 버튼(6)이 동작할 경우의 인터럽트 루틴을 보인 흐름도이다.3 is a flowchart showing an interrupt routine when the conventional open limit button 7 or the close limit button 6 is operated.

이에 도시된 바와 같이, 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트 중 어느 포트가 온 상태인지를 검사하여 플래그를 세팅하는 단계(ST11)와; 상기 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트가 모두 온이거나 모두 온이 아니면 인터럽트 루틴을 끝내고 리턴하는 단계(ST12)와; 상기 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트 중 어느 한 포트가 온이면 타이머를 오프시킨 다음 트레이(5)의 클로즈 상태를 검사하는 단계(ST13)(ST14)와; 상기 트레이(5)가 클로즈 상태이면 트레이(5) 처킹후 인터럽트 루틴을 끝내고 리턴하는 단계(ST15)와; 상기 트레이(5) 클로즈 상태가 아니면 손으로 트레이(5)를 밀거나 트레이 버튼이 눌려져서 트레이(5)가 클로징 상태된 전환되었는 지를 판단하는 단계(ST16)와; 상기 트레이(5)가 클로즈 상태로 전환되면 트레이 클로징을 하고 트레이 클로징 상태로 플래그를 세팅한 다음 인터럽트 루틴을 끝내고 리턴하는 단계(ST17 - ST19)로 구성되었다.As shown therein, a step of setting a flag by checking which port of the close limit button 6 connection port and the open limit button 7 connection port is in an on state (ST11); When the close limit button 6 connection port and the open limit button 7 connection port are both on or not on, ending and returning an interrupt routine (ST12); Turning off the timer if any one of the close limit button (6) connection port and the open limit button (7) connection port is turned on, and then inspecting the closed state of the tray (ST13) (ST14); If the tray 5 is in a closed state, ending and returning an interrupt routine after the tray 5 chucking (ST15); Determining whether the tray 5 is switched to the closed state by pushing the tray 5 by hand or pressing a tray button when the tray 5 is not in a closed state (ST16); When the tray 5 is switched to the closed state, the tray is closed, the flag is set to the tray closing state, and the interrupt routine is finished and returned (ST17 to ST19).

도4는 종래 타이머가 스타트된 후의 인터럽트 루틴을 보인 흐름도이다.4 is a flowchart showing an interrupt routine after a conventional timer is started.

이에 도시된 바와 같이, 타이머를 오프시켜 인터럽트 카운터를 증가시키고 인터럽트 카운트가 3초 이상인지를 판별하는 단계(ST21 - ST23)와: 상기 인터럽트 카운트가 3초 이상이면 모터(4)를 오프시키고 트레이(5) 스톱 상태로 플래그를 셋팅한 후 인터럽트 루틴을 끝내고 리턴하는 단계(ST24 - ST26)와; 상기 인터럽트 카운트가 3초 이상이 아니면 현재 트레이(5) 상태에 따라서 오프닝 상태이면 모터(4)의 회전을 반대로 하여 트레이를 클로징시키고, 클로징 상태이면 모터(4)의 회전을 반대로 하여 트레이(5) 오프닝을 하며, 오픈된 상태 또는 클로즈된 상태이면 에러 리턴을 호출한 다음 타이머를 온 시키고 인터럽트 루틴을 끝낸 다음 리턴하는 단계(ST27 - ST29)로 구성되었다.As shown here, the steps of turning off the timer to increment the interrupt counter and determining whether the interrupt count is 3 seconds or more (ST21-ST23) and: if the interrupt count is 3 seconds or more, turn off the motor 4 and the tray ( 5) ending the interrupt routine and returning after setting the flag in the stop state (ST24-ST26); If the interrupt count is not more than 3 seconds, the tray 5 is closed by reversing the rotation of the motor 4 in the opening state according to the current tray 5 state, and the tray 5 is reversed by reversing the rotation of the motor 4 in the closing state. Opening, and if it is open or closed, it consists of calling error return, turning on the timer, ending the interrupt routine, and then returning (ST27-ST29).

이와 같이 구성된 종래의 트레이의 이젝트버튼에 의한 인터럽트 방법의 동작을 첨부한 도면에 의거 상세히 설명하면 다음과 같다.The operation of the interrupt method by the eject button of the conventional tray configured as described above will be described in detail with reference to the accompanying drawings.

먼저 도2의 이젝트버튼(1)이 동작할 경우의 인터럽트 루틴은 이젝트버튼(1)을 누를 때마다 호출되어 실행되는 루틴이다. 그래서 인터럽트 루틴의 처리 중 다시 인터럽트 루틴이 호출되는 것을 막는다(ST1). 그리고 인터럽트 루틴 자체도 긴 시간 동안의 타이밍을 요구하는 루틴이 아니기 때문에 다른 인터럽트를 금지하고 채터링 후 이젝트버튼(1) 연결포트를 다시 한번 검사하여 이젝트버튼(1)이 올바르게 눌려졌는지를 검사한다(ST2)(ST3). 이처럼 이젝트버튼(1) 연결포트를 다시 한번 검사하여 이젝트버튼(1)이 올바르게 눌려지지 않았으면 다른 인터럽트를 허용한 후 인터럽트 루틴을 끝내고 리턴한다(ST4)(ST5).First, the interrupt routine when the eject button 1 of FIG. 2 operates is called and executed every time the eject button 1 is pressed. This prevents the interrupt routine from being called again during the processing of the interrupt routine (ST1). And since the interrupt routine itself is not a routine that requires a long time, prohibit other interrupts and check the eject button 1 connection port again after chattering to see whether the eject button 1 is correctly pressed ( ST2) (ST3). In this way, the eject button 1 connection port is checked once again, and if the eject button 1 is not pressed correctly, another interrupt is allowed and the interrupt routine ends and returns (ST4) (ST5).

그리고 이젝트버튼(1) 연결포트를 다시 한번 검사하여 이젝트버튼(1)이 올바르게 눌려지면 타이머를 온 시킨다(ST6). 그래서 타이머를 온 시킨 다음 현재 트레이(5) 상태에 따라서 트레이(5)가 클로즈된 상태이면 모터(4)를 온 시켜 트레이(5) 오프닝을 하고, 트레이(5)가 오픈된 상태 또는 스톱 상태이면 모터(4)를 온 시켜 트레이(5)를 클로즈시키며, 트레이(5) 클로징 상태이면 모터(4)의 회전을 반대로하여 트레이(5)를 오프닝시키고, 트레이(5) 오프닝 상태이면 모터(4)의 회전을 반대로하여 트레이(5)를 클로징 시킨다(ST7). 그리고 각각의 해당 상태에 따라 플래그를 세팅하고 다른 인터럽트를 허용한 후 인터럽트 루틴을 끝내고 리턴하게 된다(ST8 - ST10).In addition, the eject button 1 is connected to the port once again, and when the eject button 1 is correctly pressed, the timer is turned on (ST6). Thus, if the timer is turned on and the tray 5 is closed according to the current tray 5 state, the motor 4 is turned on to open the tray 5, and the tray 5 is opened or stopped. The tray 4 is closed by turning the motor 4 on, and when the tray 5 is closed, the rotation of the motor 4 is reversed to open the tray 5, and when the tray 5 is opened, the motor 4 is closed. Reverse the rotation of the tray 5 to close (ST7). After setting the flag according to each state and allowing other interrupts, the interrupt routine ends and returns (ST8-ST10).

한편 도3의 인터럽트 루틴은 오픈 리미트 버튼(7) 또는 클로즈 리미트 버튼(6)이 동작할 경우(즉, 오프닝이나 클로징 동작이 완결된 경우) 호출되어 실행되는 루틴이다.On the other hand, the interrupt routine of Fig. 3 is a routine that is called and executed when the open limit button 7 or the close limit button 6 is operated (i.e., the opening or closing operation is completed).

그래서 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트 중 어느 포트가 온 상태인지를 검사하여, 클로즈 리미트 버튼(6)이 온 상태이면 트레이(5) 클로즈 상태로 플래그를 세팅하고, 오픈 리미트 버튼(7)이 온 상태이면 트레이(5) 오픈 상태로 플래그를 세팅한다(ST11). 그리고 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트가 모두 온이거나 모두 온이 아니면 인터럽트 루틴을 끝내고 리턴한다(ST12).Therefore, it is checked whether the port of the close limit button (6) connection port or the open limit button (7) connection port is turned on. If the close limit button (6) is turned on, the flag is set to the tray (5) closed state. If the open limit button 7 is turned on, the flag is set to the open state of the tray 5 (ST11). If the close limit button 6 connection port and the open limit button 7 connection port are both on or not on, the interrupt routine ends and returns (ST12).

그리고 클로즈 리미트 버튼(6) 연결포트와 오픈 리미트 버튼(7) 연결포트 중 어느 한 포트가 온이면 트레이(5)의 동작이 완료되었으므로 타이머를 오프시킨 후 트레이(5)의 클로즈 상태를 검사한다(ST13)(ST14). 그래서 트레이(5)가 클로즈 상태이서 클로즈가 완료되었다면 약간의 딜레이로 트레이(5)를 처킹시킨 후 인터럽트 루틴을 끝내고 리턴한다(ST15).If any one of the close limit button 6 connection port and the open limit button 7 connection port is turned on, the operation of the tray 5 is completed. Thus, the timer is turned off and the close state of the tray 5 is examined ( ST13) (ST14). Thus, if the tray 5 is closed and the closing is completed, the tray 5 is chucked with a slight delay, and the interrupt routine ends and returns (ST15).

여기서 트레이(5) 클로즈 상태가 아니면 오픈 완료된 상태이기 때문에 대기 상태로 있다가 손으로 트레이(5)를 밀면 트레이를 클로징 동작 개시시킨 후 플래그 세팅, 인터럽트 루틴을 끝내고 리턴하고, 트레이 버튼이 다시 눌러졌다면 인터럽트 루틴으로 호출되므로 다시 돌아왔을 때 본 루틴도 끝내고 리턴시킨다(ST16 - ST19).In this case, if the tray 5 is not closed, it is in the open state. If the tray 5 is in the standby state and the tray 5 is pushed by hand, the closing operation of the tray is started, the flag setting and the interrupt routine are finished and returned. Since it is called as an interrupt routine, when it returns, the routine ends and returns (ST16-ST19).

한편 도4의 인터럽트 루틴은 타이머가 스타트된 후 3초 안에 트레이 오픈이나 클로즈 완료가 안되어 결국 타이머가 스타트된 후 3초가 되면 본 루틴으로 호출되어 실행되는 루틴이다.Meanwhile, the interrupt routine of FIG. 4 is a routine that is called and executed when the tray is not opened or closed in 3 seconds after the timer is started and finally reaches 3 seconds after the timer is started.

그래서 이미 제한 시간이 지났으므로 타이머를 오프시켜 클리어하고, 인터럽트 카운터를 1 증가시킨다(ST21)(ST22). 그리고 인터럽트 카운트가 3초 이상인지를 판별하여(ST23), 인터럽트 카운트가 3초 이상인 경우(즉, 3초 안에 트레이(5)가 오픈이나 클로즈 완료가 안되어 재시도 한 것이 3회 이상인 경우)에는 모터(4)를 오프시키고 트레이(5)를 스톱 상태로 한 다음 인터럽트 루틴을 끝내고 리턴한다(ST24 - ST26).Therefore, since the time limit has already elapsed, the timer is turned off to be cleared and the interrupt counter is incremented by one (ST21) (ST22). If the interrupt count is 3 seconds or more (ST23), and if the interrupt count is 3 seconds or more (that is, if the tray 5 has not been opened or closed in 3 seconds and has been retried more than 3 times), (4) is turned off, the tray 5 is stopped, and the interrupt routine ends and returns (ST24 to ST26).

또한 인터럽트 카운트가 3초 이상이 아니어서 아직 재시도 횟수가 3회가 안되었다면 현재까지의 트레이(5) 동작과 반대되는 동작을 개시시킨다. 즉, 현재 트레이(5) 상태에 따라서 트레이(5) 오프닝 상태이면 모터(4)의 회전을 반대로하여 트레이를 클로징시키고, 트레이(5) 클로징 상태이면 모터(4)의 회전을 반대로 하여 트레이(5) 오프닝을 하고, 트레이(5) 오픈된 상태 또는 클로즈된 상태이면 에러 리턴을 호출한 다음 다시 타이머를 스타트시킨 후 인터럽트 루틴을 끝내고 리턴한다(ST27 - ST29).In addition, if the interrupt count is not more than three seconds and the number of retries has not yet been three, the operation opposite to the operation of the tray 5 so far is started. In other words, if the tray 5 is opened according to the current tray 5 state, the rotation of the motor 4 is reversed to close the tray. If the tray 5 is closed, the rotation of the motor 4 is reversed to reverse the tray 5. ), The tray 5 is opened or closed, and an error return is called. Then, the timer is started again and the interrupt routine ends and returns (ST27 to ST29).

그러나 종래의 방법은 트레이를 올바르게 동작시키는 데에만 인터럽트 포트를 최소 2개 인터럽트 벡터 3개 및 타이머를 사용하였다. 그러므로 시스템 구성시 부족할 수 있는 인터럽트 포트, 인터럽트 벡터 및 타이머를 사용함으로써, 다른 용도로 인터럽트 포트와 인터럽트 벡터 및 타이머가 필요할 때 처리에 어려움이 발생하게 되고, 때로는 마이컴을 상위 버전으로 업그레이드해야만 하는 문제점이 발생하였다.However, the conventional method used at least two interrupt ports and three interrupt vectors and a timer only to operate the tray correctly. Therefore, by using interrupt ports, interrupt vectors, and timers, which may be insufficient in system configuration, it becomes difficult to process when interrupt ports, interrupt vectors, and timers are needed for other purposes, and sometimes the problem of having to upgrade micom to a higher version is needed. Occurred.

이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 본 발명의 목적은 트레이의 이젝트 버튼을 검출하여 이젝트 버튼을 인터럽트 포트뿐만이 아닌 일반 포트에도 연결 가능하도록 하여 인터럽트 포트를 다른 용도로 사용할 수 있도록 하는 트레이의 이젝트버튼 검출방법을 제공하는 데 있다.Accordingly, the present invention has been proposed to solve the conventional problems as described above, and an object of the present invention is to detect the eject button of the tray to enable the eject button to be connected not only to the interrupt port but also to a general port. The present invention provides a method of detecting an eject button of a tray that can be used as a tray.

상기와 같은 목적을 달성하기 위하여 본 발명에 의한 트레이의 이젝트버튼 검출방법은,Eject button detection method of the tray according to the present invention to achieve the above object,

트레이가 열려져 있으면 트레이를 닫고 초기화시킨 다음 일정시간 반복적으로 이젝트버튼이 올바르게 눌려졌는지를 검색하는 채터링 루틴을 호출하여 이젝트 버튼이 눌려졌는 지를 판별하는 단계와; 상기 이젝트버튼이 눌려지면 트레이가 완전히 닫혀있는 상태에서는 트레이를 이젝팅시키는 오픈 루틴을 호출하고, 트레이가 열려있는 상태에서는 트레이를 로딩시키는 클로즈 루틴을 호출하는 단계와; 상기 트레이 오픈 루틴을 호출하여 오픈 동작 중이거나 클로즈 루틴을 호출하여 클로즈 동작 중에 이젝트버튼이 눌려지면 지금의 루틴에서부터 리턴되고 그 반대 동작을 트레이 상태 변수에 저장하여 몇 번이라도 오픈, 클로즈의 변환 동작이 수행되도록 하는 단계로 이루어짐을 그 기술적 구성상의 특징으로 한다.If the tray is open, closing and initializing the tray, and repeatedly calling the chattering routine for retrieving whether the eject button has been pressed correctly for a predetermined time to determine whether the eject button has been pressed; Calling an open routine to eject the tray when the tray is completely closed when the eject button is pressed, and calling a close routine to load the tray when the tray is open; If the eject button is pressed during the open operation by calling the tray open routine or by the close routine, it is returned from the current routine and the reverse operation is stored in the tray state variable to open or close the conversion operation many times. It is characterized by the technical configuration that consists of the steps to be performed.

이하, 상기와 같이 구성된 본 발명 트레이의 이젝트버튼 검출방법의 기술적 사상에 따른 일실시예를 상세히 설명하면 다음과 같다.Hereinafter, an embodiment according to the technical concept of the eject button detection method of the present invention tray configured as described above is as follows.

본 발명이 적용되는 트레이를 사용하는 장치의 구성 및 동작은 도1에 도시된 바에 따라 상술된 설명과 동일하다.The configuration and operation of the apparatus using the tray to which the present invention is applied are the same as described above as shown in FIG.

도5는 본 발명에 의한 트레이(5)의 이젝트버튼 검출방법을 보인 흐름도이다.5 is a flowchart showing an eject button detection method of the tray 5 according to the present invention.

이에 도시된 바와 같이, 트레이(5)가 열려져 있으면 클로즈 루틴을 호출하여 트레이(5)를 닫고 초기화시킨 다음 이젝트버튼이 올바르게 눌려졌는지를 검색하여 이젝트버튼이 올바르게 눌러지지 않았으면 5ms지연 후 채터링 루틴을 호출하여 채터링을 제거하는 단계(ST31 - ST34)(ST44)(ST45)와; 상기 이젝트버튼이 올바르게 눌려진 경우에는 트레이(5)가 완전히 닫혀있는지 검색하여 닫혀있는 경우에는 트레이(5)를 이젝팅시키는 오픈 루틴을 호출하고, 트레이(5)가 열려있는 상태에서는 트레이(5)를 로딩시키는 클로즈 루틴을 호출하는 단계(ST35 - ST37)와; 상기 트레이 오픈 루틴을 호출하여 오픈 동작 중이거나 클로즈 루틴을 호출하여 클로즈 동작 중에 이젝트버튼이 눌려지면 채터링 루틴을 호출하여 채터링을 제거하고, 이젝트버튼이 조작되지 않는 경우에는 다시 이젝트 버튼이 눌러지면 이를 감지할 수 있도록 변수를 초기화하고 오픈, 클로즈의 변환 동작이 수행되도록 하는 단계(ST38 - ST43)로 구성된다.As shown in the figure, if the tray 5 is opened, the close routine is called by closing the tray 5, and then initialized. Then, the eject button is pressed correctly. If the eject button is not pressed correctly, the chattering routine is delayed after 5 ms. Calling to remove chattering (ST31-ST34) (ST44) (ST45); When the eject button is pressed correctly, the tray 5 is searched to see if it is completely closed. If the eject button is closed, an open routine for ejecting the tray 5 is called. When the tray 5 is open, the tray 5 is opened. Calling the closing routine to be loaded (ST35-ST37); When the eject button is pressed during the open operation by calling the tray open routine or by the close routine, the chattering routine is called to remove the chattering, and when the eject button is not operated, the eject button is pressed again. Initializing a variable to detect this, and performing the conversion operation of the open and closed (ST38-ST43).

상기에서 채터링 루틴은, 도6에 도시된 바와 같이, 이젝트버튼(1)이 눌려졌는지를 판별하는 단계(ST51)와; 상기 이젝트버튼(1)이 눌려졌으면 계속 이젝트버튼(1)을 누르고 있는 지 다시 떼었다가 누른 건지 판별하는 단계(ST52)와; 상기 이젝트버튼(1)이 다시 떼었다가 눌려졌으면 채터링을 제거하고, 이젝트버튼(1)을 올바르게 누른 것이 맞는 지를 판별하는 단계(ST53)(ST54)와; 상기 이젝트버튼(1)을 올바르게 누른 것이 맞으면 이젝트버튼(1)을 계속 누르고 있어도 다음 번 호출되어 들어올 때부터는 계속 이젝트버튼(1)이 눌려지는 것을 무시하고 진행하도록 세팅한 다음 리턴하는 단계(ST55)(ST56)와; 상기 이젝트버튼(1)이 눌려지지 않거나 상기 이젝트버튼(1)이 계속 눌려지거나 상기 이젝트버튼(1)이 올바르게 눌려지지 않으면 채터링을 초기화한 후 리턴하는 단계(ST57)(ST58)로 구성된다.In the above chattering routine, as shown in Fig. 6, a step of determining whether the eject button 1 is pressed (ST51); If the eject button (1) has been pressed, determining whether the eject button (1) is kept pressed or released and pressed again (ST52); Removing the chattering if the eject button 1 is released and then pressed again, and determining whether the eject button 1 is correctly pressed (ST53) (ST54); If the eject button 1 is correctly pressed, even if the eject button 1 is kept pressed, the eject button 1 is set to proceed by ignoring the eject button 1 being pressed from the next time it is called and then returning (ST55). (ST56); If the eject button 1 is not pressed or the eject button 1 is continuously pressed or the eject button 1 is not pressed correctly, the method comprises initializing and returning chattering (ST57) (ST58).

상기에서 오픈 루틴은, 도7에 도시된 바와 같이, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계(ST61)(ST62)와; 상기 카운터가 일정값 이하가 아니면 오픈 에러 루틴을 호출하는 단계(ST63)와; 상기 카운터가 일정값 이하이면 오픈 리미트 스위치(7)가 눌려졌는지를 판별하는 단계(ST64)와; 상기 오픈 리미트 스위치(7)가 눌려졌으면 모터(4)를 정지시켜 클로즈 대기 루틴을 호출하는 단계(ST65)(ST66)와; 상기 오픈 리미트 스위치(7)가 눌려지지 않았으면 채터링이 초기값인지를 판별하는 단계(ST67)와; 상기 채터링이 초기값이 아니면 클로즈를 실행시킨 후 리턴하는 단계(ST68)와; 상기 채터링이 초기값이면 드라이브부(3)로 출력하여 이젝팅 동작의 제어값을 출력시킨 다음 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정지연후 카운터를 증가시키는 단계(ST69 - ST72)로 구성된다.In the above-described open routine, as shown in Fig. 7, steps of initializing the counter and chattering and then determining whether the counter is equal to or less than a predetermined value (ST61) (ST62); Calling an open error routine if the counter is not below a predetermined value (ST63); Determining whether the open limit switch (7) is pressed if the counter is less than or equal to a predetermined value (ST64); Stopping the motor (4) when the open limit switch (7) is pressed to call a close wait routine (ST65) (ST66); Determining whether chattering is an initial value if the open limit switch 7 is not pressed (ST67); If the chattering is not an initial value, executing a close and returning (ST68); Outputting the control value of the ejecting operation by outputting to the drive unit 3 when the chattering is an initial value, and then calling a chattering routine every time the counter increases a predetermined number of times, and increasing the counter after a certain delay ( ST69-ST72).

상기에서 클로즈 대기 루틴은, 도8에 도시된 바와 같이, 채터링 값을 초기화하는 단계(ST81)와; 상기 채터링 값을 초기화한 다음 오픈 리미트 스위치(7)가 띄어지지 않고 채터링이 초기값이면 일정시간 지연후 채터링 루틴을 호출하는 단계(ST82 - ST85)와; 상기 오픈 리미트 스위치(7)가 띄어지거나 채터링 값이 초기값이 아니면 클로즈를 실행하고 리턴하는 단계(ST86)로 구성된다.The close wait routine may include: initializing a chattering value (ST81), as shown in FIG. Initiating the chattering value and invoking the chattering routine after a predetermined time delay if the open limit switch 7 is not lifted and the chattering is an initial value (ST82-ST85); If the open limit switch 7 is lifted or the chattering value is not an initial value, a step of executing and returning closes (ST86).

상기에서 클로즈 루틴은, 도9에 도시된 바와 같이, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계(ST91)(ST92)와; 상기 카운터가 일정값 이하가 아니면 클로즈 에러 루틴을 호출하는 단계(ST93)와; 상기 카운터가 일정값 이하이면 클로즈 리미트 스위치(6)가 눌려졌는지를 판별하는 단계(ST94)와; 상기 클로즈 리미트 스위치(6)가 눌려졌으면 트레이 처킹 루틴을 호출한 다음 모터(4)를 정지시켜 리턴하는 단계(ST95)(ST96)와; 상기 클로즈 리미트 스위치(6)가 눌려지지 않았으면 채터링이 초기값인지를 판별하는 단계(ST97)와; 상기 채터링이 초기값이 아니면 오픈을 실행시킨 후 리턴하는 단계(ST98)와; 상기 채터링이 초기값이면 드라이브부(3)로 출력하여 로딩 동작의 제어값을 출력시킨 다음 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정시간 지연후 카운터를 증가시키는 단계(ST99 - ST102)로 구성된다.In the above-described closing routine, as shown in Fig. 9, steps of initializing the counter and chattering and then determining whether the counter is equal to or less than a predetermined value (ST91) (ST92); Invoking a close error routine if the counter is not below a predetermined value (ST93); Determining whether the close limit switch (6) is pressed when the counter is equal to or less than a predetermined value (ST94); Calling the tray chucking routine if the close limit switch 6 is pressed and then stopping and returning the motor 4 (ST95) (ST96); Determining whether chattering is an initial value if the close limit switch (6) is not pressed (ST97); If the chattering is not an initial value, executing open and returning (ST98); Outputting a control value of a loading operation by outputting to the drive unit 3 if the chattering is an initial value, and then calling a chattering routine every time the counter increases a predetermined number of times, and increasing the counter after a predetermined time delay ( ST99-ST102).

상기에서 트레이 처킹 루틴은, 도10에 도시된 바와 같이, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계(ST111)(ST112)와; 상기 카운터가 일정값 이하이면 채터링이 초기값인지를 판별하는 단계(ST113)와; 상기 채터링이 초기값이면 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정시간 지연후 카운터를 증가시키는 단계(ST114 - ST116)와; 상기 카운터가 일정값 이하가 아니면 리턴하는 단계(ST117)와; 상기 채터링이 초기값이 아니면 오픈을 실행시킨 후 리턴하는 단계(ST118)로 구성된다.In the above tray chucking routine, as shown in Fig. 10, steps of initializing the counter and chattering and then determining whether the counter is equal to or less than a predetermined value (ST111) (ST112); Determining whether chattering is an initial value when the counter is less than or equal to a predetermined value (ST113); Calling the chattering routine whenever the counter increases a predetermined number of times if the chattering is an initial value, and incrementing the counter after a predetermined time delay (ST114 to ST116); Returning if the counter is less than or equal to a predetermined value (ST117); If the chattering is not the initial value, it is performed by executing open and returning (ST118).

이와 같이 구성된 본 발명에 의한 트레이의 이젝트버튼 검출방법의 동작을 첨부한 도면에 의거 상세히 설명하면 다음과 같다.The operation of the eject button detection method of the tray according to the present invention configured as described above will be described in detail with reference to the accompanying drawings.

먼저 트레이(5)의 이젝트버튼(1)의 검출 알고리즘은 기준 시간 이하로 반복되는 메인 루틴과 플래그 변수를 이용하여 인터럽트 루틴이 아닌 일반 루틴으로 이를 처리하도록 해주고, 채터링 등도 역시 미리 올바르게 동작을 위한 버튼이 눌려졌나를 판단하여 채터링 제거 중에도 로드/이젝트(Load/Eject) 동작을 하도록 하여 인터럽트 포트를 사용하지 않고도 트레이(5)의 이젝트버튼(1) 검출을 올바르게 하도록 한다. 이를 이용하여 여러 인터럽트 루틴들도 일반 루틴으로 변환 가능하게 해줌으로써 개발 환경을 개선시켜 주고, CPU(Central Processing Unit, 중앙처리장치)의 업그레이드를 하지 않고서도 인터럽트 포트 부족 문제를 해결할 수 있다.First, the detection algorithm of the eject button 1 of the tray 5 uses a main routine and a flag variable repeated below a reference time to process this as a general routine instead of an interrupt routine. It determines whether the button is pressed to perform a load / eject operation even during chattering, so that the eject button 1 of the tray 5 can be correctly detected without using an interrupt port. By using this, various interrupt routines can be converted into regular routines, which improves the development environment and solves the problem of shortage of interrupt ports without upgrading the central processing unit (CPU).

그래서 메인 루틴은 메인 루틴의 일부를 표시한 것이고, 다른 처리 루틴이 부가될 수 있으며, 메인 루틴과 채터링 루틴 사이에도 물론 다른 루틴들이 있을 수 있다.So the main routine is a representation of a part of the main routine, other processing routines can be added, and of course there can be other routines between the main routine and the chattering routine.

우선 초기화 과정으로 트레이(5)가 조금이라고 열려져 있는 상태라면 이를 닫아주도록 트레이(5)가 열려져 있는 지를 검색하여 처음에 트레이(5)가 열려져 있으면 클로즈 루틴을 호출하여 트레이를 닫아준다(ST31)(ST32). 그리고 이젝트버튼(1) 검출결과 플래그인 채트(chat)를 클리어(chat=0)한다(ST33). 여기서 채트는 동작을 목적으로 올바르게 이젝트버튼(1)이 눌려졌을 때 chat=1로 된다.First, if the tray 5 is a little open by the initialization process, the tray 5 is searched to close it, and if the tray 5 is open at first, a close routine is called to close the tray (ST31) ( ST32). Then, the chat button, which is the flag of the eject button 1 detection result, is cleared (chat = 0) (ST33). Here the chat is chat = 1 when the eject button 1 is pressed correctly for the purpose of operation.

그 후 진행되는 루프는 일정시간(예를 들어 5ms) 마다 반복될 수 있도록 한다(요즘 대부분의 펌웨어를 살펴보면 인터럽트 루틴들이 증가하고 메인루틴이 매우 짧게 되어 있어 대부분 짧은 시간을 주기로 반복되도록 되어 있다). 이 방법을 이용하면 오히려 더 정확하게 이젝트버튼(1) 검출을 할 수 있다. 인터럽트 포트와 루틴을 이용하여 이젝트 버튼 검출을 해주는 경우 다음과 같은 파형이 입력될 경우를 보자.Subsequent loops can be repeated every certain amount of time (eg 5ms). (In most firmwares these days, the interrupt routines increase and the mainroutines are very short. By using this method, the eject button 1 can be detected more accurately. When using the interrupt port and routine to detect the eject button, consider the following waveform input.

여기서 위와 같은 신호가 매우 짧은 시간에 여러 번 들어올 경우 ↑ 표시가 있는 곳마다 인터럽트가 걸려 들어오므로 오히려 동작을 위해 올바르게 눌려진 경우가 아닌 경우가 많으나, 일정 시간을 주기로 한 번씩 체크하는 방법을 이용하면, 이와 같은 문제점을 해결할 수 있다.Here, if the above signal comes in several times in a very short time, the interrupt is triggered wherever there is a ↑ mark, so it is not often pressed properly for operation.However, if you use the method of checking once per period This problem can be solved.

그래서 이젝트버튼(1)이 눌려졌나를 계속 검출하다가 눌려지면(모터가 정지된 상태에서 처음 동작이 시작되는 경우) 트레이(5)가 완전히 닫혀있는 상태라면 오픈을, 트레이(5)가 조금이라도 열려져있는 상태라면 클로즈 동작을 시켜준다. 그러면 트레이(5)가 완전히 닫혀졌는 지를 판별하여(ST35), 트레이(5)가 완전히 닫혀지지 않았으면 클로즈 루틴을 호출하고(ST36), 트레이(5)가 완전히 닫혀졌으면 오픈 루틴을 호출하게 된다(ST37).Therefore, if the eject button 1 is continuously detected and pressed (when the initial operation is started when the motor is stopped), the tray 5 is opened when the tray 5 is completely closed. If it is, close it. Then, it is determined whether the tray 5 is completely closed (ST35), and the closing routine is called if the tray 5 is not completely closed (ST36), and the open routine is called if the tray 5 is completely closed ( ST37).

이처럼 트레이(5)가 완전히 닫혀졌는지를 검색한 다음 트레이(5) 상태가 클로즈 상태인지를 판별하여(ST38), 트레이(5) 상태가 클로즈 상태가 아니면 트레이(5) 오픈 상태를 검색한다(ST39). 그래서 트레이(5)가 오픈 상태가 아니면 다시 이젝트버튼(1)이 눌려지면 이를 감지할 수 있도록 트레이(5) 상태변수를 초기화한 후 클로즈 루틴을 호출하고(ST40)(ST41), 트레이(5)가 오픈 상태이면 트레이(5) 상태 변수를 초기화한 후 오픈 루틴을 호출하게 된다(ST42)(ST43). 그리고 트레이(5)가 완전히 닫혀지거나 트레이(5) 상태가 클로즈 상태이면 일정 시간 지연 후 채터링 루틴을 호출하게 된다(ST44)(ST45). 즉, 모터(4)가 정된 상태에서 처음 동작을 시작하는 경우가 아니라 이미 오픈이나 클로즈 동작 중에 다시 이젝트 버튼이 눌려지면, 지금의 루틴에서부터 리턴되고, 그 반대 동작을 트레이 상태 변수에 저장하여 몇 번이라도 오픈, 클로즈를 변환 동작시킬 수 있도록 한다. 이로써 변수 하나를 사용하여, 인터럽트가 걸려 처리 도중 다른 인터럽트가 또 걸려 들어왔을 때 이를 처리해주는 것과 같은 효과를 일반 루틴에서도 낼 수 있도록 하였다. 트레이(5) 상태 변수가 0이 아닌 어떤 값을 가지고 있을 때, 해당 루틴으로 수행하기 직전에 다시 초기화 해줌으로써 몇 번이고 이젝트버튼(1)이 눌려지는 걸 감지할 수 있도록 하였다.In this way, it is searched whether the tray 5 is completely closed, and then it is determined whether the tray 5 state is closed (ST38), and if the tray 5 state is not closed, the tray 5 is opened (ST39). ). Thus, if the tray 5 is not open, the eject button 1 is pressed again, the tray 5 state variable is initialized to detect the state (ST40) (ST41), and the tray 5 is initialized. Is in the open state, the initialization routine of the tray 5 state variable is called (ST42) (ST43). When the tray 5 is completely closed or the tray 5 state is closed, the chattering routine is called after a delay (ST44) (ST45). That is, if the eject button is pressed again during the open or close operation instead of starting the first operation with the motor 4 defined, it is returned from the current routine, and the opposite operation is stored in the tray state variable several times. Even open and close can be converted. This allows one routine to have the same effect in a regular routine as if it had an interrupt and handled another interrupt during processing. When the tray 5 status variable has a non-zero value, it is reinitialized just before it is executed by the routine so that the eject button 1 can be detected several times.

한편 도6에 도시된 채터링 루틴은 이젝트버튼(1)이 동작을 위해 올바르게 눌려졌는지(계속 누르고 있는 것은 아닌지, 다시 뗀 상태에서 또 눌려진 것이 맞는지)를 판단하는 동시에, 눌려졌다면 채터링까지 제거하여 올바르게 검출할 수 있도록 해주는 루틴이다.On the other hand, the chattering routine shown in FIG. 6 determines whether the eject button 1 has been correctly pressed for operation (whether it is kept pressed or not again in the pressed state again) and removes the chattering if it is pressed. Routines that allow for correct detection.

그래서 이젝트버튼(1)이 (떼어져 있다가) 한 번 눌려지면 이젝트버튼(1) 검출 결과 플래그를 검출했다는 뜻의 1로 만들어줌과 동시에 no_double라는 플래그도1로 만들어 주는데, 만약 유저가 이젝트버튼(1)을 계속 누르고 있었다면, 다음 채터링 루틴으로 들어왔을 때도 이젝트버튼(1)이 눌렸다고 검출하는 것이 아니라 no_double 플래그가 계속 1로 되어 있는 것을 보고 유저가 이젝트버튼(1)을 누르고 있었다는 것을 알게 되고, 이때는 이젝트버튼(1) 검출 결과 플래그를 검출하지 않았다는 0으로 만들어준다. 이로써 플래그 하나를 사용하여, 인터럽트 루틴에서 Up Edge나 Down Edge 시에만 걸려 오는 인터럽트(그 후 계속 하이나 로우로 신호가 되어 있을 때는 인터럽트가 걸리지 않음)를 인터럽트 루틴이 아닌 일반 루틴에서도 같은 효과가 나도록 하였다. 그 후 채터링을 제거하고 다시 이젝트버튼(1)이 눌려졌는지를 검출하여 보다 정확성 있는 검출이 이루어지도록 하였다.Thus, when the eject button 1 is pressed (released) once, it makes the eject button 1 detection result flag 1, and the no_double flag is also 1 if the user presses the eject button. If you kept holding down (1), instead of detecting that the eject button (1) was pressed when entering the next chattering routine, you see that the user pressed the eject button (1) by noting that the no_double flag was still set to 1. In this case, the eject button 1 detection result flag is set to 0 indicating that no flag is detected. This allows you to use one flag to ensure that interrupts that occur only on the Up Edge or Down Edge in the interrupt routine (thereby no interruption when the signal continues high or low) have the same effect in the normal routine, not the interrupt routine. It was. After that, the chattering was removed and again the eject button 1 was detected to make the detection more accurate.

이에 따라 이젝트버튼(1)이 눌려졌는지를 판별하고(ST51), 계속 이젝트버튼(1)을 누르고 있는 지 다시 떼었다가 누른 건지를 판별하여(ST52), 이젝트버튼(1)이 다시 떼었다가 눌려졌으면 시간지연 후 채터링을 제거하고, 이젝트버튼(1)을 올바르게 누른 것이 맞는 지를 판별한다(ST53)(ST54). 그리고 이젝트버튼(1)을 올바르게 누른 것이 맞으면 이젝트버튼(1)을 계속 누르고 있어도 다음 번 호출되어 들어올 때부터는 계속 이젝트버튼(1)이 눌려지는 것을 무시하고 진행하도록 세팅한 다음 리턴한다(ST55)(ST56). 또한 이젝트버튼(1)이 눌려지지 않거나 상기 이젝트버튼(1)이 계속 눌려지거나 이젝트버튼(1)이 올바르게 눌려지지 않으면 채터링을 초기화한 후 리턴하게 되는 것이다(ST57)(ST58).Accordingly, it is determined whether the eject button 1 has been pressed (ST51), and if the eject button 1 is kept being pressed or released again and then is pressed (ST52), the eject button 1 is released and pressed again. After the time delay, the chattering is removed and it is determined whether the eject button 1 is correctly pressed (ST53) (ST54). If the eject button 1 is correctly pressed, even if the eject button 1 is kept pressed, the eject button 1 is set to proceed after ignoring the eject button 1 being pressed from the next time it is called (ST55) ( ST56). In addition, if the eject button 1 is not pressed or the eject button 1 is continuously pressed or the eject button 1 is not correctly pressed, the chattering is initialized and returned (ST57) (ST58).

한편 도7에 도시된 오픈 루틴은 실제로 트레이(5)를 이젝팅시켜주는 동작을 하는 루틴이다.On the other hand, the open routine shown in Fig. 7 is a routine that actually performs the operation of ejecting the tray 5.

그래서 1ms 단위 타이머 카운터와 이젝트버튼(1) 검출결과 플래그인 chat를 0으로 하여 초기화하고(ST61), 2.5초간 트레이 오픈 리미트 버튼(7) 또는 다시 이젝트버튼(1)이 눌려졌는 지를 판단하면서 동시에 트레이(5)의 이젝팅 동작을 해준다. 채터링 루틴으로의 호출은 1ms 단위 타이머 변수인 카운터를 이용하여 단위시간(예를 들어 5ms) 마다 호출되어 이젝트버튼(1) 검출 여부를 판단하도록 하였다. 이젝트버튼(1)이 다시 눌려진 경우는 다음 동작이 클로즈라는 것을 알리는 변수 tray_state에 2를 넣고 리턴시키고, 트레이 오픈 리미트 버튼(7)이 눌려진 경우는 오픈이 완료된 경우로 모터(4)를 정지시키도록 드라이브부(3)로 출력제어값을 출력하고 클로즈 대기 루틴으로 호출된다. (트레이가 오픈된 경우는 디스크를 넣어 클로즈하는 것 외에 다음 동작이 있을 수 없으므로 모든 동작을 정지하고 클로즈 대기 상태로 들어간다.) 2.5초간 오픈이 완료되지 않은 경우는 뭔가 장애물이 있어 트레이 이젝팅 동작 중 그대로 멈춘 경우 등 여러 원인을 찾아볼 수 있는데, 이 때는 몇 번 클로즈, 오픈을 반복하되, 어떤 동작이라도 완료되면 다시 메인 루틴으로 리턴되고, 일정 횟수를 반복하여도 아무 동작도 완료되지 않으면 그대로 모터(4)를 정지시키고, 메인 루틴으로 리턴시킨다.(하우스 키핑 루틴)(ST61 - ST72)So, 1ms unit timer counter and eject button (1) detection result flag chat is initialized to 0 (ST61), and the tray open limit button (7) or eject button (1) is pressed for 2.5 seconds simultaneously, (5) Ejecting operation. The call to the chattering routine is called every unit time (for example, 5 ms) using a counter that is a 1 ms unit timer variable to determine whether the eject button 1 is detected. If the eject button 1 is pressed again, the return value is 2 in the variable tray_state indicating that the next operation is closed. If the tray open limit button 7 is pressed, the motor 4 is stopped when the opening is completed. The output control value is output to the drive unit 3 and called by the close wait routine. (If the tray is open, there will be no next action other than inserting the disk, so stop all operations and enter the close standby state.) If the opening is not completed for 2.5 seconds, there is an obstacle and the tray is ejecting. There are many reasons, such as when it stops. In this case, you can close and open several times, but if any operation is completed, it returns to the main routine again. 4) Stop and return to the main routine (housekeeping routine) (ST61-ST72)

또한 도8에 도시된 클로즈 대기 루틴은 오픈 완료시에 호출되어 들어오는 루틴으로, 클로즈가 될 때까지 대기하는 루틴이다.In addition, the close wait routine shown in FIG. 8 is a routine that is called when the open is completed, and is a routine that waits until it is closed.

그래서 트레이 오픈 리미트 버튼(7)이 띄어진 경우(손으로 트레이를 띤 경우) 또는 이젝트버튼(1)이 다시 눌려질 때까지 대기한 후, 그런 경우가 발생하면 트레이(5)를 클로즈시키고 리턴하게 된다(ST81 - ST85).Therefore, if the tray open limit button 7 is lifted up (if the tray is lifted by hand) or the eject button 1 is pressed again, then if it happens, close the tray 5 and return. (ST81-ST85).

그리고 도9에 도시된 클로즈 루틴은 실제로 트레이(5)를 로딩시켜주는 루틴이다.And the close routine shown in Fig. 9 is a routine which actually loads the tray 5.

이 클로즈 루틴은 오픈 루틴과는 반대 동작을 한다는 점과 2.5초간 클로즈가 완료되지 않은 경우 하우스 키핑 루틴에서 시도되는 동작도 순서대로 반대 동작을 한다는 점과 클로즈 리미트 버튼(6)이 눌려지면 트레이 처킹 루틴으로 다녀온 후 모터(4)를 정지시키고, 리턴된다는 것 이외에는 오픈 루틴의 동작과 동일하다(ST91 - ST102).This close routine does the opposite of the open routine, and if the close is not completed for 2.5 seconds, the actions attempted by the housekeeping routine are reversed in order, and the tray chucking routine when the close limit button (6) is pressed. The operation is the same as that of the open routine except that the motor 4 is stopped and returned after returning to (ST91-ST102).

더불어 도10에 도시된 트레이 처킹 루틴은 클로즈 완료시에 호출되어 들어오는 루틴으로, 클로즈 리미트 스위치가 눌려진 후 약 0.3초간 대기하여 트레이가 처킹될 수 있도록 해주는 루틴으로, 처킹 중에도 이젝트버튼(1)이 눌려지면 오픈 동작을 실행하게 된다(ST111 - ST116).In addition, the tray chucking routine shown in FIG. 10 is a routine that is called when the closing is completed, and is a routine that waits about 0.3 seconds after the close limit switch is pressed to allow the tray to be chucked, and when the eject button 1 is pressed even during chucking. The open operation is executed (ST111-ST116).

이처럼 본 발명은 트레이의 이젝트 버튼을 검출하여 이젝트 버튼을 인터럽트 포트뿐만이 아닌 일반 포트에도 연결 가능하도록 하여 인터럽트 포트를 다른 용도로 사용할 수 있게 되는 것이다.As described above, the present invention detects an eject button of a tray so that the eject button can be connected to a general port as well as an interrupt port so that the interrupt port can be used for other purposes.

이상에서 살펴본 바와 같이, 본 발명에 의한 트레이의 이젝트버튼 검출방법은 인터럽트 포트와 인터럽트 포트 및 타이머와 같은 시스템 자원을 사용하지 않고도 올바르게 트레이 동작을 구현함으로써 시스템 설계자는 트레이 동작에 사용하던 인터럽트 포트와 인터럽트 벡터 및 타이머를 다른 용도로 사용할 수 있게 됨에 따라 훨씬 여유롭게 시스템 설계에 임할 수 있고, 인터럽트 포트와 인터럽트 벡터 및 타이머와 같은 시스템 자원이 부족하여 마이컴을 업그레이드해야 하는 상황에도 대처하여 업그레이드 없이도 시스템을 효율적으로 사용할 수 있는 효과가 있게 된다.As described above, the eject button detection method of the tray according to the present invention implements a tray operation correctly without using system resources such as an interrupt port, an interrupt port, and a timer. With the availability of vectors and timers for other purposes, you have more time to design your system, and you can efficiently manage your system without the need to upgrade your microcomputer due to lack of system resources such as interrupt ports and interrupt vectors and timers. There is an effect that can be used.

또한 본 발명은 업 엣지 및 다운 엣지 시 호출되는 인터럽트 루틴의 처리를 플래그를 사용한 일반 루틴으로 완전 변환시킴으로써 다른 인터럽트 처리 루틴들도 일반 루틴으로 바꾸어 사용할 수 있는 효과도 있게 된다.In addition, the present invention also has the effect that other interrupt processing routines can be replaced with the general routine by completely converting the processing of the interrupt routine called at the up edge and the down edge into the normal routine using the flag.

도 1은 일반적인 트레이를 사용하는 장치의 블록구성도이고,1 is a block diagram of a device using a general tray,

도 2는 종래 이젝트버튼이 동작할 경우의 인터럽트 루틴을 보인 흐름도이며,2 is a flowchart showing an interrupt routine when a conventional eject button is operated.

도 3은 종래 오픈 리미트 버튼 또는 클로즈 리미트 버튼이 동작할 경우의 인터럽트 루틴을 보인 흐름도이고,3 is a flowchart showing an interrupt routine when a conventional open limit button or a close limit button is operated;

도 4는 종래 타이머가 스타트된 후의 인터럽트 루틴을 보인 흐름도이며,4 is a flowchart showing an interrupt routine after a conventional timer is started.

도 5는 본 발명에 의한 트레이의 이젝트버튼 검출방법을 보인 흐름도이고,5 is a flowchart illustrating an eject button detection method of a tray according to the present invention;

도 6은 도5에서 채터링 루틴을 보인 흐름도이며,6 is a flowchart illustrating a chattering routine in FIG. 5;

도 7은 도5에서 오픈 루틴을 보인 흐름도이고,7 is a flowchart illustrating an open routine in FIG. 5;

도 8은 도7에서 클로즈 대기 루틴을 보인 흐름도이며,8 is a flowchart illustrating a close wait routine of FIG. 7;

도 9는 도5에서 클로즈 루틴을 보인 흐름도이고,9 is a flowchart showing a close routine in FIG. 5;

도 10은 도9에서 트레이 처킹 루틴을 보인 흐름도이다.10 is a flowchart illustrating a tray chucking routine in FIG. 9.

<도면의 주요 부분에 대한 부호의 설명><Description of the code | symbol about the principal part of drawing>

1: 이젝트 버튼 2: 마이컴1: eject button 2: microcomputer

3: 드라이브부 4: 트레이 구동모터3: drive section 4: tray drive motor

5: 트레이 6: 클로즈 리미트 버튼5: tray 6: close limit button

7: 오픈 리미트 버튼7: open limit button

Claims (4)

트레이가 열려져 있으면 트레이를 닫고 초기화시킨 다음 일정시간 반복적으로 이젝트버튼이 올바르게 눌려졌는지를 검색하는 채터링 루틴을 호출하여 채터링을 제거하는 단계와; 상기 이젝트버튼이 눌려지면 트레이가 완전히 닫혀있는 상태에서는 트레이를 이젝팅시키는 오픈 루틴을 호출하고, 트레이가 열려있는 상태에서는 트레이를 로딩시키는 클로즈 루틴을 호출하는 단계와; 상기 트레이 오픈 루틴을 호출하여 오픈 동작 중이거나 클로즈 루틴을 호출하여 클로즈 동작 중에 이젝트버튼이 눌려지면 채터링을 제거하고 트레이 상태 변수에 저장하여 몇 번이라도 오픈, 클로즈의 변환 동작이 수행되도록 하는 단계로 이루어진 트레이의 이젝트버튼 검출 방법에 있어서,If the tray is open, closing and initializing the tray, and repeatedly calling the chattering routine for retrieving whether the eject button has been pressed correctly for a predetermined time and removing the chattering; Calling an open routine to eject the tray when the tray is completely closed when the eject button is pressed, and calling a close routine to load the tray when the tray is open; If the eject button is pressed during the open operation or the close routine by calling the tray open routine, the chattering is removed and stored in a tray state variable so that the open and close conversion operation can be performed any number of times. In the eject button detection method of the made tray, 상기 채터링 루틴은,The chattering routine is 이젝트버튼이 눌려졌는지를 판별하는 단계와; 상기 이젝트버튼이 눌려졌으면 계속 이젝트버튼을 누르고 있는 지 다시 떼었다가 누른건지 판별하는 단계와; 상기 이젝트버튼이 다시 떼었다가 눌려졌으면 채터링을 제거하고, 이젝트버튼을 올바르게 누른 것이 맞는 지를 판별하는 단계와; 상기 이젝트버튼을 올바르게 누른 것이 맞으면 이젝트버튼을 계속 누르고 있어도 다음 번 호출되어 들어올 때부터는 계속 이젝트버튼이 눌려지는 것을 무시하고 진행하도록 세팅한 다음 리턴하는 단계와; 상기 이젝트버튼이 눌려지지 않거나 상기 이젝트버튼이 계속 눌려지거나 상기 이젝트버튼이 올바르게 눌려지지 않으면 채터링을 초기화한 후 리턴하는 단계로 이루어지고,Determining whether the eject button has been pressed; If the eject button is pressed, determining whether to continue pressing or releasing the eject button; Removing the chattering if the eject button is released and then pressed again, and determining whether the eject button is correctly pressed; If it is correct to press the eject button correctly, even if the eject button is kept pressed, the setting is made to proceed after ignoring the eject button being pressed from the next time it is called and proceeding; If the eject button is not pressed or if the eject button is continuously pressed or the eject button is not pressed correctly, the step of initializing chattering and returning is performed. 상기 오픈 루틴은,The open routine, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계와; 상기 카운터가 일정값 이하가 아니면 오픈 에러 루틴을 호출하는 단계와; 상기 카운터가 일정값 이하이면 오픈 리미트 스위치가 눌려졌는지를 판별하는 단계와; 상기 오픈 리미트 스위치가 눌려졌으면 모터를 정지시켜 클로즈 대기 루틴을 호출하는 단계와; 상기 오픈 리미트 스위치가 눌려지지 않았으면 채터링이 초기값인지를 판별하는 단계와; 상기 채터링이 초기값이 아니면 클로즈를 실행시킨 후 리턴하는 단계와; 상기 채터링이 초기값이면 드라이브부로 출력하여 이젝팅 동작의 제어값을 출력시킨 다음 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정지연후 카운터를 증가시키는 단계로 이루어지는 것을 특징으로 하는 트레이의 이젝트버튼 검출방법.Initiating a counter and chattering and then determining whether the counter is below a predetermined value; Calling an open error routine if the counter is not below a predetermined value; Determining whether the open limit switch is pressed when the counter is less than or equal to a predetermined value; Stopping the motor to invoke the close wait routine if the open limit switch is pressed; Determining if chattering is an initial value if the open limit switch is not pressed; If the chattering is not an initial value, executing a close and returning it; If the chattering is the initial value, it outputs to the drive unit to output the control value of the ejecting operation, and then every time the counter is increased by a certain number of times, the chattering routine is called, and the counter is increased after a certain delay. Eject button detection method for a tray. 제1항에 있어서, 상기 클로즈 대기 루틴은,The method of claim 1, wherein the close wait routine comprises: 채터링 값을 초기화하는 단계와; 상기 채터링 값을 초기화한 다음 오픈 리미트 스위치가 띄어지지 않고 채터링이 초기값이면 일정시간 지연후 채터링 루틴을 호출하는 단계와;Initializing a chattering value; Initiating the chattering value and invoking the chattering routine after a predetermined time delay if the open limit switch is not lifted and the chattering is an initial value; 상기 오픈 리미트 스위치가 띄어지거나 채터링 값이 초기값이 아니면 클로즈를 실행하고 리턴하는 단계로 구성된 것을 특징으로 하는 트레이의 이젝트버튼 검출방법.And closing and executing the return if the open limit switch is lifted or the chattering value is not the initial value. 제1항에 있어서, 상기 클로즈 루틴은,The method of claim 1, wherein the close routine, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계와; 상기 카운터가 일정값 이하가 아니면 클로즈 에러 루틴을 호출하는 단계와; 상기 카운터가 일정값 이하이면 클로즈 리미트 스위치가 눌려졌는지를 판별하는 단계와; 상기 클로즈 리미트 스위치가 눌려졌으면 트레이 처킹 루틴을 호출한 다음 모터를 정지시켜 리턴하는 단계와; 상기 클로즈 리미트 스위치가 눌려지지 않았으면 채터링이 초기값인지를 판별하는 단계와; 상기 채터링이 초기값이 아니면 오픈을 실행시킨 후 리턴하는 단계와; 상기 채터링이 초기값이면 드라이브부로 출력하여 로딩 동작의 제어값을 출력시킨 다음 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정시간 지연후 카운터를 증가시키는 단계로 구성된 것을 특징으로 하는 트레이의 이젝트버튼 검출방법.Initiating a counter and chattering and then determining whether the counter is below a predetermined value; Calling a close error routine if the counter is not below a predetermined value; Determining whether the close limit switch is pressed when the counter is less than or equal to a predetermined value; Calling the tray chucking routine if the close limit switch is pressed and stopping and returning the motor; Determining whether chattering is an initial value if the close limit switch is not pressed; If the chattering is not an initial value, executing open and returning; Outputting a control value of a loading operation when the chattering is an initial value, and then calling a chattering routine every time the counter increases a predetermined number of times, and increasing the counter after a predetermined time delay. Eject button detection method for a tray. 제3항에 있어서, 상기 트레이 처킹 루틴은,The method of claim 3, wherein the tray chucking routine, 카운터와 채터링을 초기화한 다음 카운터가 일정값 이하인지를 판별하는 단계와; 상기 카운터가 일정값 이하이면 채터링이 초기값인지를 판별하는 단계와; 상기 채터링이 초기값이면 카운터가 일정 횟수로 증가할 때마다 채터링 루틴을 호출하고, 일정시간 지연후 카운터를 증가시키는 단계와; 상기 카운터가 일정값 이하가 아니면 리턴하는 단계와; 상기 채터링이 초기값이 아니면 오픈을 실행시킨 후 리턴하는 단계로 구성된 것을 특징으로 하는 트레이의 이젝트버튼 검출방법.Initiating a counter and chattering and then determining whether the counter is below a predetermined value; Determining if chattering is an initial value if the counter is less than or equal to a predetermined value; Invoking a chattering routine each time the counter increases a predetermined number of times if the chattering is an initial value, and incrementing the counter after a predetermined time delay; Returning if the counter is not below a predetermined value; And if the chattering is not an initial value, executing the open and returning the chatter.
KR10-1998-0001056A 1998-01-15 1998-01-15 How to detect the eject button on the tray KR100494310B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-1998-0001056A KR100494310B1 (en) 1998-01-15 1998-01-15 How to detect the eject button on the tray

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-1998-0001056A KR100494310B1 (en) 1998-01-15 1998-01-15 How to detect the eject button on the tray

Publications (2)

Publication Number Publication Date
KR19990065667A KR19990065667A (en) 1999-08-05
KR100494310B1 true KR100494310B1 (en) 2005-09-08

Family

ID=43670264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0001056A KR100494310B1 (en) 1998-01-15 1998-01-15 How to detect the eject button on the tray

Country Status (1)

Country Link
KR (1) KR100494310B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950001679A (en) * 1993-06-28 1995-01-03 김광호 How to Eject a Tray in an Interactive Disc Player
JPH08263932A (en) * 1995-03-14 1996-10-11 Internatl Business Mach Corp <Ibm> Cd reproducing apparatus and its control method
JPH09139002A (en) * 1995-11-14 1997-05-27 Matsushita Electric Ind Co Ltd Loading/ejecting device
JPH09259499A (en) * 1996-03-21 1997-10-03 Mitsubishi Electric Corp Disk loading device and disk loading method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950001679A (en) * 1993-06-28 1995-01-03 김광호 How to Eject a Tray in an Interactive Disc Player
JPH08263932A (en) * 1995-03-14 1996-10-11 Internatl Business Mach Corp <Ibm> Cd reproducing apparatus and its control method
JPH09139002A (en) * 1995-11-14 1997-05-27 Matsushita Electric Ind Co Ltd Loading/ejecting device
JPH09259499A (en) * 1996-03-21 1997-10-03 Mitsubishi Electric Corp Disk loading device and disk loading method

Also Published As

Publication number Publication date
KR19990065667A (en) 1999-08-05

Similar Documents

Publication Publication Date Title
CN100578449C (en) Method and apparatus for executing software applications
KR19980035435A (en) Computer system with automatic detection
KR100494310B1 (en) How to detect the eject button on the tray
KR101283748B1 (en) Apparatus and Method for moving second apparatus
KR0184097B1 (en) Fast arrival method at normal speed of multi cdp
US20040236932A1 (en) Apparatus and method for firmware upgrade in microprocessor-based processing units
JPH0612505A (en) Microcomputer
CA1276268C (en) Apparatus for controlling a dewatering process
KR100431698B1 (en) How to prevent idling from CD player
US5337294A (en) Control system for controlling plurality of operations of common category by plurality of control units
JP2892254B2 (en) Optical disk player
KR19990049911A (en) Tray drive device and method
US20040013055A1 (en) Apparatus and method for reducing program selection time in multi-changer of optical disk player
WO2006123623A1 (en) Disc device and method for initializing disc device
KR19990003780A (en) How to control initial drive of compact disc tray in compact disc player
KR0138366B1 (en) Tray ejecting method for disk player
KR19990050198A (en) Jog operation control method of jog shuttle device
JP2894405B2 (en) Flexible disk unit
JP2623798B2 (en) Compact disc player
KR100234741B1 (en) Device for determining the drive type of a disc reproducer
JPH07121313A (en) Disk device
KR100613561B1 (en) Method for restoring system by use of open key in a dvd system
KR0126794B1 (en) Contronl method of open, close and reset function for cd changer magazine
JP2000267983A (en) Ata/atapi driving device
JP2001229606A (en) Disk device

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20071227

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee