|
|
  |
Работа с ENC28J60 |
|
|
|
Nov 30 2009, 07:35
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(HALFer @ Nov 30 2009, 01:33)  после того как сделал абсолютно все рекомендации в эррате к 6 ревизии + прикрутил маленький шаманский бубен все работает уже вот 3 недели на подоконнике под постоянными fping'ами (100мс период, 256 байт длина) + время от времени в перекурах кнопаю его web-интерфейс. все шарашит нормально  шаманство заключалось в том, что раз в минуту проверяю к-во входящих пакетов (после выполнения последней эрраты редко зависает только прием пакетов). если их нет (а они будут, т к включено это все в офисную сеть с 50+ компутерами) то под зад его софтовым ресетом и все пучком. судя по статистике такое случалось всего 4 раза за 3 недели. клокать мегу от enc (потому ногу reset enc на мегу цеплять запрещаеца  ). входные пакеты проверять только "полингом". вот собстна после бессоных ночей только в таком режиме и заработала более-менее. ну а если за минуту вдруг действительно не было ниодного пакета, то имхо ничего страшного, лишний ресет не помешает  всеравно в эфире тишина А у меня все ровно наоборот... нога ресет ENC заведена на мегу,и тактируется мега от собственного кварца и работаю я по прерываниям. Последний раз к девайсу прикасался месяца 3 назад-ничего не виснет.Что я делаю неправильно?
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Nov 30 2009, 09:03
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата(WHALE @ Nov 30 2009, 14:35)  ...нога ресет ENC заведена на мегу,и тактируется мега от собственного кварца и работаю я по прерываниям. Последний раз к девайсу прикасался месяца 3 назад-ничего не виснет.Что я делаю неправильно? У меня так же - ATMEGA16 с собственным кварцем 16MHz, к ней подведена нога INT и RESET enc28j60. Но через некоторое время EPKTCNT виснет на нуле, т.е. входящих пакетов всегда нет WHALE, а у Вас какая ревизия чипа?
|
|
|
|
|
Nov 30 2009, 09:14
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата насчет ревизии-уже не помню.я начинал с ней долбаться в конце 2008 и уже забыл. если хотите-могу вам отправить свои исходники.Попробуйте из них что-нибудь извлечь. Отправьте, пожалуйста. Почту сейчас в ЛС скину. Заранее благодарю.
|
|
|
|
|
Nov 30 2009, 09:37
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата отправил Огромное спасибо, WHALE! По схеме: уже не первый раз замечаю, что CS у ENC подтягивают резистором, а у меня не подтянут. Может быть это влияет отрицательно на ЕНКшку? У меня схема соединения ENC та же (даже все компоненты и их номиналы совпадают с Вашей схемой), за исключением резистора на CS.
|
|
|
|
|
Dec 2 2009, 12:19
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Попробовал ловить пакеты по прерыванию даже не проверяя EPKTCNT (следовал примеру WHALE, т.к. даже схема соединения ENC почти полностью совпадает), девайс работал еще быстрее, чем без INT, но ENC также продолжал виснуть через несколько минут\часов в основном после простоя  Пока сделал, как предложил HALFer, рестарт и переинициализацию enc28j60 каждую минуту (только при условии, если EPKTCNT == 0), девайс работает, но это, мягко говоря, не очень хороший вариант. В выходные попробую поставить на CS резистор, но, думаю, толку от этого не будет
|
|
|
|
|
Dec 2 2009, 15:21
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата(WHALE @ Dec 2 2009, 20:46)  У вас МЕГА работает на 16Mhz.А питаете её от 5V?правильно-ли согласовали уровни с ENC. У меня,если обратили внимание,Мега висит вместе с ENC на 3,3V и тактируется от 8Мгц. Мега работает на 16MHz, питание 5В. Уровни согласовал с помощью 74HCT08N (который, кстати, рекомендуется в даташите самого ENC28J60), схему приводил выше, да вроде с этим не должно быть проблем (уровни воспринимаются нормально), хотя на всякий случай я пробовал менять на ходу на другую 74HCT08N (другого производителя) - результат тот же. Только что выяснилась неприятная особенность: общение с девайсом абсолютно прекращается через некоторое время (т.е. после "зависания"). Как оказалось, не работает даже сброс, в том числе и аппаратный. Проблем с инициализацией SPI вроде быть не должно (SPCR = (1<<SPE)|(1<<MSTR); SPSR |= (1<<SPI2X)  , тем более что нога RESET через некоторое время тоже не воспринимает сигнал
|
|
|
|
|
Dec 2 2009, 17:26
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата(WHALE @ Dec 2 2009, 23:49)  Что значит "не работает даже сброс"? Вы видите осцилографом,что мега ресетит ENC, и обмен при этом не возобновляется?Или мега тоже зависает? Каждую минуту таймер выполняет следующие действия: подается на порт со светодиодом 1 - светодиод горит; выполняется ресет (хардварный) с инициализацией ENC; подается на порт со светодиодом 0 - светодиод не горит. Результаты таймера через некоторое время немного другие: светодиод меняет свое состояние, а ENC не сбрасывается (когда ENC ресетится - это видно даже по светодиоду link`а, который должен погасать на несколько сотен миллисекунд во время сброса). После зависа пакеты ENC принимает (другой светодиод моргает при приеме пакетов), при этом не срабатывает прерывание, не заполняется положительным числом регистр EPKTCNT (который и должен сообщать о приходе пакета). Точно вспомнить не могу, но, если я не ошибаюсь, не помогает даже установка другой ревизии ENC28J60 на ходу. Складывается впечатление, что виснет SPI у ATMEGA.
Сообщение отредактировал kernel - Dec 2 2009, 17:27
|
|
|
|
|
Dec 2 2009, 19:27
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 24-06-09
Из: Беларусь
Пользователь №: 50 607

|
Цитата(kernel @ Dec 2 2009, 20:26)  Каждую минуту таймер выполняет следующие действия: подается на порт со светодиодом 1 - светодиод горит; выполняется ресет (хардварный) с инициализацией ENC; подается на порт со светодиодом 0 - светодиод не горит. Результаты таймера через некоторое время немного другие: светодиод меняет свое состояние, а ENC не сбрасывается (когда ENC ресетится - это видно даже по светодиоду link`а, который должен погасать на несколько сотен миллисекунд во время сброса). После зависа пакеты ENC принимает (другой светодиод моргает при приеме пакетов), при этом не срабатывает прерывание, не заполняется положительным числом регистр EPKTCNT (который и должен сообщать о приходе пакета). Точно вспомнить не могу, но, если я не ошибаюсь, не помогает даже установка другой ревизии ENC28J60 на ходу. Складывается впечатление, что виснет SPI у ATMEGA. Очень сомневаюсь, что СПИ может зависнуть. Сам прикручиваю к мегам16-32, 48-88 цветные ЖКИ - там в одном пакете на дисплей идет 96*132*2= 25 тысяч байт, если б хотя бы 1 байт завис - были бы серьезные артефакты. А так все идеально, причем неделями напролет... Ищите косяки в коде, или глюки у ENC
|
|
|
|
|
Dec 3 2009, 14:15
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832

|
подскажите люди знающие. задача: есть простейший логер, на ATmega168, получает 50 байт по UART и пишет в AT45DB321D. нужно эти данные (все или вновь добавленные) передать по TCP/IP на комп. взял ENC28J60H подключил по примеру http://www.tuxgraphics.org/electronics/200...icle06111.shtmlTCP/IP их же. связка заработала. инициатором запроса пересылки данных выступает комп в сети. подскажите как правильно реализовать обмен данными в TCP/IP ? сделал по примеру WEB сервера т.е. на запрос от компа в сети, отвечаю данными по 50 байт - работает. но если за данными приходится лезть во флешку, а потом отвечать на запрос, то приложение на компе вылетает в TIMEOUT. где почитать про обмен данными ? или как правильно реализовать механизм передачи данных из флеш в комп ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|