MG82F6D Series CLK xtal
1. 프로그램 개요
P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다.
외부클럭을 이용하는 방법을 확인한다. P60, P61에 8MHz 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);
☞ IHRCO를 12MHz로 선택함
☞ CPU Clock를 System Clock와 동일하게 사용함(/1)
☞ MCKDO를 MCK와 동일하게 사용함(/1)
// XTAL=ENABLE,IHRCO=Enable, MCK=OSCin, OSCin=IHRCO
CLK_SetCKCON2(GAIN_FOR_2M_25M|ENABLE_XTAL|ENABLE_IHRCO|MCK_OSCin|OSCIn_IHRCO);
☞ 8MHz 크리스탈을 사용하므로 Gain을 2MHz ~ 25MHz의 범위로 맞춰둔다.
☞ XTAL을 구동시킨다.
☞ IHRCO를 동작 상태로 유지시킨다.
☞ MCK를 OSCin으로 설정한다.
☞ OSCin은 IHRCO로 설정한다.
// 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);
☞ 외부 클럭이 안정화 되면 OSCin을 XTAL로 변경한다.
// 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 시 IHRCO가 12MHz로 기본 동작을 시작한다. 변경하고자 하는 클럭소스의 주파수가 안정화 되면 그 때 클럭을 전환시켜준다.
è (EN)MG82F6D16_Datasheet_V051.PDF의 “제 8절 System Clock”을 참조한다.
è (EN)MG82F6D17_Datasheet_V038.PDF의 “제 9절 System Clock”을 참조한다.
è (EN)MG82F6D32/64_Datasheet_V102.PDF의 “제 9절 System 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 Board에 USB Connector를 연결하여 전원을 인가하고, 전원 스위치를 ON시키고, OCD ICE를 연결한 상태에서 위 이미지의 Start/Stop Debug Session(Ctrl+F5) 버튼을 눌러 컴파일된 프로젝트의 디버그 데이터를 다운로드 시킨다.(컴파일 시 에러가 발생하지 않아야함)
다운로드 후 Run(F5) 버튼을 클릭하면 프로그램이 동작한다.
5. 동작 영상
'MEGAWIN' 카테고리의 다른 글
MG82F6D Series GPIO P44P45P47 (0) | 2022.11.14 |
---|---|
MG82F6D Series CLK ILRCO P60OC (0) | 2022.11.11 |
MG82F6D Series GPIO P6 (0) | 2022.11.09 |
MG82F6D Series ADC with Interrupt - 4 (0) | 2022.11.08 |
MG82F6D Series ADC with Interrupt - 3 (0) | 2022.11.08 |