Проект с использованием MCC часть 03

Views: 1591


Первым делом перенастроим регистры конфигурации, следующим образом:

  1. Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin)
  2. Включим сторожевой таймер (WDT enabled)

После этой настройки мы должны будем увидеть в изменении графического вида контроллера

было:
стало:

Настройки конфигурации должна выглядеть так


Теперь перейдем к настройке портов, необходимо перейти к окну Pin Manager: Grid (MCC)

И сразу вопрос, что с этим делать? Дополнительно откроем закладку

Теперь в окне Pin Manager: Grid (MCC) в разделе Pin Module настроим все выводы портов на выход

Обратите внимание при настройке портов на выход, будет заполняться окно

После окончания “клацанья на замочки” мы получим

Теперь перейдем к более конкретному анализу настройки портов, первое выводы могут быть “цифровые” и “аналоговые”, смотрим на столбец со свойством Analog

И снимем птички Аналог с выводов, и одновременно снимем птички в колонке подтягивающих резисторов WPU, после окончанию процесса нажмем кнопочку сгенерировать

 

и обратим внимание как изменилось содержимое функции PIN_MANAGER_Initialize в файле pin_manager.c

void PIN_MANAGER_Initialize(void)
{
    /**
    LATx registers
    */   
    LATA = 0x00;    
    LATB = 0x00;    
    LATC = 0x00;    

    /**
    TRISx registers
    */    
    TRISA = 0x08;
    TRISB = 0x00;
    TRISC = 0x00;

    /**
    ANSELx registers
    */   
    ANSELC = 0x00;
    ANSELB = 0x00;
    ANSELA = 0x00;

    /**
    WPUx registers
    */ 
    WPUB = 0x00;
    WPUA = 0x08;
    OPTION_REGbits.nWPUEN = 0;

    
    /**
    APFCONx registers
    */
    APFCON = 0x00;


   
    
}       

LATx registers – управление сигналами на выходе порта – низкий уровень (0);

TRISx registers – направление сигналов – все на выход, кроме TRISA = 0x08 – это наш вход MCLR;

ANSELx registers – аналоговые входы отключены;

WPUx registers – подтягивающие резисторы отключены (потом мы еще не раз вернемся к этому регистру, будем подключать тактовые кнопки для организации ввода данных);

APFCONx registers – регистр настройки альтернативного подключения периферийных модулей. Это тоже интересный регистр, но о нем немного по позже.


Сделано много, даже можно перепрошить микроконтроллер, но это го маловато для получения первого эффекта типа “гори светодиод”. Как вы должны были заметить, что по схеме мы к ногам 7 и 8 порты RC3 и RC6 подключены светодиоды, они подключены через токоограничивающие резисторы и подключены к “земле”. Это значит, если мы прошьем наш ПИК (так будем в дальнейшем ругаться) светики гореть не будут. Что реально обидно!

Для начала прибегнем к одному приему который в будем может стать довольно удобным, это опишем наши светодиоды так, что бы компилятор понимал, что если мы будем писать LD1=1; это значит подать единицу на порт к которому подключен нас светик.

 Откроем главный файл проекта, в вставим следующие строчки описания светодиодов перед началам самой программы, а начнем с символа # откроется окно в котором выберем define

и пропишем:

// описание подключения светодиодов
#define LD1 LATC3   //
#define LD2 LATC6   //

Это значит, что если мы в тексте пишем LD1 то компилятор будет понимать, что мы хотим обратится к 3 биту регистра LATC который управляет уровнями сигнала на выходе порта С ПИКа.

И самое главное, что надо сделать!!! Это мы включили сторожевой таймер, а за него теперь надо не забывать, он контролирует работу программы ПИКа, и если его периодически не сбрасывать, то он будет считать, что программа работает некорректно и будет выполнять перезапустит ПИК. Для того, что бы этого не произошло, когда программа правильно работает существует в XC8 макрос (функция, как удобно)

CLRWDT();   //сброс сторожевого таймера +++++++++++++++++++++-

Для этого добавим эту команду в начало программы и главный цикл, для начала этого будут вполне достаточно. А теперь зажжем один наш светик.

Наша программа должна иметь вид:

// описание подключения светодиодов
#define LD1 LATC3   //
#define LD2 LATC6   //





void main(void)
{
    
    // initialize the device
    SYSTEM_Initialize();
    
    CLRWDT();   //сброс сторожевого таймера +++++++++++++++++++++- 

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    // Enable the Global Interrupts
    //INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();

    LD1=0;  // погасить
    LD2=1;  // засветить
    
    while (1)
    {
        CLRWDT();   //сброс сторожевого таймера +++++++++++++++++++++-    
        // Add your application code
    }
}

Обратите внимание: При компиляции может появляться (особенно в ново созданном проекте) сообщение

 установите птичку (ну типа не хочу тебя видеть), чтобы в дальнейшем это окно не появлялось.

Если все делаете корректно моему описанию, то у вас не должно возникать проблем а окне Output – программатора всегда будет сообщение

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x7ff
configuration memory
Programming/Verify complete

После программирования микроконтроллера мы увидим, что LD1 не горит LD2 горит. Изменит параметры

    LD1=1;  // засветить
    LD2=1;  // засветить

и поиграемся управлением портами.


Для удобства готовый проект для этой стадии изучения 

Значок

Проект с использованием MCC часть 03 155.90 KB 154 downloads

Проект, для текущей стадии изучения (03) ...


В четвертой части заставим мигать светики …


Это может быть интересно


  • Audio-bluetooth modules BK8000L (noname)Audio-bluetooth modules BK8000L (noname)
    Views: 664 Еще один вариант, так сказать недоразумения Audio-bluetooth modules BK8000L (noname). Его отличительной маркировкой служат два отверстия в плате и надпись R2. Отличают его от модулей на чипе BK8000L, …
  • ch-светомузыка и AK4113ch-светомузыка и AK4113
    Views: 1286 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
  • WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)
    Views: 5050 AT команды связанные с функцией TCP/IP В этом разделе описаны команды которые позволяют устанавливать соединения между серверами и клиентами в сети. Приведено описание команд и примеры их выполнения. …
  • MPLAB® Harmony – или как это просто! Часть 2.MPLAB® Harmony – или как это просто! Часть 2.
    Views: 2686 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …
  • Простой сенсорный регулятор светаПростой сенсорный регулятор света
    Views: 2319 Простой сенсорный регулятор. Проект – 2007 года. Регулятор выполнена на микроконтроллере PIC12F683 и имеет минимальное количество элементов. Выполняет стандартные функции, включение выключение света, изменение яркости, запоминание последнего установленного уровня …
  • MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)MTouch® Модуль Емкостной Библиотеки для MPLAB®X Code Configurator (MCC)
    Views: 1210 Введение MTouch ® Модуль Емкостной Библиотеки для MPLAB ® X Code Configurator (MCC) позволяет быстро и легко генерировать решение кода на  Cи для емкостной сенсорной кнопки, датчика приближения и слайдера.
  • Проект с использованием MCC часть 10Проект с использованием MCC часть 10
    Views: 840 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …
  • Цифровой спидометр для автомобиляЦифровой спидометр для автомобиля
    Views: 10160  Универсальность печатной платы ch-c0030pcb позволяет создавать на её основе разнообразные устройства. Одним из таких устройств является электронный спидометр для автомобиля, в котором можно задать два компаратора скорости, например,  для …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Views: 1420 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Views: 17850 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …



Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее

Комментарии

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.