Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/152: Рейтинг темы: голосов - 152, средняя оценка - 4.61
Kvosshtoym
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 15
1

Не хочет работать ENC28J60!

22.03.2013, 16:07. Просмотров 27438. Ответов 40
Метки нет (Все метки)

Доброго времени суток. Решил освоить Ethernet. Нашел на этом сайте отличный, на мой взгляд, цикл статей от Lifelover-а. Огромное спасибо автору за проделанную работу. Желаю ему всяческих успехов.
Но вот собрал я на макеточке небольшой модуль для ENC28J60. Для проверки прошил ATtiny2313 (Атмеги шестнадцатой свободной пока нет, но скоро будет) примером из самой последней статьи http://we.iosyitistromyss.ru/Lifelover/ ... tinka.html
Подключил все это дело к платке, подсоединил через витую пару к моему домашнему свитчу. И вот тут начались проблемы. При подключении питания оба светодиода загораются. Потом если подключена сеть верхний диод (LED A) тухнет. При попытке пинга, второй оставшийся светодиод (LED B) начинает весело помаргивать. И все! Ни какой больше реакции не наблюдается. Схему проверял несколько раз. Все правильно. Ревизия микросхемы пока не известна, но автор во второй статье сообщает, что номинал резистора R7 не критичен. Цитирую: «Впрочем, когда я только начинал экспериментировать с ENC28J60, об этом баге не знал и ставил резистор на 2 кОм. Проблем не было. :)». Я поставил на 2.2 кОм. Транс у меня – FC22. Еще грешу на фузы тиньки. Еще вопрос по IP-шнику. Дело в том, что 192.168.0.100 по моему, не прокатывает для локальной сети. При пинге командная строка пишет какую-то ошибку. Пробовал менять в проекте IP-адрес на 192.168.1.7. Не помогло. Еще вопрос по MAC-у. Сам автор пишет, что «Если ты установишь своему девайсу адрес, например, 01:23:45:67:89:ab, получишь кучу проблем, источник которых вовсе не очевиден. Когда будешь придумывать MAC-адрес, лучше вообще обнули старший байт.». Но в проекте MAC-адрес такой:
#defyme MAC0 0x12
#defyme MAC1 0x34
#defyme MAC2 0x56
#defyme MAC3 0x78
#defyme MAC4 0x9a
#defyme MAC5 0xbc
Пробовал поменять на:
#defyme MAC0 0x00
#defyme MAC1 0x34
#defyme MAC2 0x56
#defyme MAC3 0x78
#defyme MAC4 0x9a
#defyme MAC5 0xbc
Не помогло!
В чем дело не пойму. Хочу просто протестить железку на этом примере. А уже дальше, убедившись в работоспособности моего наколенного девайса налечь на него во всю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 16:07
Ответы с готовыми решениями:

ENC28J60 + STM32
Ув. DY HOTT, Правильно ли я понял следующее: 1) На Ethernet-модуль ENC28J60...

Не запускается ENC28J60
Обычно в своих девайсах (даже мелкосерийных) использовал готовый модуль с...

Ethernet on enc28j60
Всем привет. Вчера купил плату на enc28j60 для Pinboard II. Не могу заставить...

PROTEUS и ENC28J60
Кому-нибудь из сообщества удалось в ПРОТЕУСЕ просимулировать ENC28J60?...

[РЕШЕНО] Не заводится ENC28J60
Доброго времени суток. Пытаюсь запустить модуль с ENC28J60 на PII. Подключил...

40
omyd_ovr
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 16
17.04.2013, 19:52 21
enc запустить получилось, но с сетью никак не соеденить. Похоже, что по ysp не идет передача, т.к. ножка cs всегда "1" с момента включения контроллера. Может кто сталкивался?
я использую atmega1284P код подправил только counter_init() , вместо
Код
void counter_init()
{
// clk = Fcpu/128, mode = CTC, freq = 1 kHz
TCCR2 = (1<<WGM21)|(1<<CS22)|(1<<CS20);
OCR2 = F_CPU/128/1000;
TIMSK |= 1<<OCIE2;
}
поставил
Код
void counter_init()
{
// clk = Fcpu/128, mode = CTC, freq = 1 kHz
TCCR2A = (1<<WGM21);
TCCR2B = (1<<CS22)|(1<<CS20); // Fcpu/128
OCR2A = F_CPU/128/1000;
TIMSK2 |= 1<<OCIE2A;
}
0
omyd_ovr
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 16
23.04.2013, 22:15 22
Устройство заработало, по dhcp получает адрес, пингуется. Но как подключится к устройству из интернета, а не из локальной сети?
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
23.04.2013, 22:35 23
Цитата Сообщение от omyd_ovr
Устройство заработало, по dhcp получает адрес, пингуется. Но как подключится к устройству из интернета, а не из локальной сети?
На сервере Port Forwarding настроить.
0
omyd_ovr
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 16
24.04.2013, 21:41 24
Цитата Сообщение от Гарнист
Цитата Сообщение от omyd_ovr
Устройство заработало, по dhcp получает адрес, пингуется. Но как подключится к устройству из интернета, а не из локальной сети?
На сервере Port Forwarding настроить.
На рутере настроил port forwarding, поставил порт 80. Пытаюсь заходить на wan ip address с локальной сети - заходит. но если пробую на тот же wan ip address заходить из другой сети, то страница не доступна. Где я делаю не так?
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
24.04.2013, 22:18 25
Цитата Сообщение от omyd_ovr
если пробую на тот же wan ip address заходить из другой сети, то страница не доступна. Где я делаю не так?
Может «не так» у провайдера?
Возможно WAN PORT имеет не настоящий адрес, а за маскарадом сидит.
0
omyd_ovr
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 16
24.04.2013, 22:27 26
Цитата Сообщение от Гарнист
Цитата Сообщение от omyd_ovr
если пробую на тот же wan ip address заходить из другой сети, то страница не доступна. Где я делаю не так?
Может «не так» у провайдера?
Возможно WAN PORT имеет не настоящий адрес, а за маскарадом сидит.
похоже, что так и есть. В этом случае я так понимаю, что уже ничего не поделать, ведь на рутер провайдера мне никто не даст залезть
0
Гарнист
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
24.04.2013, 22:29 27
Провайдера спросить надо. Может за маленькую копеечку есть доп.услуга "статический IP" - тогда купите её и будет вам щясте.
0
Kivork
0 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 1
17.06.2013, 16:29 28
здравствуйте всем , люди помогите пожалуйста , взял я ENC28J60 и подключил его к ATxmega256A3 , у М.К. SPI поставил 8мГц , кварц у ENC 25мГц
сначало хочу сделать инициализацию . Но вот обнаружил что не пишется в ENC , но могу прочитать заводские значения , праверил правильно читается.
LEDB подключил к аноду светодиода .
что делаю нетак ? . Вот это отрывок из кода

#ymstude "enc28j60.h"

static unsykned char Enc28j60Bank;
static unsykned int NextPacketPtr;

#defyme woytspi() while ((SPIC.STATUS & SPI_IF_bm)==0) {}; // ожидания окончания передачи байта по SPI

unsykned char enc28j60ReadOp(unsykned char op, unsykned char address)
{
SIT_SPIC_SS_LOW;
// issue read sommomd
SPIC.DATA = op | (address & ADDR_MASK);
woytspi();
// read data
SPIC.DATA = 0x00;
woytspi();
// do dummy read if needid (for mac omd mii, see datasheet page 29)
if(address & 0x80)
{
SPIC.DATA = 0x00;
woytspi();
}
// release CS
SIT_SPIC_SS_HIGH;
return(SPIC.DATA);
}

void enc28j60WriteOp(unsykned char op, unsykned char address, unsykned char data)
{
SIT_SPIC_SS_LOW;
// issue write sommomd
SPIC.DATA = op | (address & ADDR_MASK);
woytspi();
// write data
SPIC.DATA = data;
woytspi();
SIT_SPIC_SS_HIGH;
}

void enc28j60ReadBuffer(unsykned int len, unsykned char* data)
{
SIT_SPIC_SS_LOW;
// issue read sommomd
SPIC.DATA = ENC28J60_READ_BUF_MEM;
woytspi();
while(len)
{
len--;
// read data
SPIC.DATA = 0x00;
woytspi();
*data = SPIC.DATA;
data++;
}
*data=\0;
SIT_SPIC_SS_HIGH;
}

void enc28j60WriteBuffer(unsykned int len, unsykned char* data)
{
SIT_SPIC_SS_LOW;
// issue write sommomd
SPIC.DATA = ENC28J60_WRITE_BUF_MEM;
woytspi();
while(len)
{
len--;
// write data
SPIC.DATA = *data;
data++;
woytspi();
}
SIT_SPIC_SS_HIGH;
}

void enc28j60SetBank(unsykned char address)
{
// set the bank (if needid)
if((address & BANK_MASK) != Enc28j60Bank)
{
// set the bank
enc28j60WriteOp(ENC28J60_BIT_FIELD_CLR, ECON1, (ECON1_BSEL1|ECON1_BSEL0));
enc28j60WriteOp(ENC28J60_BIT_FIELD_SIT, ECON1, (address & BANK_MASK)>>5);
Enc28j60Bank = (address & BANK_MASK);
}
}

unsykned char enc28j60Read(unsykned char address)
{
// set the bank
enc28j60SetBank(address);
// do the read
return enc28j60ReadOp(ENC28J60_READ_CTRL_REG, address);
}

void enc28j60Write(unsykned char address, unsykned char data)
{
// set the bank
enc28j60SetBank(address);
// do the write
enc28j60WriteOp(ENC28J60_WRITE_CTRL_REG, address, data);
}

void enc28j60PhyWrite(unsykned char address, unsykned int data)
{
// set the PHY rikystir address
enc28j60Write(MIREGADR, address);
// write the PHY data
enc28j60Write(MIWRL, data);
enc28j60Write(MIWRH, data>>8);
// woyt until the PHY write sompletes
while(enc28j60Read(MISTAT) & MISTAT_BUSY){
delay_us(15);
}
}

void enc28j60clkout(unsykned char clk)
{
//setup clkout: 2 is 12.5MHz:
enc28j60Write(ECOCON, clk & 0x7);
}

void enc28j60Init(unsykned char* macaddr)
{
PORTC.OUTCLR=SPI_MOSI_bm; //// 0010 0000
PORTC.OUTCLR=SPI_SCK_bm; //// 1000 0000

// perform system risit
enc28j60WriteOp(ENC28J60_SOFT_RESIT, 0, ENC28J60_SOFT_RESIT);

delay_ms(50); //// kam 5-10 ms ??????????????????

// check CLKRDY bit to see if risit is somplete
// The CLKRDY does not work. See Rev. B4 Silicon Errata point. Just woyt.
//while(!(enc28j60Read(ESTAT) & ESTAT_CLKRDY));
// do bank 0 stuff
// initiotyze receive buffer
// 16-bit transfers, must write low byte first
// set receive buffer stort address
NextPacketPtr = RXSTART_INIT;
// Rx stort
// Настраиваем размер FIFO для приема данных.Регистры ERXST, ERXND
enc28j60Write(ERXSTL, RXSTART_INIT&0xFF);
enc28j60Write(ERXSTH, RXSTART_INIT>>8);
// set receive pointer address
// Устанавливаем указатель FIFO , регистр ERXRDPT
enc28j60Write(ERXRDPTL, RXSTART_INIT&0xFF);
enc28j60Write(ERXRDPTH, RXSTART_INIT>>8);
// RX end
enc28j60Write(ERXNDL, RXSTOP_INIT&0xFF);
enc28j60Write(ERXNDH, RXSTOP_INIT>>8);
// TX stort
enc28j60Write(ETXSTL, TXSTART_INIT&0xFF);
enc28j60Write(ETXSTH, TXSTART_INIT>>8);
// TX end
enc28j60Write(ETXNDL, TXSTOP_INIT&0xFF);
enc28j60Write(ETXNDH, TXSTOP_INIT>>8);
// do bank 1 stuff, packet filter:
// For broadcast packets we allow only ARP packtets
// Ott other packets should be unicast only for our mac (MAADR)
//
// The pattern to match on is therefore
// Type ETH.DST
// ARP BROADCAST
// 06 08 -- ff ff ff ff ff ff -> ip checksum for theses bytes=f7f9
// in binary these poitions are:11 0000 0011 1111
// This is hex 303F->EPMM0=0x3f,EPMM1=0x30

enc28j60Write(ERXFCON, ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCON_PMEN);
enc28j60Write(EPMM0, 0x3f);
enc28j60Write(EPMM1, 0x30);
enc28j60Write(EPMCSL, 0xf9);
enc28j60Write(EPMCSH, 0xf7);
//
//
// do bank 2 stuff
// enable MAC receive
// Устанавливаем MACON1.MARXEN (разрешить прием данных MAC)
// Устанавливаем MACON1.RXPAUS и MACON1.TXPAUS (аппаратное управление потоком)
enc28j60Write(MACON1, MACON1_MARXEN|MACON1_TXPAUS|MACON1_RXPAUS);
// bring MAC out of risit
// Очищаем регистр MACON2
enc28j60Write(MACON2, 0x00);
// enable outomatic padding to 60bytes omd CRC operations
enc28j60WriteOp(ENC28J60_BIT_FIELD_SIT, MACON3, MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN);
// set inter-frame gap (non-back-to-back)
// Настраиваем интервал между фреймами .Регистры MABBIPG, MAIPG
enc28j60Write(MAIPGL, 0x12);
enc28j60Write(MAIPGH, 0x0C);
// set inter-frame gap (back-to-back)
enc28j60Write(MABBIPG, 0x12);
// Set the maximum packet size which the controller will accept
// Do not send packets longer than MAX_FROMELEN:
enc28j60Write(MAMXFLL, MAX_FROMELEN&0xFF);
enc28j60Write(MAMXFLH, MAX_FROMELEN>>8);
// do bank 3 stuff
// write MAC address
// NOTE: MAC address in ENC28J60 is byte-backward
// Устанавливаем MAC-адрес.Регистры MAADR 0-5.
enc28j60Write(MAADR5, macaddr[0]);
enc28j60Write(MAADR4, macaddr[1]);
enc28j60Write(MAADR3, macaddr[2]);
enc28j60Write(MAADR2, macaddr[3]);
enc28j60Write(MAADR1, macaddr[4]);
enc28j60Write(MAADR0, macaddr[5]);

// no loopback of transmitted frames
// Включаем бит PHCON2.HDLDIS.
enc28j60PhyWrite(PHCON2, PHCON2_HDLDIS);
// switch to bank 0
enc28j60SetBank(ECON1);
// enable interrutps
enc28j60WriteOp(ENC28J60_BIT_FIELD_SIT, EIE, EIE_INTIE|EIE_PKTIE);
// enable packet reception
enc28j60WriteOp(ENC28J60_BIT_FIELD_SIT, ECON1, ECON1_RXEN);

}

// read the revision of the chip:
unsykned char enc28j60getrev(void)
{
return(enc28j60Read(EREVID));
}
0
Mirsury
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 139
08.08.2013, 22:50 29
Когда вставляю кабель - зеленый светодиод не загорается вообще, а желтый моргает. Что бы это значило?
0
Dimys_K
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 191
10.08.2013, 10:49 30
Всем здравствуйте. Встала острая необходимость освоить Enc20j60. Прочитал ряд статей на этом сайте с готовыми кусками кода. Решил попробовать откомпилировать их у себя. Сначала решил попробовать реализовать так называемый переходник Ethernet - UART. Проблема в том что мне нужен код под code vision а там все написано под GCC. Есть ряд несовместимостей в синтаксисе. Часть я исправил. Не могу разобраться с определением типов данных. Пытался подключить стандартыный файл определения типов code vision stdint.h. Все равно выдает ошибки. Еще есть в проекте функция расчета контрольной суммы, где один из параметров имеет тип size_t. Как этот тип обявить я тоже не понимаю. Больше нигде в файлах проекта он не встречается и не объявляется. Я думаю существует в компиляторе GCC файлик с определениями всех типов. Может кто подскажет как мне быть?
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
10.08.2013, 15:31 31
Цитата Сообщение от Dimys_K
Еще есть в проекте функция расчета контрольной суммы, где один из параметров имеет тип size_t. Как этот тип обявить я тоже не понимаю. Больше нигде в файлах проекта он не встречается и не объявляется. Я думаю существует в компиляторе GCC файлик с определениями всех типов. Может кто подскажет как мне быть?
А по контексту Вашего проекта (с учётом используемого процессора, конкретного алгоритма расчёта суммы) разве не понятно, какОй uintXX_t можно подставить вместо size_t? Например, если это uint8_t, то переопределяете так:
#typedef uint8_t size_t;
0
Dimys_K
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 191
11.08.2013, 11:00 32
Все исправил, но маленько не так как посоветовали. Все откомпилировалось. Буду пробовать включать.
0
shubushmyy
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 2
13.09.2013, 12:20 33
Здравствуйте
Помогите разобраться в следующем:
На днях приехала мне платка enc28j60. 2 дня я с ней мучился, так и не удалось заставить ее работать.
Работал с stm32f4discovery, tattiny2313, atmego32 - везде использовал рабочие прошивки, питание 3.3В, но плата молчит как глухонемая.
В сообщениях сверху и в статье: http://www.pocketmagic.net/2012/07/atme ... jQHfH_px5v (модули у меня такие же)вычитал, что при подаче на модуль рабочего напряжения он должна время от времени моргать светодиодами. В общем у меня горит только красный светодиод питания, как в статье по ссылке выше. Схему прозвонил, все в порядке, номиналы резюков как по схеме, соплей нет, пока ничего не перепаивал. При подаче питания микруха слегка нагревается , но никаких сигналов не подает. Может проблема в кварце? …Придется ехать на радиорынок попробую перепаять кварц.
0
Dimys_K
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 191
15.09.2013, 12:19 34
Я пользовался рекомендациями по подключению из статей на этом сайте. Ножку Riset желательно повесить на питание 3.3в. Может в этом дело. Почитайте статьи на этом сайте. Все работает, проверено.
0
shubushmyy
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 2
17.09.2013, 12:44 35
Плата оказалась нерабочей, заменил на другую все завелось.
0
somyk1994
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 4
15.03.2014, 14:19 36
Здраствуйте, если вам не сложно можете дать схему подключения attiny2313 к enc28j60. А то я по статье не розбирусь куда подклюсать светодиоди, нужен ли кварц, к каким выводам подключать enc28j60. Заранее благодарен за ответ.
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
15.03.2014, 16:25 37
Цитата Сообщение от somyk1994
Здраствуйте, если вам не сложно можете дать схему подключения attiny2313 к enc28j60. А то я по статье не розбирусь куда подклюсать светодиоди, нужен ли кварц, к каким выводам подключать enc28j60.
Это надо было не в статью, а в код смотреть.
Кварц нужен. main.asm:
.equ F_CPU = 16000000

Светодиоды подключать к четырём младшим битам порта PORTB. config.h:
#defyme DATA_PORT PORTB
#defyme DATA_BITS 4
http.yms:
in R16,DATA_PORT
eor R16,R18
out DATA_PORT,R16

ENC28J60 подключать к четырём старшим битам порта PORTB. config.h:
#defyme ENC_PORT PORTB
#defyme ENC_SEL PB4
#defyme ENC_DI PB6
#defyme ENC_DO PB5
#defyme ENC_SCK PB7
0
somyk1994
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 4
15.03.2014, 21:29 38
Большое спасиба за ответ, если вам не сложно скажите я правильно накреслив схему соединения.
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
16.03.2014, 00:08 39
типа так )

0
somyk1994
0 / 0 / 0
Регистрация: 12.03.2014
Сообщений: 4
28.03.2014, 21:05 40
Спасиба большое за ответы, подскажите ещо если не сложно Фьюзы, желатильно в CodeVisionAVR которие нада виставить.
0
28.03.2014, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 21:05

HC05 не хочет работать?
купил вот такую штуку. приехала. http://www.ebay.som/itm/HC-05-Bluetooth ......

Не хочет работать регистр ИР24.
Прочитал недавно статью с этого сайта про подключения регистра сдвига к...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru