본문 바로가기

MEGAWIN40

MG82F6D Series INT nINTx Wake UP 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. 외부 인터럽트 입력에 의해 Power Down Mode에서 시스템이 깨어나는 것을 보여준다. INT0, INT1, INT2가 사용되며, 시스템이 깨어 났을 때 어느 인터럽트가 입력되었는지를 LED에 연결해서 확인할 수 있도록 해 준다. 2. 회로도 3. Code ⑴ main routine void main() { u8 BakCKCON2; // CKCON2의 값을 백업하기 위한 변수 InitSystem(); // 시스템 초기화 LED_G_0=0;LED_G_1=0;LED_R=0; // LED ALL ON DelayXms(2000); // 2초 딜레이 LED_G_0=1;LED_G_1=1.. 2022. 11. 25.
MG82F6D Series CMP 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. P10, P11을 아날로그 입력으로 설정한다. P10은 비교기의 Positive input, P11은 비교기의 Negative Input으로 설정한다. 인터럽트가 발생하면 LED를 Toggle 시킨다. 2. 회로도 /* LED 부분 회로도 추가 */ 3. Code ⑴ main routine void main() { InitSystem(); // 시스템 초기화 printf("\nHello"); // 프로그램의 시작을 알리는 메시지 LED_G_1=0;LED_R=0;LED_G_0=0; // LED ALL ON DelayXms(1000); // 1초 딜레이 LED_G_1=1;LED_R=1.. 2022. 11. 24.
MG82F6D Series TIM_T0T1_Mode 0 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. Timer 0, Timer 1을 설정하고, T0CKO(P34), T1CKO(P35)에서 펄스가 나올 수 있도록 한다. Timer 0 는 System Clock/192인 주파수를 입력클럭으로 사용하므로 62.5kHz의 주파수로 동작한다. Timer 0 은 16us 마다 1씩 증가하게 된다. Timer 0 인터럽트에서는 TH0의 값을 0 ~ FF까지 변화 시키므로 T0CKO에서는 약 244Hz의 구형펄스 주파수가 Duty가 변화 되는 모습을 보여준다. Timer 1 는 System Clock/48인 주파수를 입력클럭으로 사용하므로 250kHz의 주파수로 동작한다. Timer 1 은 4.. 2022. 11. 23.
MG82F6D Series TIM_T2_Mode2_Capture 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. 타이머 2의 모드 2는 캡쳐모드이다. EXEN2 비트를 셋(1) 시키게 되면 Timer 2는 그대로 동작하고, T2EXI(타이머 2 외부 인터럽트 입력 핀)의 입력이 1(High)에서 0(Low)으로 변경될 때 Timer 2의 레지스터 값을 RCAP2H, RCAP2L에 저장한다. 이 때 T2EXI는 T2CON레지스터의 EXF2 비트를 셋 시키고, Timer 2 Overflow와 같은 인터럽트 벡터를 사용하는 인터럽트가 발생한다. 두 신호 사이의 시간차를 구할 때 이 기능을 많이 사용한다. T2EXI 핀인 P11에 버튼을 연결하고, 버튼이 눌릴 때 마다 T2 레지스터의 값을 버퍼에 .. 2022. 11. 22.
MG82F6D Series WDT Reset 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. 와치도그 타이머를 1024ms로 설정하고 시스템을 동작시킨다. ① 전체 LED가 켜 졌다가 1초 후 OFF ② LEG_G_0이 약 10회 토글 ③ LED_R이 빠르게 토글되다가 리셋 되어 ①번부터 반복된다. 2. 회로도 3. Code ⑴ main routine void main() { u8 i; WDT_Clear(); // clear WDT InitSystem(); // System 초기화 WDT_SetClock_32K_DIV_64_1024ms(); // WDT clock : 32kHz(ILRCO) WDT_EnReset(); // Watchdog overflow 시 시스템 리셋이 .. 2022. 11. 17.
MG82F6D Series WDT Int. 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. 와치도그 타미어가 있을 때의 루프와 없을 때의 루프를 비교테스트 한다. 2. 회로도 3. Code ⑴ main routine void main() { u8 i; WDT_Clear(); // clear WDT InitSystem(); // System 초기화 WDT_SetClock_32K_DIV_64_1024ms(); // 와치도그용 클럭 셋팅 WDT_Enable(); // Enable WDT LED_G_0=0;LED_G_1=0;LED_R=0; // LED All On for(i=0;i 2022. 11. 17.