Views: 1140
Теперь простого горения светиков нам не достаточно, заставим их мигать. Для начала используем первобытно простой способ, но достаточно простой.
Используем функции delay, напрягаться откуда они берутся не будем, самое главное , что пишутся они так:
__delay_ms(x) // request a delay in milliseconds – задержка в миллисекундах
__delay_us(x) // request a delay in microseconds – задержка в микросекундах
для управления сторожевым таймером в семействе PIC18
__delaywdt_ms(x) // request a delay in milliseconds – задержка в миллисекундах
__delaywdt_us(x) // request a delay in microseconds – задержка в микросекундах
А почитать можно в файле MPLAB_XC8_C_Compiler_User_Guide.pdf который вы можете найти в папке …Microchip/xc8/v1.40/docs… или нажмите на пиктограмму
и буди вам чудо и откроются секреты описания, прямо в браузере!
Но вернемся к нашим баранам типа delay, добавим в главный цикл в программе (который нам любезно уже создал МСС) следующие строки:
LD1=0; // погасить LD2=1; // засветить while (1) { CLRWDT(); //сброс сторожевого таймера +++++++++++++++++++++- // Add your application code __delay_ms (1000); LD2=!LD2; }
что это значит по шагам:
- __delay_ms (1000); – заставить “остановиться” программу на 1 секунду и ждать её истечения.
- LD2=!LD2; – взять и записать в LD2 его противоположное значение, т.е. если LD2 состояние 1, записать ноль и наоборот. символ “!” – это символ отрицания. Вообще правильно написать LD2 = !LD2;, но компилятор грамотный сам разберется ;)
Еще один нюанс при работе с включенным сторожевым таймером, время задержки не должно превышать период работы сторожевого таймера, об настройке можно позаботиться в момент конфигурирования
или воспользоваться функцией в файле
void WDT_Initialize(void) { // WDTPS 1:65536; SWDTEN OFF; WDTCON = 0x16; }
естественно изменив его параметры.
Для реализации всего задуманного, необходимо только нажать кнопочку
Проверить нашу программу в железе, светик мигает!! А измени так:
LD1=0; // погасить LD2=1; // засветить while (1) { CLRWDT(); //сброс сторожевого таймера +++++++++++++++++++++- // Add your application code __delay_ms (1000); LD2=!LD2; LD1=!LD1; }
и заставим мигать два светика попеременно, поэкспериментируем с длительностью.
На заметку, часто нажимать мышкой на кнопку может быть унизительно, что бы этого избежать можно запрограммировать функциональные клавиши, например, F6 для выполнения команды компиляции проекта это намного удобнее. Это делается так: Выбираем закладку инструменты, потом опции
выберем настройку клавиш (комбинации клавиш), откроется
типа море всего, как найти, “то шо доктор приписал”, когда вы наводите мышкой на нашу кнопочку, то появляется её коварное название нам достаточно только первого слова или его его первых букв Make введем из в поле поиска6
и вот это коварная запись в самом низу, у меня она уже запрограммирована, а вам потребуется сделать двойной клик на поле Shortcut и нажать клавишу F6, потом кнопку OK. Все окно закроется и вы теперь можете наслаждаться тиская клавишу F6 и запуская проект на компиляцию не трогая ненавистную мышку!
Проект по этой теме
Проект с использованием MCC часть 04 157.08 KB 110 downloads
Теперь простого горения светиков нам не достаточно,...Мигать светодиодом просто в пустую используя рабочее время микроконтроллера, не допустимая растрата ресурсов, в это время вместо того , что бы тупо не ждать “чего” ПИК может например, опрашивать клавиатуру или чего рисовать на дисплее, как это сделать мигание светика без функции “делай” читаем в следующей статье…
Это может быть интересно
- Самый простой индикатор уровня звукового сигналаViews: 6321 Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на …
- NeoPixel LED и PIC18Views: 1678 Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …
- PIC18 – System ArbitrationViews: 572 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
- Оптосимистор и его применениеViews: 19612 Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf[wpdm_file id=129 template=”link-template-calltoaction3.php”] Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую …
- Гаджеты для домашней автоматики – Емкостной сенсорViews: 1609 Управление светодиодным освещением – Сенсор емкостной. Данный гаджет предназначен для управления освещением где необходимо включением освещение сенсорным прикосновением. Датчик позволяет управлять светодиодной нагрузкой в виде модулей или светодиодных лент …
- AD9833 – Programmable Waveform GeneratorViews: 2848 Простой генератор звуковых частот на AD9833. Для тестирования БПФ в светомузыке мне нужен был генератор звуковых частот. Я использовал советский Г3-112, но он себя давно изжил. Все думал купить …
- Бегущие огни на WS2812BViews: 4869 В настоящее время большой популярностью стали пользоваться светодиоды со встроенным драйвером WS2812B. Текущий проект предназначен показать возможность использования и управления этими светодиодами. Это и проект и исследование по …
- ch-светомузыка от теории до реализацииViews: 700 Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического …
- MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)Views: 1210 Введение MTouch ® Модуль Емкостной Библиотеки для MPLAB ® X Code Configurator (MCC) позволяет быстро и легко генерировать решение кода на Cи для емкостной сенсорной кнопки, датчика приближения и слайдера.
- CCP – модуль в режиме Compare на примере PIC18Views: 3099 CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare – позволяет …
Комментарии