Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Библиотека Bascom для ENC28J60


Библиотека Bascom для ENC28J60

Сообщений 1 страница 21 из 21

1

Здравствуйте!
Интересно, а кто нибудь програмил из под баскома ENC28J60?
И может у кого есть библиотеки под данный девайс?
гугл выдал:
http://members.home.nl/bzijlstra/softwa … c28j60.htm
но по английски я не понимаю :(

0

2

а
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 текст зеленым в баском
итд
такой железки у меня нет и дальше мне неинтересно переводить

А английский пригодится по-любому - хоть даташиты читать, хоть интересные вещи изучать, а на русском - только криво переведенные даташиты в основном..

0

3

Только что спаял плату с ENC28J60, подключил без контроллера к свичу-светодиод на свиче начинает моргать, а потом загорается.
На плате тоже загорается один светодиод, а другой сначала несколько раз моргает, а потом гаснет
Померил частотомером частоту на выходе 3 (CLKOUT), она равна 6,25 мгц, то есть 1/4 частоты самой ENC28J60.
Эти признаки указывают на то, что она запустилась.
Кароч ща буду прикошачивать к меге16, о результатах отпишусь здесь, если кому это интересно

Отредактировано K()X (2009-01-09 11:40:05)

0

4

Не стал создовать новую тему, так как вопрос почти тот же. Здесь товарищ Hrustik почти добил эту железку, но возникла проблемма, а именно:

Hrustik написал(а):

как можно объединить отдельные однобайтовые переменные в четырехбайтовую переменную типа long?
не сложить их, а так чтобы каждый был на своем месте)
TCP/IP манипулирует девятизначными цифрами размером в 4 байта. К примету, с компа приходит пакет данных в заголовке tcp которого находится число 332315762, МК должен к этому числу прибавить, например, 270. И я вот пока никак не могу допетрить как объединить эти четыре байта чтобы это длинное число не пропало)

Как выяснилось, Skull тоже пытался запустить такой модуль. Хотолось бы уточнить: как успехи?

0

5

max написал(а):

Хотолось бы уточнить: как успехи?


Сервер работает,функционал у него небольшой (вкл\выкл пару нагрузок да температуру измерить с парой напряжений, забирает время по NTP), но исходники(все практически) ушли вместе с разбитым винтом. Могу разве что хекс вытащить...
А делал на основе уголка дяди Бена .
K()X я отсылал большую часть исходника, может остался у него. С немецкого сайта, с которого брал изначально готовые кусочки,  удалили почему-то...

Кстати, получил пару СМД микр версии 6, так что тоже предстоит в ближайшем будущем познать радости бессонных ночей...

Отредактировано Skull (2013-01-30 04:18:04)

0

6

Mrshilov написал(а):

Если я правильно понял задачу, то в хелпе есть такой пример:


Огромное спасибо) Думаю это подойдет)

0

7

Skull написал(а):

Кстати, получил пару СМД микр версии 6, так что тоже предстоит в ближайшем будущем познать радости бессонных ночей...
Отредактировано Skull (Сегодня 06:18:04)


Если добью то поделюсь исходниками)
Я тоже нашел на ино сайте готовые исходники, но там tcp творит всякую ерунду, решил вот своими силами реализовать tcp стек) и застрял на этом месте) мне нужно к числу sequence number прибавить 1 или количество принятых байт и отправить обратно) а это число размещено на 4 байтах) но теперь добрые люди подсказали, буду пробовать)

0

8

Hrustik написал(а):

Я добился своего)
Правда не писал комментарии) опытный образец, так сказать)
Прикрепления: 4817283.bas(43Kb) · 4655848.inc(8Kb)

Hrustik написал(а):

Добавил управление светодиодом.
Прикрепления: AVR_Ethernet_v1.rar(10Kb)

0

9

Предлагаю тему продублировать на http://bascomavr.3bb.ru/. Там точно подскажут.

А я читал статью, из неё забежал сюда и пошел читать дальше http://avrproject.ru/forum/4-111-1
:cool:

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

http://we.easyelectronics.ru/uploads/images/00/03/03/2011/03/29/874be0.png

Отредактировано Ev3658 (2016-02-15 13:43:04)

0

10

Уважаемые коллеги  8-) , расшифруйте пожалуйста, как это можно понять проще:

Код:
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?

0

11

Ev3658 написал(а):

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)


Ev3658 написал(а):

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

+1

12

Раскидывание переменной/буфера по другим более простым переменным.

+1

13

Ух ты, получается, я могу к этим простым переменным обратится и они возьмут бит из многобитной переменной? И даже можно этот бит изменить в этой многобитной переменной?
Грубо говоря, часть адреса переменной присваивается ещё и другой переменной. Получается, можно на один адрес посадить кучу переменных?!  :idea:
Добавлено спустя 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)

0

14

Ой!!! Всё понял, забыл, это-же массив!!!! А не легче сразу в массив присваивать, чем переменные объявлять?

0

15

Подключил колхозно так:
Ссылка на большую картинку
Правда добавил сопротивлений 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)

0

16

Ох, делал бы ты лучше сразу на ESP8266 (и ещё лучше на NodeMCU). Плюсов масса.

0

17

RDW написал(а):

NodeMCU

Слюнявился, но нужен Ethernet для нескольких проектов  %-)

Взял исходник, SPI подшаманил и модуль ожил. Если связи по SPI нет, то модуль не оживает.
Продолжу  :smoke:  то, что в посте №9. Может там вообще пинга нет и ничего не должно быть .

0

18

Просто жесть, супер сложно. Может кто встречал русскую документацию на enc28j60?

0

19

Ды-к TCP/IP протокол не для слабонервных. Ты же вроде из этой статьи картинку брал, там вроде всё по русски.
А вообще есть такое и такое.

0

20

Ооо и переводчик культурно переводит! Спасибо!
Но вот беда, с SPI я не разу не сталкивался. Точней отправить и получить сейчас проблем нет, но есть неясность.
Как весь процесс происходит выбора ячейки и запись в ячейку данных?
http://members.home.nl/hobbycorner/images/registri_enc.gif

Если правильно понял, то отсылая первый байт в 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)

0

21

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)

+1


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Библиотека Bascom для ENC28J60