Авторизация


...

Кто на сайте?

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

Статистика

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

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

  Адаптер питания

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

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

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

 

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

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

Программаторы и инструменты

20-04-2011 Super User

Программаторы и  инструменты

В прошлой главе мы с Вами создали "прошивку" для нашего проекта "Test_01".  После удачного, безошибочного компилирования нашей программы, в папке с проектом появится "HEX-файл", (можно проверить в свойствах файла время изменения,(сохранения) файла)  - это и есть наша прошивка, которую мы...

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

22-07-2012 Super User

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

Доводчик стёкол автомобиля на PIC-контроллере

22-03-2011 wws63

Доводчик стёкол автомобиля на PIC-контроллере

    В продаже сейчас можно встретить устройства импортного производства, названные фирмами-производителями - « Модули движения стёкол автомобиля в одном направлении». Проще говоря, эти устройства представляют собой автомат поочерёдного подъёма стёкол автомобиля при постановке последнего в режим «охраны».  

Генератор кодов Морзе на микроконтроллере.

26-02-2012 Николай Викторов

Генератор кодов Морзе на микроконтроллере.

   Данный генератор кодов  Морзе предназначен для тренировки радиотелеграфистов ,  радиолюбителей и  для тех ,  кто хочет изучить телеграфную азбуку не прибегая к помощи компьютера . Конструкция имеет небольшое количество  р/элементов , не сложная в изготовлении, не требует какой...


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

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