Views: 1214
Сама задержка или ожидание чего-то не самая популярная вещь в программировании, ведь она просто тратит машинное время в пустую. Но как ни крути, время от времени её необходимо использовать. Как видим одним из удобных вариантов формирования задержки нам предоставляет стандартная библиотека libpic30.h в виде трех макросов:
__delay32 – формирование задержки в тактах процессорного времени.
пример: __delay32(NNN); где NNN – unsigned long циклов, минимальное число 12 циклов, если значение меньше 12, то все равно будет задержка в 12 циклов (12-4294967295).
__delay_ms – формирование задержки в миллисекундах.
пример: __delay_ms(NNN); где NNN – unsigned int – миллисекунд (0-65536).
__delay_us – формирование задержки в микросекундах.
пример: __delay_us(NNN); где NNN – unsigned int – микросекунд (0-65536).
Для макросов __delay_ms и __delay_us необходимо сделать определение и указать рабочую тактовую частоту контроллера, сделать это надо до “вставки” библиотеки (типа так):
// #define FCY 32000000UL // определение тактовой частоты для макросов __delay_ms() и __delay_us() #include // библиотека функций //
Существуют разные возможности формирования задержек при помощи встроенных таймеров, но как показала практика, ни в эффективности, ни в практичности они уступают макросам. Во первых расходуется больше памяти, во вторых задействован сам таймер, который может использоваться для других целей.
Но для расширения кругозора, приведем пример, решения нашей задачи из прошлой главы с миганием светодиодов.
Для начала необходимо включить в работу сам таймер (работу самого таймера будет рассмотрено позже):
//--------------------------------------------------------------------------- // Настройка таймера TMP1 T1CON = 0b1000000000110000; // |||||||||||||||+-- неиспользуемый // ||||||||||||||+--- TCS: источник тактовых импульсов FOSC/2 // |||||||||||||+---- TSYNC: состояние игнорируется, так как тактовая частота системный генератор // ||||||||||||+----- неиспользуемый // ||||||||||++------ TCKPS1:TCKPS0: настройка предделителя 11 = 1:256 // |||||||||+-------- TGATE: 0- режим измерение длительности входного импульса отключен // |||++++++--------- неиспользуемые // ||+--------------- TSIDL: 0- продолжать работу в режиме ожидания (сна) // |+---------------- неиспользуемый // +----------------- TON: 1 -таймер включен PR1=0xFFFF; // период счета //
После такого включения таймера можно выполнить формирования задержки следующим образом:
// TMR1=0; while(TMR1 < 60000); //
А сам главный цикл из прошлой главы может быть иметь такой вид:
//
while(1)
{
ClrWdt(); // сброс сторожевого таймера
_LATA0 = 0; // выключить светодиод
_LATB0 = 1; // включить светодиод
TMR1=0;
while(TMR1 < 60000);
// __delay_ms(500); // ждать 0,5 секунды
_LATA0 = 1; // включить светодиод
_LATB0 = 0; // выключить светодиод
TMR1=0;
while(TMR1 < 60000);
// __delay_ms(500); // ждать 0,5 секунды
}
//
Всем желающим можно попробовать этот вариант. Хотя как я уже говорил, он не эффективен.
Это может быть интересно
Real-time music visualization technologyViews: 380 Music visualization technology in real time (RTMV-technology). Я не музикант і я не маю спеціальної музичної освіти, я інженер розробник вбудованих систем. Але моє хобі розроблення технології візуалізації …
Самый простой диммер для светодиодного освещенияViews: 3211 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
Electronic Speed Controller for FPV droneViews: 59 Другий проект цієї серії, це контролер швидкості або контролер управління BLCD мотором. Для аналізу було вибрано плату SpeedyBee BLS 55A 4-in-1 ESC із комплекту SpeedyBee F405 V4 BLS …
LATINO – открытый проект ch-светомузыкиViews: 1771 Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была …
Счетчики посетителейViews: 1310 Вас сосчитали!? или счетчики посетителей. Для чего нужны счетчики посетителей? Какие они бывают? ТОРГОВЛЯ. Подсчитайте, сколько ваш магазин посещает человек за день. Кок много человек приходит утром, какое …
Одноканальный емкостной сенсор – AT42QT1012Views: 2496 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …
ch-светомузыка от теории до реализацииViews: 973 Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического …
DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-серверViews: 1211 Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети …
PIC32MZ – прерывания (заметки)Views: 536 Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот …
Проблемы классической светомузыкиViews: 2200 Светомузыка – что это такое? Определение: Светомузыка (жаргонное: цветомузыка) — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название …