Авторизация


...

Кто на сайте?

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

Статистика

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

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

  Плата питания

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

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

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

 

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

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

Программирование c нуля в AVRStudio 5 (ч.10)

14-10-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.10)

  ШИМ – это широтно-импульсная модуляция, или PWM — Pulse Width Modulation метод, позволяющий из цифровых импульсов получить аналоговый сигнал, а так-же один из способов регулирования мощности в нагрузке. Предположим, что у нас, есть генератор прямоугольных импульсов с постоянной амплитудой...

Особенности преобразования двоичного числа в двоично-десятичный код ме…

01-07-2011 Игорь Безверхний

Особенности преобразования двоичного числа в двоично-десятичный код методом левого сдвига

Двоично-десятичный код используется, как правило, в устройствах ввода-вывода для организации удобного для пользователя способа обмена информации с цифровым устройством, и в первую очередь, в узлах (модулях) индикации. Один весьма известный, в узком кругу, специалист написал в учебных целях статью с 42...

Сигнализатор превышения заданной скорости автомобиля

14-06-2011 wws63

Сигнализатор превышения заданной скорости автомобиля

Cигнализатор предназначен для подачи светозвуковой сигнализации в случае превышения заданной пользователем скорости автомобиля и позволяет оперативно, с помощью нажатия сервисной кнопки, настраивать этот порог срабатывания сигнализации. Устройство может быть установлено на любые автомобили с датчиками скорости, способными выдать от 1,5...

GSM - сигнализация

18-03-2012 Владимир

GSM - сигнализация

  Добрый день!  Представляю вам свою разработку – GSM сигнализацию. Кому-то, наверное, интересно, что послужило мотивацией для создания этого проекта? Все просто, потребность друга в сигнализации для охраны своего офиса, которая будет дешевле других аналогичных устройств и весьма функциональна, а главное -...


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

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