Авторизация


...

Кто на сайте?

Сейчас 73 гостей и один зарегистрированный пользователь на сайте

  • orroughalis

Статистика

-Посетители : 25313
-Материалы : 210

Пользователь сайта продает...

  PIC18F25K22

Пользователь сайта покупает...

Подключение ENC28J60 + PIC к локальной сети ЧАСТЬ III

Автор: Николай Викторов Просмотров: 4639

 

 

Я не ставил целью сделать полноценное устройство и хотел показать алгоритм работы и пример на асм.  Тем не менее устройство работает и работает стабильно. Код открытый , по этому  кому будет интересно может доработать устройство под свои задачи.

     Сам по себе UDP протокол , является не надежным , он отправляет сообщения без подтверждения  и что оно дошло до адресата нет ни какой гарантии.  Но это во первых не всегда и нужно , во вторых не требует предварительного соединения , а в третьих можно реализовать обмен программно , как и сделано   в этом устройстве. При получении UDP пакета микроконтроллер в ответ передает  сообщение о не правильном запросе (команда с ошибкой ) или сообщит состояние  порта «D» , при условии правильно указанного пароля , который вводится перед каждой командой . Если пароль введен не правильно от устройства не придет ни какого ответа, т.к. он посчитает этот пакет «ложным».

Протокол описывать нет смысла в интернете достаточно информации , начнем с программное реализации.

   В этом примере реализован UDP server (он отвечает на запросы) . Хочу напомнить , что каждый принятый пакет в конечном итоге располагается в ОЗУ микроконтроллера , начиная с адреса 0200h . При получении пакета от ПК микроконтроллер анализирует что за протокол , если это UDP то переходим к его обработке.

 

alt

 

 

          Не каждый протокол UDP обрабатывается , а только тот , который приходит на определенный порт . Еще иногда говорят: «Программа слушает такой то порт» … Здесь так же , мы будем «слушать» только порт  1422 . Выбрал просто так  , при желании можно поменять на любой другой. Ниже как это реализовано:

 

alt

           Теперь  нам  стало  понятно   что это пакет ,  предназначенный для нас  , но перед тем как его обрабатывать необходимо проверить его на ошибки .Для этого нужно подсчитать контрольную сумму  пакета и в случае совпадения с контрольной суммой указанной в самом пакете переходим к обработке .        ( ПП       call       Prov_paketa ; )  Для начала проверяем пароль , я указал 1234 .(соответственно можно изменить на любой 4-ч значный).

 

alt

 

 

            При любом не правильном значении поднимаем флаг Flag_ch,1 сигнализирующий о не правильности пароля . При выходе из ПП  пакет «сбрасывается»  и дальше не обрабатывается  , ответ на ПК не приходит. Если пароль правильный переходим к анализу  полученной команды. Алгоритм  «расшифровки» команды такой же , только проверяем не все слова,  а всего два знака  в слове выключить и включить проверяем на соответствие вторые знаки , следующий  знак в команде это номер нагрузки  №2.  Вот так выглядит команда на включение 2-й нагрузки -1234 включить №2 , после получения  которой мы формируем один из двух ответов. Если  команда  расшифрована и выполнена , то ПК получит следующий вот такой ответ :

 

alt

 

 

          Можно просто ввести пароль и отправить сообщение (в нашем случае 1234)  , в ответ получим то же такое сообщение , что дает нам возможность проверки состояние  порта.  Если команда  передана не правильно (с ошибкой ) то она не будет выполнена , если  не верно указан пароль получим  ответ :  « Не правильный запрос» . Как формируется сам ответ можно посмотреть в программе , ни чего сложного нет , остановимся на том , как собрать все это в пакет UDP и отправить на ПК.  Вот так выглядит UDP пакет , выделенная область это наш текстовый ответ о состоянии порта.

 

alt

 

 

     Пакет  ограничен 255 байтами  - это достаточно для ответа, (можно увеличить , доработав немного программный код) . Ответ записываем в ОЗУ начиная с адреса 0x022E, по окончании записи для расчета длины пакета считывается адрес последнего записанного знака из регистра FSR0L . На основании полученных данных рассчитываются  количество байт для расчета контрольной суммы, количество байт для отправки , записи длины IP пакета и длины самого UDP пакета.  Данные длины записываются в пакет , рассчитывается контрольная сумма  и отправляем пакет адресату.  При необходимости изменения текстовых сообщений (ответов ) следует учитывать ограничение  - не более 210 знаков . После выполнения команды состояние порта записывается в EEPROM , что дает возможность запоминать состояние включенных / выключенных нагрузок при пропадании питания. При повторении конструкции необходимо указать IP адрес из диапазона вашей сети . По умалчиванию прописан 192.168.1.4

  В следующей статье мы рассмотрим реализацию на asm протокола TCP и будем  управлять этими же нагрузками по WEB интерфейсу  при помощи стандартного браузера.

Ссылки:

Задать вопросы можно на форуме.

Скачать программу, прошивку, проект MPLAB asm.   

Ссылка для скачивания доступна только авторизованным пользователям сайта !

Случайные статьи....

Prev Next

ПП перекодировки шрифта для вывода русских символов на ЖК индикатор…

04-06-2012 Super User

 Вывод русского текста в ЖК индикатор  (контроллера HD44780) имеет ряд особенностей,  в связи с тем, что коды русского шрифта ASCII, не соответствует таблице символов прошитых в ЖК дисплее,  до передачи в ЖКИ  кода символа его необходимо перекодировать. Здесь показан один из...

Термометр с выводом показаний на экран телевизора

12-08-2011 Николай Викторов

Термометр с выводом показаний на экран телевизора

Для тех  кто смотрит телевизор со спутника пригодится , на мой взгляд , интересная конструкция на микроконтроллере PIC18F25K20. Она интересна тем , что выводит температуру с двух датчиков DS18B20 на проходящий видеосигнал (PAL) в виде бегущей строки (сама температура отображается...

Тактовый генератор.

22-07-2012 Super User

В даташитах на микроконтроллеры очень подробно расписаны режимы работы генератора. Здесь мы рассмотрим общий метод настройки тактового генератора микроконтроллеров серии PIC18XXXX .  Микроконтроллеры PIC18FXX2 может работать в восьми режимах.

Доработка логического анализатора цифровых сигналов LOGIC-U

11-09-2011 Александр Милевский

Доработка логического анализатора цифровых сигналов LOGIC-U

После приобретения  LOGIC-U и попытки с ним работать, была замечена масса  неудобств. Предлагаемый набор надо постоянно собирать, переключать джамперы, а тонкие  провода анализатора часто обрываются.Также неудобно пользоваться целой связкой этих проводов, хотя нужно порой только 2 - 4 из них....


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru