본문 바로가기

분류 전체보기154

MG82F6D Series BOD 1. 프로그램 개요 P22는 Green 0 LED, P24는 Red LED, P26은 Green 1 LED가 연결되어 있다. Brown-Out Detector(BOD0, BOD1)는 VDD 전원을 모니터한다. BOD0은 1.7V 확인으로 고정되어 있고, BOD1은 4.2V, 3.7V, 2.4V, 2.0V로 설정할 수 있다. BOD0가 확인 레벨과 맞게 되면 PCON1레지스터의 BOF0 비트가 셋 된다. 만약 ESF(EIE1레지스터의 3번비트와 BOF0IE(SFIE레지스터의 1번 비트)가 사용가능하게 되어 있으면 BOF0는 인터럽트 플래그를 발생시킨다. 정상동작이든 대기모드이든 상관없이 인터럽트가 동작한다. BOD1도 동일한 동작을 하게 되며, 만약 AWBOD1(PCON2 레지스터의 7번 비트)이 셋 되어.. 2022. 11. 28.
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.