Использование Timer2 PIC32 для установки задержки - PullRequest
1 голос
/ 28 сентября 2011

Я довольно новичок в PIC32 и его программировании на C, поэтому я немного озадачен тем, как решить следующую проблему.Меня попросили включить и выключить светодиод PIC32, что я могу сделать хорошо;однако теперь я хочу добавить задержку 0,25 с между переключениями.Мне сказали, что я использую системные часы с частотой 72 МГц и частоту периферийной шины 36 МГц.Теперь я знаю, что Timer2 является таймером типа B, и что я должен сконфигурировать его для 16-битной операции без шлюза.Я подумал, что могу сначала установить начальные значения TMR2, PR2 и других битов в T2CON по мере необходимости, прежде чем устанавливать TON для начала времени, заканчивая его очисткой TON и сбросом начальных значений.

Хорошо, если это вышезвучит правильно, как я могу сделать это с C?Что я могу извлечь из справочного руководства, так это то, что оно может выглядеть примерно так:

T2CON = 0x0;           // Stop Timer and clear control register,
                       // set prescaler at 1:1, internal clock source
TMR2 = 0x0;            // Clear timer register
PR2 = 0xFFFF;          // Load period register
T2CONSET = 0x8000;     // Start Timer

Теперь, как я могу установить предварительную шкалу, а что нет, чтобы я мог добиться задержки 0,25 с?Я просто не очень хорошо разбираюсь в том, что мне нужно для C, и я до сих пор не настолько хорош в выполнении подобных вещей на ассемблере для начала ... Любое руководство приветствуется.Вот мой код:

#include <p32xxxx.h>

int main()
{
    while(1)
    {
        PORTDbits.RD0 = 1;    // Turns LED On?
        // Delay...?
        PORTDbits.RD0 = 0;    // Turns LED Off?
        // Delay...?
    }
    return 0;
}

Заголовочный файл: p32mx360f512l.h, если это имеет какое-либо значение.

1 Ответ

0 голосов
/ 28 сентября 2011

имя файла заголовка IS используется ... на основе этого имени файла, я думаю, это чип, с которым вы должны работать ... http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en532441

на этой странице вы можете найти кодпримеры в c, так что это должно охватывать вопросы типа «как работать с этим чипом в c»

, поэтому для вашего общего подхода:

цикл - хорошая идея, но так как вы получилитаймер типа b в режиме без шлюза, я думаю, что это должно быть подсказкой, чтобы использовать обработчики прерываний для выполнения работы ... взгляните на http://ww1.microchip.com/downloads/en/DeviceDoc/61105E.pdf (раздел 14.4) о том, как установить это

в ISR сравните значение таймера / счетчика со значением, которое вам нужно будет рассчитать на основе частоты тактового генератора и настройки предварительного масштабирования, чтобы вы знали, когда наступило желаемое время, чтобы перевернуть бит

послебит перевернут, сброс таймера для следующего цикла

...