Здравствуйте!
Интересно, а кто нибудь програмил из под баскома ENC28J60?
И может у кого есть библиотеки под данный девайс?
гугл выдал:
http://members.home.nl/bzijlstra/softwa … c28j60.htm
но по английски я не понимаю 
Библиотека Bascom для ENC28J60
Сообщений 1 страница 26 из 26
Поделиться12009-01-05 18:09:32
Поделиться22009-01-05 19:29:41
а
http://translate.google.com/translate_t
и ABBYY Lingvo ?
Here you can find a step-by-step tutorial about the Bascom-AVR code to drive an AVR
and an ENC28J60 ethernetcontroller.
Здесь вы найдете пошаговый туториал как управлять авр'кой ENC28J60 при помощи баскома.
потом идет цитата из поста про исправления для новых версий баскома
You can cut and paste all green parts of the next text and place it into the Bascom-AVR IDE
вы можете Crtl-c - Crtl-v текст зеленым в баском
итд
такой железки у меня нет и дальше мне неинтересно переводить
А английский пригодится по-любому - хоть даташиты читать, хоть интересные вещи изучать, а на русском - только криво переведенные даташиты в основном..
Поделиться32009-01-09 11:39:32
Только что спаял плату с ENC28J60, подключил без контроллера к свичу-светодиод на свиче начинает моргать, а потом загорается.
На плате тоже загорается один светодиод, а другой сначала несколько раз моргает, а потом гаснет
Померил частотомером частоту на выходе 3 (CLKOUT), она равна 6,25 мгц, то есть 1/4 частоты самой ENC28J60.
Эти признаки указывают на то, что она запустилась.
Кароч ща буду прикошачивать к меге16, о результатах отпишусь здесь, если кому это интересно
Отредактировано K()X (2009-01-09 11:40:05)
Поделиться42013-01-29 21:10:09
Не стал создовать новую тему, так как вопрос почти тот же. Здесь товарищ Hrustik почти добил эту железку, но возникла проблемма, а именно:
как можно объединить отдельные однобайтовые переменные в четырехбайтовую переменную типа long?
не сложить их, а так чтобы каждый был на своем месте)
TCP/IP манипулирует девятизначными цифрами размером в 4 байта. К примету, с компа приходит пакет данных в заголовке tcp которого находится число 332315762, МК должен к этому числу прибавить, например, 270. И я вот пока никак не могу допетрить как объединить эти четыре байта чтобы это длинное число не пропало)
Как выяснилось, Skull тоже пытался запустить такой модуль. Хотолось бы уточнить: как успехи?
Поделиться52013-01-30 03:53:20
Хотолось бы уточнить: как успехи?
Сервер работает,функционал у него небольшой (вкл\выкл пару нагрузок да температуру измерить с парой напряжений, забирает время по NTP), но исходники(все практически) ушли вместе с разбитым винтом. Могу разве что хекс вытащить...
А делал на основе уголка дяди Бена .
K()X я отсылал большую часть исходника, может остался у него. С немецкого сайта, с которого брал изначально готовые кусочки, удалили почему-то...
Кстати, получил пару СМД микр версии 6, так что тоже предстоит в ближайшем будущем познать радости бессонных ночей...
Отредактировано Skull (2013-01-30 04:18:04)
Поделиться62013-01-30 05:12:47
Если я правильно понял задачу, то в хелпе есть такой пример:
Огромное спасибо) Думаю это подойдет)
Поделиться72013-01-30 05:23:32
Кстати, получил пару СМД микр версии 6, так что тоже предстоит в ближайшем будущем познать радости бессонных ночей...
Отредактировано Skull (Сегодня 06:18:04)
Если добью то поделюсь исходниками)
Я тоже нашел на ино сайте готовые исходники, но там tcp творит всякую ерунду, решил вот своими силами реализовать tcp стек) и застрял на этом месте) мне нужно к числу sequence number прибавить 1 или количество принятых байт и отправить обратно) а это число размещено на 4 байтах) но теперь добрые люди подсказали, буду пробовать)
Поделиться82013-01-31 16:00:10
Я добился своего)
Правда не писал комментарии) опытный образец, так сказать)
Прикрепления: 4817283.bas(43Kb) · 4655848.inc(8Kb)
Добавил управление светодиодом.
Прикрепления: AVR_Ethernet_v1.rar(10Kb)
Поделиться92016-02-15 09:25:20
Предлагаю тему продублировать на https://bascomavr.bbok.ru/. Там точно подскажут.
А я читал статью, из неё забежал сюда и пошел читать дальше http://avrproject.ru/forum/4-111-1

На всякий случай очень полезная статья нашлась - http://we.easyelectronics.ru/electro-an … 28j60.html

Отредактировано Ev3658 (2016-02-15 13:43:04)
Поделиться102016-02-16 09:44:12
Уважаемые коллеги
, расшифруйте пожалуйста, как это можно понять проще:
Dim T_arp_dest_enetpacket0 As Byte At Buffer + &H20 Overlay
Не сталкивался с этим: At Buffer + &H20 Overlay
И не смог понять:
Код: Dim My_long As Long Dim Byte_1 As Byte At My_long Overlay Dim Byte_2 As Byte At My_long + 1 Overlay Dim Byte_3 As Byte At My_long + 2 Overlay Dim Byte_4 As Byte At My_long + 3 Overlay
My_long - равна байт1+байт2+байт3+байт4?
Поделиться112016-02-16 11:00:21
Dim T_arp_dest_enetpacket0 As Byte At Buffer + &H20 Overlay
dim Buffer(50) as byte
Dim T_arp_dest_enetpacket0 As Byte At Buffer + 32 Overlay
Значение переменной "T_arp_dest_enetpacket0", находится в Buffer(32)
Dim My_long As Long
Dim Byte_1 As Byte At My_long Overlay
Dim Byte_2 As Byte At My_long + 1 Overlay
Dim Byte_3 As Byte At My_long + 2 Overlay
Dim Byte_4 As Byte At My_long + 3 Overlay
4 байта автоматически сливаются в переменную Long
Поделиться122016-02-16 11:06:41
Раскидывание переменной/буфера по другим более простым переменным.
Поделиться132016-02-16 13:51:05
Ух ты, получается, я могу к этим простым переменным обратится и они возьмут бит из многобитной переменной? И даже можно этот бит изменить в этой многобитной переменной?
Грубо говоря, часть адреса переменной присваивается ещё и другой переменной. Получается, можно на один адрес посадить кучу переменных?! 
Добавлено спустя 1 час 10 минут 7 секунд:
Всё-же непонятно, вот объявляется 8 битная переменная:
Dim Buffer(max_framelen) As Byte
А потом её как-то странно шприцуют другими переменными:
Dim T_enetpacketdest0 As Byte At Buffer Overlay Dim T_enetpacketdest1 As Byte At Buffer + &H01 Overlay Dim T_enetpacketdest2 As Byte At Buffer + &H02 Overlay Dim T_enetpacketdest3 As Byte At Buffer + &H03 Overlay Dim T_enetpacketdest4 As Byte At Buffer + &H04 Overlay Dim T_enetpacketdest5 As Byte At Buffer + &H05 Overlay 'Ethernet packet source Dim T_enetpacketsrc0 As Byte At Buffer + &H06 Overlay Dim T_enetpacketsrc1 As Byte At Buffer + &H07 Overlay Dim T_enetpacketsrc2 As Byte At Buffer + &H08 Overlay Dim T_enetpacketsrc3 As Byte At Buffer + &H09 Overlay Dim T_enetpacketsrc4 As Byte At Buffer + &H0A Overlay Dim T_enetpacketsrc5 As Byte At Buffer + &H0B Overlay 'Ethernet packet type Dim T_enetpackettype As Word At Buffer + &H0C Overlay Dim T_arp_hwtype1 As Byte At Buffer + &H0F Overlay 'Arp Dim T_arp_prttype1 As Byte At Buffer + &H11 Overlay Dim T_arp_hwlen As Byte At Buffer + &H12 Overlay Dim T_arp_prlen As Byte At Buffer + &H13 Overlay Dim T_arp_op1 As Byte At Buffer + &H15 Overlay 'arp source ip address Dim T_arp_sipaddr0 As Byte At Buffer + &H1C Overlay Dim T_arp_sipaddr1 As Byte At Buffer + &H1D Overlay Dim T_arp_sipaddr2 As Byte At Buffer + &H1E Overlay Dim T_arp_sipaddr3 As Byte At Buffer + &H1F Overlay 'arp target IP address Dim T_arp_tipaddr0 As Byte At Buffer + &H26 Overlay Dim T_arp_tipaddr1 As Byte At Buffer + &H27 Overlay Dim T_arp_tipaddr2 As Byte At Buffer + &H28 Overlay Dim T_arp_tipaddr3 As Byte At Buffer + &H29 Overlay Dim T_arp_tipaddr As Long At Buffer + &H26 Overlay 'IP header layout IP version and header length Dim T_ip_vers_len As Byte At Buffer + &H0E Overlay Dim T_arp_hwtype0 As Byte At Buffer + &H0E Overlay 'Arp Dim T_arp_prttype0 As Byte At Buffer + &H10 Overlay Dim T_arp_op0 As Byte At Buffer + &H14 Overlay 'arp source mac address Dim T_arp_src_enetpacket0 As Byte At Buffer + &H16 Overlay Dim T_arp_src_enetpacket1 As Byte At Buffer + &H17 Overlay Dim T_arp_src_enetpacket2 As Byte At Buffer + &H18 Overlay Dim T_arp_src_enetpacket3 As Byte At Buffer + &H19 Overlay Dim T_arp_src_enetpacket4 As Byte At Buffer + &H1A Overlay Dim T_arp_src_enetpacket5 As Byte At Buffer + &H1B Overlay 'arp source mac address Dim T_arp_dest_enetpacket0 As Byte At Buffer + &H20 Overlay Dim T_arp_dest_enetpacket1 As Byte At Buffer + &H21 Overlay Dim T_arp_dest_enetpacket2 As Byte At Buffer + &H22 Overlay Dim T_arp_dest_enetpacket3 As Byte At Buffer + &H23 Overlay Dim T_arp_dest_enetpacket4 As Byte At Buffer + &H24 Overlay Dim T_arp_dest_enetpacket5 As Byte At Buffer + &H25 Overlay Dim T_tos As Byte At Buffer + &H0F Overlay 'Buffer length Dim T_ip_pktlen0 As Byte At Buffer + &H10 Overlay Dim T_ip_pktlen1 As Byte At Buffer + &H11 Overlay Dim T_id0 As Byte At Buffer + &H12 Overlay Dim T_id1 As Byte At Buffer + &H13 Overlay Dim T_flags As Byte At Buffer + &H14 Overlay Dim T_offset As Byte At Buffer + &H15 Overlay Dim T_ttl As Byte At Buffer + &H16 Overlay 'protocol (ICMP=1, TCP=6, UDP=11) Dim T_ip_proto As Byte At Buffer + &H17 Overlay 'header checksum Dim T_ip_hdr_cksum0 As Byte At Buffer + &H18 Overlay Dim T_ip_hdr_cksum1 As Byte At Buffer + &H19 Overlay Dim T_ip_hdr_cksum As Word At Buffer + &H18 Overlay 'IP address of source Dim T_ip_srcaddr0 As Byte At Buffer + &H1A Overlay Dim T_ip_srcaddr1 As Byte At Buffer + &H1B Overlay Dim T_ip_srcaddr2 As Byte At Buffer + &H1C Overlay Dim T_ip_srcaddr3 As Byte At Buffer + &H1D Overlay Dim T_ip_srcaddr As Long At Buffer + &H1A Overlay 'IP address of destination Dim T_ip_destaddr0 As Byte At Buffer + &H1E Overlay Dim T_ip_destaddr1 As Byte At Buffer + &H1F Overlay Dim T_ip_destaddr2 As Byte At Buffer + &H20 Overlay Dim T_ip_destaddr3 As Byte At Buffer + &H21 Overlay Dim T_ip_destaddr As Long At Buffer + &H1E Overlay Dim T_icmp_type As Byte At Buffer + &H22 Overlay Dim T_icmp_code As Byte At Buffer + &H23 Overlay Dim T_icmp_cksum0 As Byte At Buffer + &H24 Overlay Dim T_icmp_cksum1 As Byte At Buffer + &H25 Overlay Dim T_icmp_cksum As Word At Buffer + &H24 Overlay Dim Tcp_srcporth As Byte At Buffer + &H22 Overlay Dim Tcp_srcportl As Byte At Buffer + &H23 Overlay Dim Tcp_destporth As Byte At Buffer + &H24 Overlay Dim Tcp_destportl As Byte At Buffer + &H25 Overlay Dim Tcp_seqnum3 As Byte At Buffer + &H26 Overlay Dim Tcp_seqnum2 As Byte At Buffer + &H27 Overlay Dim Tcp_seqnum1 As Byte At Buffer + &H28 Overlay Dim Tcp_seqnum0 As Byte At Buffer + &H29 Overlay Dim Tcp_acknum3 As Byte At Buffer + &H2A Overlay Dim Tcp_acknum2 As Byte At Buffer + &H2B Overlay Dim Tcp_acknum1 As Byte At Buffer + &H2C Overlay Dim Tcp_acknum0 As Byte At Buffer + &H2D Overlay 'Dim Tcp_hdr As Byte At Buffer + &H2E Overlay Dim Tcp_flags As Byte At Buffer + &H2F Overlay Dim Tcp_cksumh As Byte At Buffer + &H32 Overlay Dim Tcp_cksuml As Byte At Buffer + &H33 Overlay Dim Tcp_cksum As Word At Buffer + &H32 Overlay 'UDP header Dim T_udp_srcport0 As Byte At Buffer + &H22 Overlay Dim T_udp_srcport1 As Byte At Buffer + &H23 Overlay Dim T_udp_srcport As Word At Buffer + &H22 Overlay Dim T_udp_destport0 As Byte At Buffer + &H24 Overlay Dim T_udp_destport1 As Byte At Buffer + &H25 Overlay Dim T_udp_destport As Word At Buffer + &H24 Overlay Dim T_udp_len0 As Byte At Buffer + &H26 Overlay Dim T_udp_len1 As Byte At Buffer + &H27 Overlay Dim T_udp_chksum0 As Byte At Buffer + &H28 Overlay Dim T_udp_chksum1 As Byte At Buffer + &H29 Overlay Dim T_udp_chksum As Word At Buffer + &H28 Overlay Dim T_udp_data As Byte At Buffer + &H2A Overlay Dim T_udp_data1 As Byte At Buffer + &H2B Overlay Dim T_udp_data2 As Byte At Buffer + &H2C Overlay Dim T_udp_data3 As Byte At Buffer + &H2D Overlay Dim T_udp_data4 As Byte At Buffer + &H2E Overlay Dim T_udp_data5 As Byte At Buffer + &H2F Overlay Dim T_udp_data6 As Byte At Buffer + &H30 Overlay Dim T_udp_data7 As Byte At Buffer + &H31 Overlay Dim T_udp_data8 As Byte At Buffer + &H32 Overlay Dim T_udp_data9 As Byte At Buffer + &H33 Overlay Dim T_udp_data10 As Byte At Buffer + &H34 Overlay Dim T_udp_data11 As Byte At Buffer + &H35 Overlay Dim T_udp_data12 As Byte At Buffer + &H36 Overlay Dim T_udp_data13 As Byte At Buffer + &H37 Overlay Dim T_udp_data14 As Byte At Buffer + &H38 Overlay Dim T_udp_data15 As Byte At Buffer + &H39 Overlay Dim T_udp_data16 As Byte At Buffer + &H3A Overlay Dim T_udp_data17 As Byte At Buffer + &H3B Overlay Dim T_udp_data18 As Byte At Buffer + &H3C Overlay Dim T_udp_data19 As Byte At Buffer + &H3D Overlay Dim T_udp_data20 As Byte At Buffer + &H3E Overlay Dim T_udp_data21 As Byte At Buffer + &H3F Overlay Dim T_udp_data22 As Byte At Buffer + &H40 Overlay Dim T_udp_data23 As Byte At Buffer + &H41 Overlay Dim T_udp_data24 As Byte At Buffer + &H42 Overlay Dim T_udp_data25 As Byte At Buffer + &H43 Overlay Dim T_udp_data26 As Byte At Buffer + &H44 Overlay Dim T_udp_data27 As Byte At Buffer + &H45 Overlay Dim T_udp_data28 As Byte At Buffer + &H46 Overlay Dim T_udp_data29 As Byte At Buffer + &H47 Overlay Dim T_udp_data30 As Byte At Buffer + &H48 Overlay Dim T_udp_data31 As Byte At Buffer + &H49 Overlay Dim T_udp_data32 As Byte At Buffer + &H4A Overlay
Тут получается в Buffer закидывается куча байтов и она становится не 8 битной, а МНОГО-МНОГО битной переменной?
Отредактировано Ev3658 (2016-02-16 15:01:12)
Поделиться142016-02-16 15:02:55
Ой!!! Всё понял, забыл, это-же массив!!!! А не легче сразу в массив присваивать, чем переменные объявлять?
Поделиться152016-02-16 17:28:31
Подключил колхозно так:
Ссылка на большую картинку
Правда добавил сопротивлений 510 Ом на логические сигналы. Питается модуль от своего 3.3в. стабилизатора.
Линк моргает, светодиод на модуле горит, в терминале:
Ок Starting Tux Enc28j60-version = 255
IP адрес прописал:
'IP address Myip(1) = 192 Myip(2) = 168 Myip(3) = 1 Myip(4) = 26
Порт CS указал. Но пинга нет и 80й порт не отвечает. Может есть чего такое, чего не знаю 
Добавлено спустя 4 минуты 31 секунду:
P:S: Если Мисо и Мози местами поменять, линк (индикация сети) пропадает.
Отредактировано Ev3658 (2016-02-16 17:33:02)
Поделиться162016-02-16 18:49:37
Ох, делал бы ты лучше сразу на ESP8266 (и ещё лучше на NodeMCU). Плюсов масса.
Поделиться172016-02-16 18:56:36
NodeMCU
Слюнявился, но нужен Ethernet для нескольких проектов
Взял исходник, SPI подшаманил и модуль ожил. Если связи по SPI нет, то модуль не оживает.
Продолжу
то, что в посте №9. Может там вообще пинга нет и ничего не должно быть .
Поделиться182016-02-18 13:23:44
Просто жесть, супер сложно. Может кто встречал русскую документацию на enc28j60?
Поделиться202016-02-18 16:08:09
Ооо и переводчик культурно переводит! Спасибо!
Но вот беда, с SPI я не разу не сталкивался. Точней отправить и получить сейчас проблем нет, но есть неясность.
Как весь процесс происходит выбора ячейки и запись в ячейку данных?
Если правильно понял, то отсылая первый байт в SPI, мы задаём адрес ячейки таким образом:
Составляем байт адреса:
1.Выбираем BANK в битах 7 и 8:
'для выбора банка Const Bank0 = & B00_000000 Const Bank1 = & B01_000000 Const Bank2 = & B10_000000 Const Bank3 = & B11_000000
2. Дальше выбираем регистр в битах с 6 по 2:
Адрес = Bank0 OR &B00_00001_0 = - (выбрали регистр ERDPTH в банке №0)
и бит №1 включает или отклчючет чего-то там, судя по переводу, он:
..... Оставив одного бита мы будем нуждаться в дальнейшем (разница между Ethernet-, MAC- и PHY-регистров)
Эх.. чувствую я залажу ещё в те джунгли
с Китайским топориком.
Добавлено спустя 54 минуты 4 секунды:
Застрял на инициализации, модуль всегда показывает все 8 бит в единице, хоть отключённый, хоть включённый, второй такой-же модуль показывает так-же.
Осциллографом пульсация везде есть, Mosi как-то странно выглядит, может подтягивающий резистор кто ставил?
Добавлено спустя 1 час 26 минут 36 секунд:
Подпаял с GND на MOSI сопротивление 57к., теперь получаю не 255, а 127.
Ok Starting Tux Enc28j60-version = 127
И ничего больше, осциллографом все сигналы есть.
Отредактировано Ev3658 (2016-02-18 17:34:45)
Поделиться212017-01-28 22:38:25
Hrustik
Hrustik написал(а):
Я добился своего)
Правда не писал комментарии) опытный образец, так сказать)
Прикрепления: 4817283.bas(43Kb) · 4655848.inc(8Kb)
Hrustik написал(а):
Добавил управление светодиодом.
Прикрепления: AVR_Ethernet_v1.rar(10Kb)
А схему подключения можно,плиз? хочу к 328 меге прилепить. что-то нехочет.... Мега на внешнем кварце 16 мгц
Доходит до
Starting Tux
Enc28j60-version = 255
и больше ни на что не реагирует.помаргивает оранжевым светодиодом и все.
Отредактировано Executer (2017-01-29 20:38:42)
Поделиться222018-02-14 17:38:20
У меня оказалась проблема ENC28J60 в виде нестабильности передачи данных, то-есть производительности контроллера может не хватить для стабильной работы в сети, грубо говоря PING иногда превышает, пакет может потеряться.
Толи дело W5100 - стабильный пинг и Bascom поддерживает W5100 и W5200.
Поделиться232018-02-15 11:32:00
В инете народ пишет, что ENC28J60 на рынке давно, но баги правят по сей день, глючный он. Все вроде в восторге от "W" серии, но вроде в своё время была эта тема (уже не помню точно), модули различались наличием аппаратной части и софтовой реализацией. Т.е. ENC28J60 (кажется) был весть софтовый, приходилось самому мониторить/обрабатывать все пакеты сети и следовательно полная нагрузка на МК а вот W52100 - вроде аппаратный, всё сам делает. Да, ещё раз глянул, WIZnet делает аппаратные решения, он сам в себе содержит процессор обрабатывающий поток LANа.
Вот почитай: https://geektimes.ru/post/255132/
Поделиться242018-03-15 10:15:44
Нашел применение этой ENC28J60!!!!
У наших сис.администраторов сломался LAN тестер, сгорел процессор.
Им то надо витую пару проверить на правильность обжима и тут как раз бы PING сразу проверить в сети, принять PING по зарубежной библиотеке проблем нет, а вот как отправить вообще не знаю, если кто сталкивался, напишите как отправлять пакет ICMP?
Поделиться252018-03-19 18:24:57
Не могу никак пакет состряпать для отправки на IP адрес чтоб получить ICMP пакет.
Пытаюсь вот так:
'Local Packetlength As Word
Packetlength = T_ip_pktlen0 * 256
Packetlength = Packetlength + T_ip_pktlen1
Packetlength = Packetlength + 13 'We are going to calculate the checksum till the end of packet (IP length + 14 byte of the ethernet stuff), -1 to get word start
'set echo reply
T_icmp_type = &H08 '-------------- Типа пакета
T_icmp_code = &H00
'setup the IP-header
Sip(1) = 192
Sip(2) = 168
Sip(3) = 2
Sip(4) = 21
T_ip_destaddr = S_ip 'T_ip_srcaddr '-------------- Адрес получателя
'make ethernet module IP address source address
T_ip_srcaddr = My_ip '-------------- Адрес отправителя
'move hardware source address to destination address
'-------------- МАК адрес получателя
T_enetpacketdest0 = &HFF 'T_enetpacketsrc0
T_enetpacketdest1 = &HFF 'T_enetpacketsrc1
T_enetpacketdest2 = &HFF ' T_enetpacketsrc2
T_enetpacketdest3 = &HFF 'T_enetpacketsrc3
T_enetpacketdest4 = &HFF ' T_enetpacketsrc4
T_enetpacketdest5 = &HFF ' T_enetpacketsrc5
'Set source MAC in ethernet frame, pos 7
'Make ethernet module mac address the source address '-------------- Мак адрес отправителя
T_enetpacketsrc0 = Mymac(1)
T_enetpacketsrc1 = Mymac(2)
T_enetpacketsrc2 = Mymac(3)
T_enetpacketsrc3 = Mymac(4)
T_enetpacketsrc4 = Mymac(5)
T_enetpacketsrc5 = Mymac(6)
' Call Src2mymac
Call Ip_header_checksum
Call Icmp_checksum
Packetlength = Packetlength + 1
'Send the reply packet
Call Enc28j60_packetsend(packetlength)Код взял из подпрограммы ответа на PING - http://members.home.nl/bzijlstra/softwa … c28j60.htm
Если кто знает как сформировать пакет, чтоб чего-то из сети (без роутера) ответило любым пакетом ICMP, буду рад узнать. 
Поделиться262019-06-08 00:29:02
Уголок Дяди Бена снова открылся. Там кучка исходников по сетевым контроллерам
Ссылка