MEGAWIN

MG82F6D Series CLK xtal

롬돌이 2022. 11. 10. 14:07
반응형

MG82F6D Series CLK xtal

1. 프로그램 개요

P22Green 0 LED, P24 Red LED, P26Green 1 LED가 연결되어 있다.

외부클럭을 이용하는 방법을 확인한다. P60, P618MHz X-TAL을 연결하고 시스템을 구동하는 방법을 확인한다.

  

2. 회로도

 

3. Code

main routine

void main()

{

InitSystem();                                              // 시스템 초기화, Clock 초기화 부분을 확인해야함

LED_G_0=0;LED_G_1=0;LED_R=0;                      // LED를 모두 ON 시키고

DelayXms(1000);                                          // 1초 딜레이

LED_G_0=1;LED_G_1=1;LED_R=1;                      // LED를 모두 OFF 시킨다.

                                                 

while(1)

{

LED_G_0=0;                                  // LED를 순차적으로 ON/OFF 시킨다.

DelayXms(200);

LED_G_0=1;

LED_G_1=0;

DelayXms(200);

LED_G_1=1;

LED_R=0;

DelayXms(200);

LED_R=1;

}

}

 

⑵ 시스템 초기화 루틴

/***********************************************************************************

*Function:   void InitSystem(void)

*Description:   Initialize MCU

*Input:  

*Output:    

*************************************************************************************/

void InitSystem(void)

{

           InitPort();

           InitClock_Xtal();

 

}

LED 출력 포트를 초기화 시키고, XTAL 설정을 한다.

 

XTAL 설정

/***********************************************************************************

*Function:   void InitClock(void)

*Description: 

*                                         Initialize clock

*Input:  

*Output:    

*************************************************************************************/

void InitClock_Xtal(void)

{

           CLK_SetCKCON0(IHRCO_12MHz|CPUCLK_SYSCLK_DIV_1|SYSCLK_MCKDO_DIV_1);

IHRCO12MHz로 선택함

CPU ClockSystem Clock와 동일하게 사용함(/1)

MCKDOMCK와 동일하게 사용함(/1)

 

           // XTAL=ENABLE,IHRCO=Enable, MCK=OSCin, OSCin=IHRCO

           CLK_SetCKCON2(GAIN_FOR_2M_25M|ENABLE_XTAL|ENABLE_IHRCO|MCK_OSCin|OSCIn_IHRCO);

         8MHz 크리스탈을 사용하므로 Gain2MHz ~ 25MHz의 범위로 맞춰둔다.

         XTAL을 구동시킨다.

         IHRCO를 동작 상태로 유지시킨다.

         MCKOSCin으로 설정한다.

         OSCinIHRCO로 설정한다.

 

           // Delay 10ms,

           DelayXms(10);

           XTAL이 안정화 될 때 까지 대기한다.

☞ 외부 크리스털이 안정화 되면 XTOR(CKCON1.7)가 자동으로 셋 된다. 이때를 기다려도 되나 본 예제에서는 10ms 딜레이를 사용하였다. 딜레이 함수 대신 while((CKCON1 & 0x80)==0); 를 사용해도 된다.

 

 

           // XTAL=ENABLE,IHRCO=Enable, MCK=OSCin, OSCin=XTAL

           CLK_SetCKCON2(GAIN_FOR_2M_25M|ENABLE_XTAL|ENABLE_IHRCO|MCK_OSCin|OSCIn_XTAL);

           ☞ 외부 클럭이 안정화 되면 OSCinXTAL로 변경한다.

 

           // Delay 10ms,

           DelayXms(10);

           // XTAL=ENABLE,IHRCO=Disable, MCK=OSCin, OSCin=XTAL

           CLK_SetCKCON2(GAIN_FOR_2M_25M|ENABLE_XTAL|DISABLE_IHRCO|MCK_OSCin|OSCIn_XTAL);

           ☞ 클럭 변경이 완료 되면 IHRCO는 이제 OFF 시켜 준다.

}

 

- 위와 같은 과정을 진행하는 것은 MG82F6D Series는 전원 ON IHRCO12MHz로 기본 동작을 시작한다. 변경하고자 하는 클럭소스의 주파수가 안정화 되면 그 때 클럭을 전환시켜준다.

 

 

è (EN)MG82F6D16_Datasheet_V051.PDF8System Clock”을 참조한다.

è (EN)MG82F6D17_Datasheet_V038.PDF9System Clock”을 참조한다.

è (EN)MG82F6D32/64_Datasheet_V102.PDF9System Clock”을 참조한다.

 

 

4. 프로그램 실행

*** Keil compiler가 인스톨되어 있어야함 ***

해당 Example 폴더를 찾아가 KeilPrj폴더를 Open 한다.

\Megawin 8051\(EN)MG82F6D16_SampleCode_v1.20\MG82F6D16_CLK_Xtal\KeilPrj

해당 폴더의 Keil project 파일을 더블클릭하여 실행시킨다.(MG82F6D16_DEMO.uvproj)

 

Rebuild 아이콘을 클릭하여 프로젝트를 컴파일 한다.

 

Demo BoardUSB Connector를 연결하여 전원을 인가하고, 전원 스위치를 ON시키고, OCD ICE를 연결한 상태에서 위 이미지의 Start/Stop Debug Session(Ctrl+F5) 버튼을 눌러 컴파일된 프로젝트의 디버그 데이터를 다운로드 시킨다.(컴파일 시 에러가 발생하지 않아야함)

 

 

다운로드 후 Run(F5) 버튼을 클릭하면 프로그램이 동작한다.

 

5. 동작 영상

https://youtu.be/11Ei9zxAg8Y

 

 

반응형