Авторизация


...

Кто на сайте?

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

Статистика

-Посетители : 23005
-Материалы : 209

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

  PIC18F25K22

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

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

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

 

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

  • Отправка пакетов.
  • Протокол 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

ПП подсчета КС путем 16-битного дополнения суммы всех 16- битных слов.

14-04-2012 Николай Викторов

ПП подсчета КС путем 16-битного дополнения суммы всех 16- битных слов.

  В некоторых приложениях необходимо рассчитать контрольную сумму путем 16-битного дополнения до единицы суммы дополнений до единицы всех 16-битных слов. Такой метод подсчета в основном применяется в протоколах internet , таких как  IP,UDP,TCP. Данная подпрограмма ориентирована на 18 серию...

Стробоскоп для измерения скорости вращения

19-01-2012 Super User

Стробоскоп для измерения скорости вращения

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

Программные таймеры

23-09-2011 Alex

Программные таймеры

  Программные таймеры. Что это, и с чем их "едят" Что такое программный таймер? Это таймер-счётчик, основой которого является системный таймер. Т.е., другими словами, это обычная переменная, считающая переполнения системного таймера. Программному таймеру, как минимум, нужен ещё один бит-флаг, управляющий(указывающий) состоянием(на состояние)...

Устройство бесконтактного управления с использованием карт RFID 125 кг…

14-05-2016 Super User

Устройство бесконтактного управления с использованием карт RFID 125 кгц.  часть2

 Устройство уже было опубликовано  на нашем сайте.  Но после доработки автором  Иван Шевченко (R1ZK) своей конструкции администратором принято решение разместить результат работы  в виде второй части статьи "Устройство бесконтактного управления с использованием карт RFID 125 кгц.". Первую часть можно прочитать перейдя по...


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

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