본문 바로가기

[Microchip]/PIC16F

[PIC16F150x EVM]TIMER 인터럽트 테스트

[PIC16F150x EVM]TIMER 인터럽트 테스트


PIC16F1509 에는 3개의 타이머/카운터가 있다.

타이머 입력소스는 시스템클럭의 1/4 또는 T0CKI핀 으로 입력 받을 수 있다.




PIC16F1509 타이머 초기화 함수

void InitTimer0(void)

{

 // TMR0 Associate Registers Initial

 TMR0CS = 0; // Timer0 CLK Source설정 -> FOSC/4


 PSA = 0;                   //Prescaler 사용여부 설정(사용)

 PS0 = 0;         // Prescaler 1:4

 PS1 = 1;         // Prescaler 1:16

 PS1 = 0;         // Prescaler 1:256


 TMR0 = INTERVAL_1mS;  // Initial TMR0

 

 //타이머 인터럽트 레지스터 초기화

 T0IF = 0;     //Clear TMR0 Interrupt Flag

 T0IE = 1;     //Enable TMR0 Interrupt


 GIE = 1;     //Enable Global Interrupt

}





MCU_TimerCal 프로그램을 이용해  간단히 1ms에 대한 설정값을 구할 수 있다.



#define INTERVAL_1mS 0x82


volatile unsigned int gTimeTick1_1ms = 0;

//인터럽트 핸들러 

interrupt ServiceRoutine() 

{

   // Timer0 Interrupt 발생하면

   if(T0IF)

  { 

    TMR0 = INTERVAL_1mS;  // Initial TMR0

    T0IF = 0;     // Clear Interrupt Flag


gTimeTick1_1ms++;

//Led1Toggle();

  }

}








반응형