Авторизация


...

Кто на сайте?

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

Статистика

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

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

  LUKEY-936D

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

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

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

 

Инициализация 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

Программная реализация BAM (Binary Angle Modulation).

25-04-2013 Александр Беглецов

Программная реализация BAM (Binary Angle Modulation).

   В данной статье рассмотрен алгоритм BAM «двоичного управления положением бита»   который во многих случаях может заменить общеизвестный ШИМ (PWM), задействуя при этом значительно меньше процессорной мощности.          

Управление ИК 5 каналов.

03-01-2012 Tamerlan

Управление ИК 5 каналов.

PIC12F675 Передатчик и приёмник ИК канал код RC5. Одно нажатие кнопки включает выход, второе нажатие выключает. По деталям транзистор можно использовать кт3102 ( я нашёл смд неизвестного происхождения работает), фотоприёмник какой был в магазине, он идёт со встроенным усилителем.В прошивке...

ПДУ для активации сервисного режима телевизоров JVC

09-05-2011 Super User

ПДУ для активации сервисного режима телевизоров JVC

У одного из авторов этой статьи, после устранения неисправностей в телевизоре C-21ZE (шасси MZ2) фирмы JVC, возникла необходимость отрегулировать баланс белого. Штатный пульт RM-C462 был давно утерян и владельцы пользовались универсальным пультом MAK (MAXIM) польского производства. В техническом описании («мануале») этого...

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

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

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

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


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

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