|
|
  |
Работа с ENC28J60 |
|
|
|
May 18 2007, 15:32
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(zltigo @ May 18 2007, 09:44)  Ну нету там такого безобразия  . Вообще, польза от синхронности работы хоста и ENC28J60 сомнительна, поскольку синфазность для SPI и тактовой по любому не гарантируется. Это как нет? ENC28J60 Rev. B1 Silicon Errata первым пунктом: 1. Module: MAC Interface When the SPI clock from the host microcontroller is run at frequencies of less than 8 MHz, reading or writing to the MAC registers may be unreliable. Work around Run SPI at frequencies of at least 8 MHz, or use the same clock source for both ENC28J60 and the host controller for synchronization. И пунктов аж 14...
|
|
|
|
|
May 18 2007, 17:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(goodwin @ May 18 2007, 18:32)  Это как нет? ENC28J60 Rev. B1 Silicon Errata B1 силикон давно уже почил в бозе. Они где-то за считанные месяцы докатились до B5. Errata следует обновить  . В последних исходниках уже встретилось упонинание B6.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 27 2007, 12:38
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Люди, а здесь есть кто для приема пакетов пользует прерывание, а не полинг флага PKTIF в регистре EIR? Вопрос в следующем -- вы используете прерывание только этого флага или обрабатываете еще и другие флаги? Я что-то поленился прописывать обработчики TXIRIF и RXERIF (биты TXIRIE и RXERIE не подняты). Наверно, зря. Вобщем-то, мой девайс (mega8 + ENC28J60) работает. И вроде как даже работает длительное время. Как минимум час-два, больше -- не проверял. Но, вот, сегодня я обнаружил один очень неприятный ньюанс: если девайсу слать что-нибудь по UDP и одновременно пингачить его, то ENC-ишка впадает в ступор. Нагрузка, вроде какбы, не серьезная: UDP -- 60 байт, которые никак не обрабатываются (я уже все поотрубал нахрен! Ничего не осталось!), посылаются примерно 30 раз в секунду; и ICMP -- стандартные 42 байта (из-под Винды, гы-гы! Опять Билл Гейтс виноват!), которые хреначатся раз в секунду. При такой "нагрузке" девайс работает примерно 1-2 иногда 3 секунды (когда как) и перестает выставлять прерывания. Микроконтроллер, я убедился -- не виснет. Что-то я не особо догоняю, что делать-то? С одной стороны, совсем не хочется писать расшифровщик прерывании ENC и как-то обрабатывать ошибки (я даже еще не смотрел что там делать-то надо в таких случаях), а с другой -- не соображу, как можно еще вернуть ENC к работе. Посоветуйте че-нить... Хех! А то, молчание какое-то тут подозрительное нависло. То-ли стругают, понимаш-ли, каждый свой девайс и думают, что выйдут на рынок раньше других и сделают супер-пупер-бизнес, то-ли ENC-сишками вообще мало-кто занимается. Ау, эмбеддеры!
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Jun 27 2007, 16:11
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(MSprut @ Jun 27 2007, 16:41)  последовательный интерфейс пропускную способность режет. Ну не очень, ибо малые контроллеры по любому 10Bit в других местах порежут  Цитата но я бы советовал перейти на CP2200 от SiLabs. Вещ рульная, параллельный интерфейс, все четко и понятно, обвески минимум 1. Параллельны интерфейс с его дополнительными 16 проводами не есть абсолютный рулез 2. Жестко заданные буфера в 2 и 4K не позволяют радоваться производительности, если только все ресурсы контроллера на обслуживание не бросить. У ENC буфер по крайней мере 8K и его можно делить между приемом и передачей в зависимости от задач. Обвеска практически одинакова, ну а жрать - это точно много жрет. Цитата(zhevak @ Jun 27 2007, 15:38)  Люди, а здесь есть кто для приема пакетов пользует прерывание, а не полинг флага PKTIF в регистре EIR? Вопрос в следующем -- вы используете прерывание только этого флага или обрабатываете еще и другие флаги? Я использую только прерывание по приему. По передаче оно бессмысленно без наличия возможности буферизации в контроллере. Ошибки обрабатываются постфактум в процессе приема/передачи. Работает. Цитата ... и как-то обрабатывать ошибки (я даже еще не смотрел что там делать-то надо в таких случаях) А нету у Microchip НИЧЕГО про обработку ошибок
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 29 2007, 11:36
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Все, нафиг!
Забил я на "игру" с флагами разрешения прерываний в регистре INTIE в ENC. Какая-то это темная вещь, то работает, то не работает. Непонятно. Короче, тут бубен нужен. Диаметром 80 см, как минимум. У кого-нибудь, кстати, есть такой девайс? Я, правда, подозреваю, что такое безобразие происходит из-за того что тактовая частота SPI-клоков у меня всего, 3.6 МГц. Может это действительно как-то влияет на ENC-шные мозги? Ведь не зря оне в еррате пишут, что либо >= 8 МГЦ, либо синхронно с ENC-генератором.
Вобщем, сейчас я махаю только флагом внешнего прерывания у меги (регистр GICR) -- разрешить/запретить. Гибкость, конечно же потерялась, но все заработало стабильно. Ху-у!
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Jun 29 2007, 11:55
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(zhevak @ Jun 29 2007, 14:36)  Забил я на "игру" с флагами разрешения прерываний в регистре INTIE в ENC. Какая-то это темная вещь, то работает, то не работает. А какого ими вообще 'махать'. Чую, что в системе спроектированной с необходимостью 'махать' и своих проблем достаточно. Цитата Я, правда, подозреваю, что такое безобразие происходит из-за того что тактовая частота SPI-клоков у меня всего, 3.6 МГц. Может это действительно как-то влияет на ENC-шные мозги? Ведь не зря оне в еррате пишут, что либо >= 8 МГЦ, либо синхронно с ENC-генератором. Это для старых B0-B4 а у Вас какой силикон? Причем описанные проблемы относятся далеко не только к регистру прерываний а ко всем.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 29 2007, 13:23
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(zltigo @ Jun 29 2007, 17:55)  А какого ими вообще 'махать'. Чую, что в системе спроектированной с необходимостью 'махать' и своих проблем достаточно. ну-у... типа хватает.  Нужно исполнять парраллельно несколько мелких задач. Цитата Это для старых B0-B4 а у Вас какой силикон? Причем описанные проблемы относятся далеко не только к регистру прерываний а ко всем. ахренегознает! Что принесли, положили на стол, то и спаял. ERVID возвращает 0х02, а физики -- PHID1 и PHID1 -- вообще какую-то чушь гонят. Сверху на корпусе написано 053044Е. Что за код такой -- traceability (44Е)? Только не надо советовать -- купить нормального таракана. Сам типа знаю. Ты лучше скажи, как в магазине узнать ревизию чипа узнать по трейсэбылыти?
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Jun 29 2007, 13:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(zhevak @ Jun 29 2007, 16:23)  ахренегознает! Что принесли, положили на стол, то и спаял. ERVID возвращает 0х02 Лучше это изделие 2005 года положить в мусорник и припаять тот, который 0х05 возвращает. Проблема только в том, что ~@#$! Микрочип не маркирует ревизию на корпусе. Мне вот тоже приволокли откуда-то партию B4 начала 2006 года. Одно могу сказать, что где-то с 35 недели 2006 года идут B5.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|