Авторизация


...

Кто на сайте?

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

  • Прохожий2

Статистика

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

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

  106ЛБ1

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

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

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

 

Инициализация enc28j60.

  1. Настраиваем модуль SPI в микроконтроллере .
  2. Настраиваем размер FIFO для приема данных.Регистры ERXST, ERXND
  3. Устанавливаем указатель FIFO , регистр ERXRDPT
  4. Фильтрацию пакетов оставляем по умалчиванию
  5. Очищаем регистр MACON2 .
  6. Устанавливаем MACON1.MARXEN   (разрешить прием данных MAC)
  7. Устанавливаем MACON1.RXPAUS и MACON1.TXPAUS  (аппаратное управление потоком)
  8. Настраиваем биты PADCFG, TXCRCEN в MACON3. (выравниваем пакеты 60 байт, добавляем контрольную сумму).
  9. Настраиваем максимальный  размер фрейма (кадра). Регистр MAMXF
  10. Настраиваем интервал между фреймами .Регистры MABBIPG, MAIPG
  11. Устанавливаем MAC-адрес.Регистры MAADR 0-5.
  12. Включаем бит PHCON2.HDLDIS.
  13. Настраиваем индикацию светодиодов . Регистры PHLCON.
  14. Устанавливаем биты PHCON1.PDPXMD и MACON3.FULDPX (полнодуплексный режим).
  15. Разрешаем прием пакетов.Регистр ECON1_RXEN.

Саму инициализацию мы рассматривать не будем ,  получится слишком много пустой информации , ее можно посмотреть в программе по ссылке в конце статьи.Если возникнут вопросы можно задать на форуме.

Попробуем принять пакет.

В первую очередь после инициализации ENC28J60 мы должны проверить есть ли вообще принятый пакет,если он есть считываем его и обрабатываем . Для этих целей служит регистр EPKTCNT , в нем хранится значение  принятых  пакетов.После прочтения  необходимо уменьшить значение принятых пакетов установкой бита PKTDEC в регистре ECON2 , тем самым освобождая это место для новых пакетов.Все пакеты располагаются в отведенной нами зоне кольцевого буфера.Естественно мы должны знать а по какому адресу в буфера находится необходимый нам пакет.Первоначально мы считываем адрес пакета из регистра ERXRDPT , а после прочтения пакета ,  записываем в него новое значение (адрес следующего пакета ).

Рассмотрим ПП принятия пакета .

В начале проверяем в регистре ERKTCNT наличие пакетов.Регистр находится в первом банке , выбираем первый банк , указываем его адрес (0Х19) , читаем и проверяем наличие принятых пакетов.В случае отсутствия таковых возвращаемся.Если это первый пакет то считываем адрес пакета из регистра ERXRDPT.

 

 

 

Здесь читаем регистр ERXRDPT старший и младший байты , потом записываем эти значения в указатель адреса пакета ERDPT (адрес от куда мы будем забирать пакет).

 

 

 

Принимаем заголовок пакета 8 байт в ОЗУ с адреса 0100H.

 

 

 

Пропускаем первый байт и считываем  из ОЗУ микроконтроллера   адрес следующего пакета  (2,3 байты) и длину принятого пакета 3,4 байты (иначе откуда мы узнаем сколько нужно прочитать байт ?).Флаги (5,6 байты) пока не рассматриваем .Далее принимаем сам пакет и записываем его в ОЗУ микроконтроллера начиная с адреса 0200H.

Записываем адрес следующего пакета.

 

 

 

Результат:

Мы отправили пакет "ping" (обведено красным цветом).

 

 

И получили его в памяти ПИКа (с адреса 0200H).

По адресу 1001h,1002h адрес следующего пакета,1003h,1004h длина текущего пакета,и два байта флаги.

 

 

 

Последние четыре байта  это контрольная сумма .

На этом первая часть статьи закончена.  Отправка пакетов и реализация протоколов будет в следующих статьях.

Ссылки:

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

Данный проект для pic18f46k20 можно скачать здесь 

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

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

Prev Next

ПП записи в Flash память программ.

26-05-2012 Super User

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

Создание компонентов электронных схем в САПР EAGLE.

07-06-2014 Иван Шевченко (R1ZK)

Создание компонентов электронных схем в САПР EAGLE.

   В интернете существует масса описаний создания компонентов электронных схем путём рисования вручную графического обозначения компонента и создания его посадочного места. К примеру: http://easyelectronics.ru/rabota-v-eagle-cad-chast-2.html и http://chipenable.ru/index.php/iar-embedded-workbench/item/190-eagle-cad-sozdanie-komponenta-ch2.html  Скажу честно – довольно утомительный процесс.    

ANDWF

02-02-2012 Super User

ANDWF Поразрядная операция И W и f Синтаксис: [label] ANDWF f,d,a Операнды: 0 <= f <= 255 d Е [0,1] a Е [0,1] Операция: (W).AND.(f)->(dest) Изменяет флаги: Z, N Код: 0001 01da ffff ffff Описание: Логическая операция поразрядного сложения И регистров W и f. Если d=0, тогда результат сохраняется в W регистр, если...

ПП чтения EEPROM памяти данных.

24-05-2012 Super User

Чтение байта данных из EEPROM-памяти  данных. Для чтения байта данных необходимо до вызова ПП записать в регистр EEADR  адрес выбранной  ячейки в EEPROM-памяти  данных. Результат будет сохранен в "W".  


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

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