Jump to content

    
Sign in to follow this  
zorromen

Работа с ENC28J60

Recommended Posts

после того как сделал абсолютно все рекомендации в эррате к 6 ревизии + прикрутил маленький шаманский бубен все работает уже вот 3 недели на подоконнике под постоянными fping'ами (100мс период, 256 байт длина) + время от времени в перекурах кнопаю его web-интерфейс. все шарашит нормально :)

шаманство заключалось в том, что раз в минуту проверяю к-во входящих пакетов (после выполнения последней эрраты редко зависает только прием пакетов). если их нет (а они будут, т к включено это все в офисную сеть с 50+ компутерами) то под зад его софтовым ресетом и все пучком. судя по статистике такое случалось всего 4 раза за 3 недели. клокать мегу от enc (потому ногу reset enc на мегу цеплять запрещаеца :) ). входные пакеты проверять только "полингом".

вот собстна после бессоных ночей только в таком режиме и заработала более-менее.

ну а если за минуту вдруг действительно не было ниодного пакета, то имхо ничего страшного, лишний ресет не помешает :) всеравно в эфире тишина

А у меня все ровно наоборот... нога ресет ENC заведена на мегу,и тактируется мега от собственного кварца и работаю я по прерываниям.

Последний раз к девайсу прикасался месяца 3 назад-ничего не виснет.Что я делаю неправильно?

Share this post


Link to post
Share on other sites
...нога ресет ENC заведена на мегу,и тактируется мега от собственного кварца и работаю я по прерываниям.

Последний раз к девайсу прикасался месяца 3 назад-ничего не виснет.Что я делаю неправильно?

У меня так же - ATMEGA16 с собственным кварцем 16MHz, к ней подведена нога INT и RESET enc28j60. Но через некоторое время EPKTCNT виснет на нуле, т.е. входящих пакетов всегда нет :( WHALE, а у Вас какая ревизия чипа?

Share this post


Link to post
Share on other sites

насчет ревизии-уже не помню.я начинал с ней долбаться в конце 2008 и уже забыл.

если хотите-могу вам отправить свои исходники.Попробуйте из них что-нибудь извлечь.

Share this post


Link to post
Share on other sites
насчет ревизии-уже не помню.я начинал с ней долбаться в конце 2008 и уже забыл.

если хотите-могу вам отправить свои исходники.Попробуйте из них что-нибудь извлечь.

Отправьте, пожалуйста. Почту сейчас в ЛС скину. Заранее благодарю.

Share this post


Link to post
Share on other sites
отправил

Огромное спасибо, WHALE!

По схеме: уже не первый раз замечаю, что CS у ENC подтягивают резистором, а у меня не подтянут. Может быть это влияет отрицательно на ЕНКшку? У меня схема соединения ENC та же (даже все компоненты и их номиналы совпадают с Вашей схемой), за исключением резистора на CS.

Share this post


Link to post
Share on other sites

Попробовал ловить пакеты по прерыванию даже не проверяя EPKTCNT (следовал примеру WHALE, т.к. даже схема соединения ENC почти полностью совпадает), девайс работал еще быстрее, чем без INT, но ENC также продолжал виснуть через несколько минут\часов в основном после простоя :( Пока сделал, как предложил HALFer, рестарт и переинициализацию enc28j60 каждую минуту (только при условии, если EPKTCNT == 0), девайс работает, но это, мягко говоря, не очень хороший вариант. В выходные попробую поставить на CS резистор, но, думаю, толку от этого не будет :(

Share this post


Link to post
Share on other sites

У вас МЕГА работает на 16Mhz.А питаете её от 5V?правильно-ли согласовали уровни с ENC.

У меня,если обратили внимание,Мега висит вместе с ENC на 3,3V и тактируется от 8Мгц.

Share this post


Link to post
Share on other sites
У вас МЕГА работает на 16Mhz.А питаете её от 5V?правильно-ли согласовали уровни с ENC.

У меня,если обратили внимание,Мега висит вместе с ENC на 3,3V и тактируется от 8Мгц.

Мега работает на 16MHz, питание 5В. Уровни согласовал с помощью 74HCT08N (который, кстати, рекомендуется в даташите самого ENC28J60), схему приводил выше, да вроде с этим не должно быть проблем (уровни воспринимаются нормально), хотя на всякий случай я пробовал менять на ходу на другую 74HCT08N (другого производителя) - результат тот же.

Только что выяснилась неприятная особенность: общение с девайсом абсолютно прекращается через некоторое время (т.е. после "зависания"). Как оказалось, не работает даже сброс, в том числе и аппаратный.

Проблем с инициализацией SPI вроде быть не должно (SPCR = (1<<SPE)|(1<<MSTR); SPSR |= (1<<SPI2X);), тем более что нога RESET через некоторое время тоже не воспринимает сигнал :(

Share this post


Link to post
Share on other sites

Что значит "не работает даже сброс"? Вы видите осцилографом,что мега ресетит ENC, и обмен при этом не

возобновляется?Или мега тоже зависает?

Share this post


Link to post
Share on other sites
Что значит "не работает даже сброс"? Вы видите осцилографом,что мега ресетит ENC, и обмен при этом не

возобновляется?Или мега тоже зависает?

Каждую минуту таймер выполняет следующие действия: подается на порт со светодиодом 1 - светодиод горит; выполняется ресет (хардварный) с инициализацией ENC; подается на порт со светодиодом 0 - светодиод не горит. Результаты таймера через некоторое время немного другие: светодиод меняет свое состояние, а ENC не сбрасывается (когда ENC ресетится - это видно даже по светодиоду link`а, который должен погасать на несколько сотен миллисекунд во время сброса). После зависа пакеты ENC принимает (другой светодиод моргает при приеме пакетов), при этом не срабатывает прерывание, не заполняется положительным числом регистр EPKTCNT (который и должен сообщать о приходе пакета). Точно вспомнить не могу, но, если я не ошибаюсь, не помогает даже установка другой ревизии ENC28J60 на ходу. Складывается впечатление, что виснет SPI у ATMEGA.

Edited by kernel

Share this post


Link to post
Share on other sites

я даже не представляю,что надо сделать чтобы повесить мегу-мастера spi.

а установка ревизии ENC на ходу-это как и зачем?Она-же только читается.

вы не пробовали поставить мой протокол инициализации и приема пакетов?

Share this post


Link to post
Share on other sites
Каждую минуту таймер выполняет следующие действия: подается на порт со светодиодом 1 - светодиод горит; выполняется ресет (хардварный) с инициализацией ENC; подается на порт со светодиодом 0 - светодиод не горит. Результаты таймера через некоторое время немного другие: светодиод меняет свое состояние, а ENC не сбрасывается (когда ENC ресетится - это видно даже по светодиоду link`а, который должен погасать на несколько сотен миллисекунд во время сброса). После зависа пакеты ENC принимает (другой светодиод моргает при приеме пакетов), при этом не срабатывает прерывание, не заполняется положительным числом регистр EPKTCNT (который и должен сообщать о приходе пакета). Точно вспомнить не могу, но, если я не ошибаюсь, не помогает даже установка другой ревизии ENC28J60 на ходу. Складывается впечатление, что виснет SPI у ATMEGA.

Очень сомневаюсь, что СПИ может зависнуть. Сам прикручиваю к мегам16-32, 48-88 цветные ЖКИ - там в одном пакете на дисплей идет 96*132*2= 25 тысяч байт, если б хотя бы 1 байт завис - были бы серьезные артефакты. А так все идеально, причем неделями напролет... Ищите косяки в коде, или глюки у ENC

Share this post


Link to post
Share on other sites

подскажите люди знающие.

задача: есть простейший логер, на ATmega168, получает 50 байт по UART и пишет в AT45DB321D.

нужно эти данные (все или вновь добавленные) передать по TCP/IP на комп.

взял ENC28J60H подключил по примеру http://www.tuxgraphics.org/electronics/200...icle06111.shtml

TCP/IP их же. связка заработала.

 

инициатором запроса пересылки данных выступает комп в сети.

 

подскажите как правильно реализовать обмен данными в TCP/IP ?

 

сделал по примеру WEB сервера т.е. на запрос от компа в сети, отвечаю данными по 50 байт - работает.

но если за данными приходится лезть во флешку, а потом отвечать на запрос, то приложение на компе вылетает в TIMEOUT.

 

где почитать про обмен данными ? или как правильно реализовать механизм передачи данных из флеш в комп ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this