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

Views: 2295


Когда мы запустили конфигуратор, самое главное понять, что с этим делать и как проверить, то что мы делаем работает или нет.

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

Схема генератора

Нам надо настроить так, чтобы 16 мГц появились на выходе Fosc. Для этого выполним следующие настройки

т.е. тактируем от внутреннего генератора, систем генератором определяем внутренний генератор, тактовая частота 16МГц.

Птичку низковольтное программирование можем убрать. Но этого недостаточно для оживления микроконтроллера необходимо настроить регистры конфигурации. Регистры конфигурации отвечают за основные характеристики и поэтому должны быть настроены первыми. Перейдем в закладку Регистры и начнем настраивать.

Первое с чем придется столкнуться это понимание, что мы делаем:


BOREN – функция отвечающая за сброс (перезапуск) микроконтроллера при понижении питании ниже допустимого уровня.

В нашем распоряжении доступны четыре опции:

  • Brown-out Reset enabled – функция включена
  • Brown-out Reset disabled – функция выключена
  • Brown-out Reset controlled by SBOREN bit of the BORCON register – управление функция осуществляется через бит SBOREN в регистре BORCON
  • Brown-out Reset enabled during operation and disabled in Sleep – функция активна во время работы и отключена во время сна.

Выберем функция включена.


CLKOUTEN – функция позволяющая вывести тактовую частоту на вывод микроконтроллера, при это надо учитывать что мы получим Fosc/4, т.е. так мы можем проверить корректность выполнения нашей задачи и убедиться работает ли микроконтроллер. На первом этапе мы включим, а в дальнейшей работе она нам не понадобится.

Опции настройки:

  • CLKOUT function is enabled on the CLKOUT pin – на третей ноге микроконтроллера будет тактовая частота 4 МГц.
  • CLKOUT function is disabled. I/O function on the CLKOUT pin – функция отключена, ноги генератора используются как порты ввода вывода.

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

CP – функция защиты памяти программ от чтение программатором. Т.е. если вы создаете коммерческую программу, то она должна быть активна. У нас простой микроконтроллер и всего две опции.

  • Program memory code protection is disabled – защита отключена
  • Program memory code protection is enabled – защита включена

FCMEN – монитор контроля работы тактового генератора, хоть микроконтроллер и простой но такая функция есть. Его задача контролировать работу основного генератора и при нарушении тактовой частоты переключить работу микроконтроллера на резервный. Если посмотреть, на схему генератора, то в нашем случае резервным может быть дополнительный на 31 кГц, но если будет настройка с использование генератора на внешнем “кварце”, то внутренний можно использовать как резервный. В нашем случае мы не будем эту функции использовать и отключим её.

  • Fail-Safe Clock Monitor is enabled – включена
  • Fail-Safe Clock Monitor is disabled – выключена

FOSC – выбор основного тактового генератора (в нашем случае уже настроено, так как мы это сделали при настройки генератора), но нам доступны следующие опции

  • ECH:External clock, High-Power mode: on CLKIN pin – внешний тактовый сигнал в диапазоне 4-20 МГц подключенный к выводам микроконтроллера
  • ECM: External clock, Medium Power mode: on CLKIN pin – внешний тактовый сигнал в диапазоне 0,5-4 МГц подключенный к выводам микроконтроллера
  • ECL: External clock, Low-Power mode: on CLKIN pin – внешний тактовый сигнал в диапазоне 0-0,5 МГц подключенный к выводам микроконтроллера
  • INTOSC oscillator: I/O function on CLKIN pin – внутренний генератор выводы используются как порты ввода/вывода.
  • EXTRC oscillator: External RC circuit connected to CLKIN pin – внешний RC – генератор
  • HS oscillator: High-speed crystal/resonator connected between OSC1 and OSC2 pins – высокочастотный кварц подключенный к выводам OSC1 и OSC2 (4-20 МГц)
  • XT oscillator: Crystal/resonator connected between OSC1 and OSC2 pins – среднечастотный кварц подключенный к выводам OSC1 и OSC2 (0,5-4 МГц)
  • LP oscillator: Low-power crystal connected between OSC1 and OSC2 pins – низкочастотный кварц подключенный к выводам OSC1 и OSC2 (0-0,5 МГц)

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

  • Internal/External Switchover (Two-Speed Start-up) mode is enabled – включена
  • Internal/External Switchover mode is disabled – отключена

MCLRE – возможность использовать вход сброса, как вход порта. Но мы уже собрали внешнюю схему и будет использовать его по назначению. Но если нам понадобится в нашем проекте еще один вход, то можно использовать этот вывод, при этом микроконтроллер будут использовать внутреннюю схему сброса и контроля напряжения питания. Обратите внимание, если вы предполагаете использовать низковольтное программирование, то использовать эту функцию будет невозможно.

  • MCLR/VPP pin function is MCLR; Weak pull-up enabled – вход сброса
  • MCLR/VPP pin function is digital input; MCLR internally disabled (Weak pull-up under control of WPUA3 bit) – вывод настроен на цифровой вход. В этом случае можно на этом входе активировать подтягивающий резистор – бит WPUA3.

PWRTE – таймер задержки включения микроконтроллера при подачи питания. Его функция заключается в следующем, что когда контроллер определит, что питание в норме, запускается таймер который отсчитывает определенное время, после чего разрешается запуск микроконтроллера.

  • PWRT disabled – отключен
  • PWRT enabled – включен

Для нас включим.


WDTE – Сторожевой таймер. Его назначение, наблюдать за работой программы и если программа останавливается или нарушается привычный цикл работы, перезапустить микроконтроллер и возобновить нормальную работу. В этом микроконтроллере реализована, только простой функционал. Для работы таймера необходимо в основном цикле программы установить команду сброса микроконтроллера. В настройка доступны четыре режима работы:

  • WDT enabled – включен
  • WDT enabled while running and disabled in Sleep – включен в нормальной работе отключен в режиме сна
  • WDT controlled by the SWDTEN bit in the WDTCON register – управление таймером определяется битом SWDTEN в регистре WDTCON
  • WDT disabled – отключен

Для первой стадии обучения таймер отключим, но в последствии он будет постоянно включен.


BORV – уровень определения срабатывания функции BOREN. В этой функции доступны два параметра:

  • Brown-out Reset voltage (VBOR), low trip point selected – низкий уровень
  • Brown-out Reset voltage (VBOR), high trip point selected – высокий уровень

Точный уровень напряжений можно посмотреть в описании на микроконтроллер. Для нашего микрконтроллера определены следующие значения

Сим. Параметр. Min. Typ. Max. Units. Значение бита управления в регистре конфигурации.
VBOR Brown-out Reset Voltage 2.55 2.70 2.85 V BORV = 0
2.35 2.45 2.58 V BORV = 1  (PIC16LF1508/9)
1.80 1.90 2.05 V BORV = 1  (PIC16LF1508/9)

Установим высокий уровень контроля напряжения.


LPBOR – задает работы функции BOR при работе при низком напряжении.

  • Low-Power Brown-out Reset is disabled – отключено
  • Low-Power Brown-out Reset is enabled – включено

Установим параметр отключено.


LVP – функция режима низковольтного программирования. В нашем варианте эта функция отключена.

  • Low-voltage programming enabled – низковольтное программирование включено.
  • High-voltage on MCLR must be used for programming – включено высоковольтное программирование с использование вывода MCLR.

STVREN – функция запуска сброса микроконтроллера при переполнения стека вызова подпрограмм. В двух словах, что это такое , в микроконтроллере имеется стек в котором сохраняются адреса памяти из которых происходит вызов подпрограммы или функции или процедуры. По окончанию работы функции, из стека читается адрес куда должен вернуться “микроконтроллер” для продолжения работы по программе. Размер стека ограничен. В разных микроконтроллерах от может быть даже равен 2 (PIC10), для нашего он равен 16. Это значит, что допустимо до 16 вложенных вызовов (включая и прерывная). Так вот если произойдет 17 вложенный вызов, то произойдет сбой в работе программы, вот на этот случай и рассчитана работы эта функция. Но для нас надеюсь во время обучения она не потребуется, поэтому мы установим этот параметр в состояние отключено.

  • Stack Overflow or Underflow will cause a Reset – включено
  • Stack Overflow or Underflow will not cause a Reset – отключено

WRT – функция защиты памяти программ от модификаций. Доступны четыре параметра:

  • Write protection off – отключено
  • 0000h to 01FFh write protected, 0200h to 1FFFh may be modified – частично
  • 0000h to 0FFFh write protected, 1000h to 1FFFh may be modified -частично
  • 0000h to 1FFFh write protected, no addresses may be modified – вся память защищена

Для обучения этот параметр не важен поэтому выберем отключено.


Для у нас настройка генератора, мы его уже настроили, поэтому эти параметры не трогаем. И остается настройка периода сторожевого таймера, этот параметр, пока оставим по умолчанию, то что нам предлагает MCC.

В результате мы должны получить

Теперь нажмем кнопочку Сгенерировать

И МСС выполнит первые настройки проекта. В окне Output – MCC мы должны увидеть

Loading MCC Configuration file 
  MyConfig.mc3 load completed 

Saving MCC Configuration file: 
  MyConfig.mc3 save completed 


Saving MCC Configuration file: 
  MyConfig.mc3 save completed 


Saving MCC Configuration file: 
  MyConfig.mc3 save completed 

Generation Results
------------------
main.c                            Success. New file.
mcc_generated_files\mcc.c         Success. New file.
mcc_generated_files\mcc.h         Success. New file.
mcc_generated_files\pin_manager.c Success. New file.
mcc_generated_files\pin_manager.h Success. New file.
Generation complete (total time: 2247 milliseconds)

Saving MCC Configuration file: 
  MyConfig.mc3 save completed 

А если откроем закладку проекты, то обнаружим появление в нем файла main.c (все делается за нас) и папки MCC Generated Files

Запрограммируем наш микроконтроллер, подразумевается, что дебаггер-программатор подключен к нашей схеме. Для этого нажмем кнопочку

Что мы должны получить? Ну на этом этапе можно проверить работу генератора, помните мы настроили на выход. Вот если теперь подключиться к ножке 3 микроконтроллера частотомер, то мы должный на ней увидеть частоту 4 МгЦ.

Микроконтроллер работает!!!

На данном этапе мы настроили тактовый генератор и регистры конфигурации.

Посмотри, что нас находиться в наших файлах. Для открытия файлов, сделаем двойной клик на файле в окне проеты. Файл main.c

/**
  Generated Main Source File

  Company:
    Microchip Technology Inc.

  File Name:
    main.c

  Summary:
    This is the main file generated using MPLAB(c) Code Configurator

  Description:
    This header file provides implementations for driver APIs for all modules selected in the GUI.
    Generation Information :
        Product Revision  :  MPLAB(c) Code Configurator - 4.15
        Device            :  PIC16F1509
        Driver Version    :  2.00
    The generated drivers are tested against the following:
        Compiler          :  XC8 1.35
        MPLAB             :  MPLAB X 3.40
*/

/*
    (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this
    software and any derivatives exclusively with Microchip products.

    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
    WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
    PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION
    WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.

    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
    BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
    FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
    ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
    THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.

    MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE
    TERMS.
*/

#include "mcc_generated_files/mcc.h"

/*
                         Main application
 */
void main(void)
{
    // initialize the device
    SYSTEM_Initialize();

    // 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();

    while (1)
    {
        // Add your application code
    }
}
/**
 End of File
*/

рассмотрим файл pin_manager.c

/**
  Generated Pin Manager File

  Company:
    Microchip Technology Inc.

  File Name:
    pin_manager.c

  Summary:
    This is the Pin Manager file generated using MPLAB(c) Code Configurator

  Description:
    This header file provides implementations for pin APIs for all pins selected in the GUI.
    Generation Information :
        Product Revision  :  MPLAB(c) Code Configurator - 4.15
        Device            :  PIC16F1509
        Driver Version    :  1.02
    The generated drivers are tested against the following:
        Compiler          :  XC8 1.35
        MPLAB             :  MPLAB X 3.40

    Copyright (c) 2013 - 2015 released Microchip Technology Inc.  All rights reserved.

    Microchip licenses to you the right to use, modify, copy and distribute
    Software only when embedded on a Microchip microcontroller or digital signal
    controller that is integrated into your product or third party product
    (pursuant to the sublicense terms in the accompanying license agreement).

    You should refer to the license agreement accompanying this Software for
    additional information regarding your rights and obligations.

    SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
    EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
    MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
    IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER
    CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR
    OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
    INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR
    CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF
    SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
    (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.

*/

#include <xc.h>
#include "pin_manager.h"
#include "stdbool.h"


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

    /**
    TRISx registers
    */    
    TRISA = 0x3F;
    TRISB = 0xF0;
    TRISC = 0xFF;

    /**
    ANSELx registers
    */   
    ANSELC = 0xCF;
    ANSELB = 0x30;
    ANSELA = 0x17;

    /**
    WPUx registers
    */ 
    WPUB = 0xF0;
    WPUA = 0x3F;
    OPTION_REGbits.nWPUEN = 0;

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


   
    
}       

void PIN_MANAGER_IOC(void)
{   

}

/**
 End of File
*/

Файл mcc.c

/**
  @Generated MPLAB(c) Code Configurator Source File

  @Company:
    Microchip Technology Inc.

  @File Name:
    mcc.c

  @Summary:
    This is the mcc.c file generated using MPLAB(c) Code Configurator

  @Description:
    This header file provides implementations for driver APIs for all modules selected in the GUI.
    Generation Information :
        Product Revision  :  MPLAB(c) Code Configurator - 4.15
        Device            :  PIC16F1509
        Driver Version    :  1.02
    The generated drivers are tested against the following:
        Compiler          :  XC8 1.35
        MPLAB             :  MPLAB X 3.40
*/

/*
    (c) 2016 Microchip Technology Inc. and its subsidiaries. You may use this
    software and any derivatives exclusively with Microchip products.

    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
    WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
    PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION
    WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.

    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
    BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
    FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
    ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
    THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.

    MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE
    TERMS.
*/

// Configuration bits: selected in the GUI

// CONFIG1
#pragma config FOSC = INTOSC    // Oscillator Selection Bits->INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = OFF    // Watchdog Timer Enable->WDT disabled
#pragma config PWRTE = ON    // Power-up Timer Enable->PWRT enabled
#pragma config MCLRE = ON    // MCLR Pin Function Select->MCLR/VPP pin function is MCLR
#pragma config CP = ON    // Flash Program Memory Code Protection->Program memory code protection is enabled
#pragma config BOREN = ON    // Brown-out Reset Enable->Brown-out Reset enabled
#pragma config CLKOUTEN = ON    // Clock Out Enable->CLKOUT function is enabled on the CLKOUT pin
#pragma config IESO = OFF    // Internal/External Switchover Mode->Internal/External Switchover Mode is disabled
#pragma config FCMEN = OFF    // Fail-Safe Clock Monitor Enable->Fail-Safe Clock Monitor is disabled

// CONFIG2
#pragma config WRT = OFF    // Flash Memory Self-Write Protection->Write protection off
#pragma config STVREN = OFF    // Stack Overflow/Underflow Reset Enable->Stack Overflow or Underflow will not cause a Reset
#pragma config BORV = HI    // Brown-out Reset Voltage Selection->Brown-out Reset Voltage (Vbor), high trip point selected.
#pragma config LPBOR = OFF    // Low-Power Brown Out Reset->Low-Power BOR is disabled
#pragma config LVP = OFF    // Low-Voltage Programming Enable->High-voltage on MCLR/VPP must be used for programming

#include "mcc.h"

void SYSTEM_Initialize(void)
{

    PIN_MANAGER_Initialize();
    OSCILLATOR_Initialize();
    WDT_Initialize();
}

void OSCILLATOR_Initialize(void)
{
    // SCS INTOSC; IRCF 16MHz_HF; 
    OSCCON = 0x7A;
    // Set the secondary oscillator
    
}

void WDT_Initialize(void)
{
    // WDTPS 1:65536; SWDTEN OFF; 
    WDTCON = 0x16;
}

/**
 End of File
*/

Но просто микросхема генератор частоты 4 мГц нам вряд ли потребуется, то перейдем к конфигурированию выводов микроконтроллера.

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


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


  • Стробоскоп для автомобиляСтробоскоп для автомобиля
    Views: 2170 Одним из популярных решений светового тюнинга автомобиля, мотоцикла или скутера стал эффект –  “полицейский стробоскоп“. На база платы ch-c0050 реализовано несколько проектов. В этой статье приводятся две версии …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Views: 5884 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Views: 863 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
  • PIC18 – System ArbitrationPIC18 – System Arbitration
    Views: 572 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
  • MCC PIC24 – модуль OUTPUT COMPARE – режиме ШИМMCC PIC24 – модуль OUTPUT COMPARE – режиме ШИМ
    Views: 1129 Во многих системах управления, для формирования управляющих сигналов требуется модуль ШИМ, он позволяет не только формировать импульсы заданной длительности, но и с применением обычного RC фильтра строить простые …
  • Самый простой индикатор уровня звукового сигналаСамый простой индикатор уровня звукового сигнала
    Views: 6322 Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на …
  • Проект с использованием MCC часть 13Проект с использованием MCC часть 13
    Views: 1073 Так как используя MCC мы можем его использовать со своими библиотеками, поэтому настало время и свое создать. Для начала откроем наш заголовочный файл в нем очень много букв: По …
  • ch-светомузыка от теории до реализацииch-светомузыка от теории до реализации
    Views: 700 Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического …
  • Kitchen timer with contactless gesture controlKitchen timer with contactless gesture control
    Views: 653    Кухонний таймер з безконтактним керуванням жестами дозволяє встановити необхідний період часу для приготування страв, не торкаючись пристрою. Дуже зручно під час приготування їжі, коли руки забрудниться. Усі …
  • DIXELL XWEB500D-EVO + RUT900 или как пробить NAT-серверDIXELL XWEB500D-EVO + RUT900 или как пробить NAT-сервер
    Views: 1012 Когда необходимо под какой нибудь контроллер имеющий вэб сервер в инет, то нужен статический IP, что оказалось проблемой при работе с операторами сотовых сетей, конкретно с оператором сети …



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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее

Комментарии

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

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