2013-10-15 3 views
0

timer2가 펄스 폭 변조를 사용할 수 있도록 설정하려고합니다. 내부 8MHz 오실레이터와 함께 PIC18F87J11을 사용하고 있습니다. 필자는 PIC 프로그래밍에 대한 최소한의 지식을 가지고 있으므로 타이머를 사용하려면 코드에서 누락 된 것이 무엇인지 알고 싶습니다. PIC18에서 타이머 2를 활성화하는 방법은 무엇입니까?

#define TMR2_IF   PIR1bits.TMR2IF 
#define TMR2_IE   PIE1bits.TMR2IE 
#define TMR2_IP   IPR1bits.TMR2IP 
#define TMR2_CON   T2CON 

내가 아직 배치 할 위치를 모르는 코드의 지금

void main() 
{ 
    TMR2_CON = 0b00000100 | CLOCK_DIVIDER_SETTING; // CLOCK_DIVIDER_SETTING = 4 

    TMR2_IF = 0; 
    TMR2_IE = 1; 
    TMR2_IP = 1; 

while(1); 

} 

나머지의이 내 주요 코드입니다 가정 해 봅시다.

if(TMR2_IF) 
    { 

     printf("\r\nHello"); 

     if(TMR2_IE) 

     { 
      TMR2_IF = 0; 
     } 

    } 

내가 인터럽트 서비스 루틴가 필요하십니까? 예인 경우 어떻게 추가합니까? 내 목표는 내가 아직 거기에 도착하지 않은 PWM을 사용하는 것입니다 기억하지만, 지금은 timer2에 대한 설정이 올바른지 확인하고자합니다.

그 밖의 무엇이 누락 되었습니까?

미리 감사드립니다.

+0

어떤 생각을 아직까지? – Ammar

+0

어떤 컴파일러를 사용하고 있습니까? –

+0

MPLAB C18을 사용 중입니다. – Ammar

답변

0

변경 while(1);

while(1) 
{ 

if(TMR2_IF) 
    { 

     printf("\r\nHello"); 

     if(TMR2_IE) 

     { 
      TMR2_IF = 0; 
     } 

    } 
} 
+0

이것은 매우 빨리 인쇄됩니다. 그 이유는 무엇입니까? – Ammar

+0

나는 Prescaler를 변경하고 Postscale이 크게 영향을 미치지 않는다는 것을 알아 차렸다. 나는 아직도 성명이 아마 200ms마다 인쇄되는 것을 본다. – Ammar