Как включить Таймер 2 на PIC18?

Я хочу, чтобы timer2 мог использовать широтно-импульсную модуляцию. Я использую PIC18F87J11 с внутренним генератором 8 МГц. У меня есть минимальные знания о программировании PIC, поэтому я хочу знать, чего еще не хватает в моем коде, чтобы включить таймер.

#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;
         }

   }

Нужна ли мне программа обработки прерываний? Если да, как ее добавить? Помните, что моя цель — использовать ШИМ, который я еще не получил, но сейчас я хочу убедиться, что настройки для таймера 2 верны.

Чего еще не хватает?

Заранее спасибо!


person Ammar    schedule 15.10.2013    source источник
comment
Какой компилятор вы используете?   -  person Daniel Grillo    schedule 15.10.2013
comment
Я все еще застрял с timer2   -  person Ammar    schedule 16.10.2013
comment
Любые дальнейшие предложения?   -  person Ammar    schedule 17.10.2013
comment
Взгляните на embeddedcodesource.com от Microchip. Там вы найдете множество примеров.   -  person Daniel Grillo    schedule 17.10.2013
comment
Спасибо, кажется полезным.   -  person Ammar    schedule 17.10.2013


Ответы (1)


изменить while(1);

to

while(1)
{

if(TMR2_IF)
    {

        printf("\r\nHello");

        if(TMR2_IE)

         {
            TMR2_IF = 0;
         }

   }
}
person Dennis Kerrisk    schedule 15.10.2013
comment
это печатает очень быстро, почему это? - person Ammar; 15.10.2013
comment
Я заметил, что изменение Prescaler и Postscale на самом деле не сильно влияет на это. Я все еще вижу, что оператор печатается, вероятно, каждые 200 мс. - person Ammar; 15.10.2013