Авторизация


...

Кто на сайте?

Сейчас 68 гостей и 4 зарегистрированных пользователей на сайте

  • lfandresagea
  • oelletoryk

Статистика

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

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

  LM393

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

Подключение ENC28J60 + PIC к локальной сети Часть II.

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

 

Содержание этой части статьи:

  • Отправка пакетов.
  • Протокол ARP.
  • Протокол IP.
  • Протокол ICMP (Ping).
  • Заключение

1.Отправка пакетов.

Ранее мы рассмотрели различные ПП работы с enc28j60 и остановились на приеме пакетов , т.е. мы приняли пакет и записали его в ОЗУ микроконтроллера  начиная с адреса 0х0100 (часть служебных данных заголовка) и сам пакет начиная с адреса 0х0200. (в дальнейшем могут быть изменения в коде и адрес может быть другой, на данный момент версия проекта 1.3) . В данных заголовка ( для отправки пакета) нам понадобятся только два байта длины пакета.  Для того что бы отправить пакет необходимо сделать следующие:

  1. Проверить готовность передатчика бит TXRTS регистра ECON1.
  2. Если готовности передатчика нет, то  проверить бит ERIF регистра EIR и если он установлен произвести сброс (REZET) передатчика установкой и последующим сбросом по маске бита TXRST регистра ECON1.
  3. Записать в указатели начало и конец  пакета для передачи , регистры ETXST(L,H) и  ETXHD (L,H).
  4. Записать в регистр EWRPT(L,H) начало области буфера enc28j60 , в которую будем записывать пакет.
  5. Определить управляющий байт (для отправки по умалчиванию "0").
  6. Разрешить отправку пакета установкой бита TXRTS регистра ECON1.

Первым записываем управляющий байт , затем сам пакет и в конце будет автоматически  сформировано несколько байт  статуса передачи .(Более подробно в даташите раздел 7.2). В памяти enc28j60 у нас  будет постоянно формироваться только один пакет (можно и по другому), по этому  на данном этапе регистры ETXST и EWRPT соответственно имеют одинаковое значение, но в дальнейшем можно предварительно  прописывать часто повторяющиеся пакеты и по необходимости отправлять их прямо с буфера передатчика.

Рассмотрим ПП отправки пакета реализованной на ассемблере.

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

 

 

 

В регистр EWRPT записываем значение начало буфера передачи 0х2000 (мы всегда будем передавать один пакет). Запись в буфер передатчика  от микроконтроллера будет производиться именно с этого адреса и после передачи байта он автоматически (так у нас установлено в начале) инкрементируется (увеличивается на +1). А вот в регистрах ETXST и  ETXND записываем именно начало и конец передаваемого пакета. Начало у нас 0х2000 , а вот конец пакета высчитывается . В протоколах где необходим ответ в котором  длина пакета не меняется , данные берутся из принятого пакета (в нем есть 2 байта длины пакета) .Далее переходим к передаче в буфер enc28j60 необходимых данных.

 

 


Данные для передачи формируются ПП обработки каждого протокола в отдельности.Мы получает от ПП длину пакета (Reg_1,Reg_2) и данные , которые необходимо нам передать , они находятся в ОЗУ микроконтроллера начиная с адреса 0Х0200 . В начале передается управляющий байт (у нас 0Х00 по умалчиванию). После передачи данных разрешаем отправку пакета. В конце ПП отправки пакетов написан кусок кода для очистке ОЗУ микроконтроллера (по большому нужен для тестирования или в процессе отладки, но лучше его оставить)

 

 

 

Закончив с ПП можно перейти к необходимым нам протоколам.

Наш стек будет выглядеть следующим образом:

Как видно из схемы приняв пакет необходимо определить это IP (08 00)или ARP (08 06)? Если ARP  то переходим в ПП обработки ARP  протокола, иначе в обработку IP пакета и уже там разбираем на ICMP,UDP ...

 

 

 

 

2.Протокол ARP.

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

Prev Next

Установка MPLAB IDE.

23-04-2012 Super User

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

Контроллер доступа на RFID-картах.

18-02-2012 Super User

Контроллер доступа на RFID-картах.

     EM4100 (EM4102, EM-Marin)-формат бесконтактных радиочастотных идентификационных карт компании EM Microelectronic-Marin, одни из самых распространённых в России. Относятся к классу пассивных RFID карт, поскольку не имеют встроенного источника питания. Работает в частотном диапазоне 125 КГц. Имеют уникальный номер длиной 40 бит. Выпускаются в разнообразных...

ПП перекодировки данных .

30-05-2012 Super User

   Данный алгоритм можно применить в подпрограммах  перекодировки, где таблица, записанная в память данных, позволяет сопоставить одному 8-битному числу другое произвольное 8-битное число. Здесь  в примере,  показано как можно произвести  перекодировку десятичного числа  в другое десятичное число.  Первоначально в память программ...

Сравнения двух беззнаковых 16-разрядных чисел

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

Простое сравнения двух беззнаковых 16-разрядных чисел  X и Y. старший байт H, младший байт L   movf    HX,W subwf   HY,W btfss   STATUS,C goto    Xbol     ; результат: X > Y btfss...


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

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