Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

mirekk36 07 Sie 2009 21:25 115263 169
  • ETHERNET - "karta sieciowa" SPI dla AVR enc28j60
    Witam,

    Chciałbym zaprezentować bo właśnie zrobiłem, tzn przygotowałem sobie do testów kolejny modulik w oparciu o który wkrótce będę robił komunikację ze swoimi różnymi urządzonkami. Jako że będzie do dyspozycji ETHERNET - czyli jakby karta sieciowa dla procków - nie tylko AVR z przygotowaną ładnie konwersją sygnałów z 3,3V do 5V.

    Moduł oparty jest o popularny scalak Microchip'a ENC28J60. Na złączu goldpin wyprowadzone są wszystkie potrzebne sygnały dla komunikacji z prockami AVR.

    Układ moduł zrobiony jest na bazie tego ze stronki:

    http://tuxgraphics.org/electronics/200606/article06061.shtml

    aczkolwiek wprowadziłem zmiany:

    1. Konwersja sygnałów (ponieważ ENC zasilany jest 3,3V) do 5V
    2. rezygnacja z taktowania przez ENC sygnałem CLKOUT - świadomie - co jednak oznacza że w kodach z tej stronki będzie trzeba ciut zmodyfikować źródełka na własne potrzeby. Tam autor pisał wprawdzie o problemach gdy korzystał z wewn oscylatora 8MHz w ATmega88 - ale nie będzie takiego problemu jeśli zastosuje się w procku o wiele szybszy kwarc , dzięki czemu transmisja SPI będzie mogła działać szybciej - a w nocie ENC było gdzieś napisane, że najlepiej jeśli działałaby ona z zegarem większym niż 8MHz. Więc jak do swojej ATmegi32 dorzucę kwarc 18.432MHz to powinno śmigać - zresztą wkrótce gdy zmajstruję pierwsze prototypowe własne urządzonko to dam znać ;)

    Konwersja zrobiona oczywiście zgodnie z zaleceniami noty aplikacyjnej producenta ;)

    płytka jest na razie prototypowa więc wybaczcie niedoróbki i niedociągnięcia w wykonaniu - robiona była oczywiście metodą na ŻELACHO.

    Na płytce nie jest na dzień dzisiejszy jeszcze tylko osadzony bufor 74125 SMD - ponieważ czekam na dostawę z tme.pl ;)

    Układ po złożeniu ruszył od pierwszego kopa - dioda zielona od razu się zpala sygnalizując, że jest LINK a dioda żółta sobie pomruguje czyli od tej strony ENC od razu ślicznie ruszył - a w wielu postach na elektrodzie ludzie narzekali że bywają jakieś problemy z jego uruchomieniem - trochę się tego obawiałem - ale jak było miło gdy od razu zadziałał bez bólu.

    ...... takie mam tylko małe pytanko do tych, którzy już coś na tym scalaku uruchomili - czy u was po podłączeniu zasilania ten scalaczek też tak troszeczkę ciepły się robi??? to normalne - oczywiście działa - ale wyczuwalnie dla palca lekko podwyższa się jego temperatura.

    zamieszczam schemat, płytkę i eagle + kilka fotek z wykonania.

    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

    dioda sygnalizująca napięcie 3,3V za stabilizatorem
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

    schemat:
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

    opis na płytkę, który nakleiłem na wierzchu żeby mieć czytelne opisy wyprowadzeń na goldpinach:
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

    i wzór płytki w eagle.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    mirekk36
    Poziom 42  
    Offline 
    Ciekawy kurs VIDEO - EAGLE - zajrzyj na mój blog
    mirekk36.blogspot.com - VOLATILE ? to łatwe

    Specjalizuje się w: programowanie: avr c, delphi pc, android
    mirekk36 napisał 9195 postów o ocenie 2230, pomógł 964 razy. Mieszka w mieście Szczecin. Jest z nami od 2006 roku.
  • IGE-XAOIGE-XAO
  • #3
    mirekk36
    Poziom 42  
    parafka --> widziałem gdzieś nawet w necie linki - gdzie ludziska właśnie nawet bazując na tuxgraphics.org - dawali kwarca większego do jakiejś swojej ATmegi - i im to chulało ładnie - więc i ja tą drogą spróbuję pójść
  • #4
    parafka
    Poziom 20  
    Ja nie mam miejsca na rezonator + kondensatory.
    Chyba zastosuję External RC Oscillator bo na R i C miejsce jest.
    Nie mogę za bardzo też podnieść częstotliwości bo mam Atmegę64L z 3,3V
    Patrzyłem na ds to wewnętrzne "8MHz" przy 3,3V ma 7,5Mhz.
    Spróbuję podnieść nieco ponad 8Mhz.
    Ale to chyba po wakacjach.

    A ten ENC28j60 może być ciepły bo wciąga sporo prądu.
  • #5
    mirekk36
    Poziom 42  
    no właśnie zwykle większosć ludzi dostosowuje zasilanie procka do zasilania ENC czyli 3,3V - co z kolei ogranicza jego taktowanie a na 12,5MHz w postaci CLKOUT z ENC to też niby działa z wersjami L.

    Jednak jak się zrobi taki prosty konwerter stanów logicznych - gdzie jak widać nie trzeba konwertować sygnałów lecących do ENC - ponieważ można je dołączać wprost z TTL 5V - ENC sobie z tym ładnie radzi....

    .... to w efekcie można swojego procka taktować nawet kwarcem 20MHz a wtedy transmisja SPI może być spokojnie powyżej 8MHz i wszystko będzie ładnie śmigać ;)
  • #6
    piotr_go
    Konstruktor DIY elektronika
  • IGE-XAOIGE-XAO
  • #7
    mirekk36
    Poziom 42  
    piotr_go --> święta racja z rozpędu nie zauważyłem (chyba po drodze gdzieś coś źle spojrzałem), przetnę ścieżkę i wykorzystam go na CLKOUT - jeśli będzie potrzebny (na szczęście to da radę naprawić jedną mini krosóweczką i rezystorkiem SMD 10k od resetu do VCC

    Dodano po 14 [minuty]:

    schemat i płytka już poprawione - z naniesionymi stosownymi zmianami o których wspomniałem wyżej ;)
  • #8
    Mad_Lamer
    Poziom 11  
    Atmega8 taktowana 8MHz działała mi z tym układem.
  • #9
    mirekk36
    Poziom 42  
    Mad_Lamer --> no teoretycznie powinno działać ale autor tego "wynalazku" pisał o problemach od czasu do czasu i dlatego zdecydował się taktować ATmegę zegarem z ENC....

    z ciekawości podpytam, długo się tym bawiłeś? próbowałeś coś zmieniać w źródłach i przerabiać na swoje potrzeby? - jakie są wrażenia z pracy z takim modułem? ;)

    .... kurczę ja czekam do wtorku aż na konwerter 74125 i na razie nic nie mogę zrobić - a nie chcę się bawić w lutowanie kableków już i zasilanie całości z 3,3V

    tym bardziej, że będę chciał ATemga88 taktować zewn kwarcem 20MHz
  • #10
    Mad_Lamer
    Poziom 11  
    Fakt, od czasu do czasu układ się wieszał. Myślałem że przyczyną jest montaż - zrobiłem go na szybko z użyciem płytki uniwersalnej.
    Co do konwersji źródeł to nie specjalnie - wziąłem przykładowy program. Na wysłany pakiet udp miał odpowiadać "hello". Podmieniłem to hello na stringa z temperaturą i miałem termometr na ethernet :)
    Co do konwersji napięć - cały ten ENC był opisywany w EdW - na przykładzie karty dźwiękowej. Tam podłączyli go do AVRa na 5V, pomiędzy wstawili 74HC08.
  • #11
    DjExit
    Poziom 23  
    Hmm, czy nie powinno się czasem dawać separatora galwanicznego w postaci transformatorka 1:1 na każdą linię portu ethernet ? W każdym urządzeniu sieciowym jest coś takiego, podłączysz to do czegoś co będzie zasilane z innej fazy i będziesz miał fajerwerki..
  • #12
    mirekk36
    Poziom 42  
    DjExit --> ale ja użyłem własnie takich transformatorków - tyle tylko, że one są wbudowane w to gniazdo . Nazywa się to PulseJack i ma symbol J0011D21B. Bez tych transformatorków to by układ nie zadziałał

    Dodano po 2 [minuty]:

    o - coś takiego mam:
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60
  • #13
    mirekk36
    Poziom 42  
    No - właśnie uruchomiłem pierwsze testy - w końcu ;)

    i uwaga ciekawostka:

    1. do testów używam ATmega88
    2. zasilanie +5V
    3. kwarc zewnętrzny 20MHz !!!

    wszystko śmiga tak pięknie że szok ;) .... co najważniejsze - nic a nic się nie zawiesza nawet po bardzo długim włączeniu (już cała jedna noc i półdnia) !!!

    dzięki temu, że procek taktowany jest 20MHz to prędkość SPI max może w końcu wynosić powyżej 8MHz dzięki czemu spełnione są wszystkie warunki współpracy z ENC - zalecane w nocie - i dzięki temu nic się nie zawiesza chyba w takiej konfiguracji.

    - no to nadszedł czas na ostre zastosowania w praktyce ;) z własną komunikacją na poziomie pakietów TCP i UDP + czasem HTTP ;)
  • #14
    tiggerek1982
    Poziom 15  
    Witam. Mirek a możesz podać dokładny symbol złącza RJ45? . na t.m.e znalazłem niby to ale cena też zaskakująca :>
    MIC24011-0101T Gniazdo RJ45 z transformatorem PoE, do druku

    jak idą dalsze testy?

    pozdrawiam
    Krystian
  • #15
    mirekk36
    Poziom 42  
    tiggerek1982 --> to gniazdo PulseJack kupowałem w gamma.pl - jego dokłady symbol tam to J0011D21B - a kupiłem ich sobie od razu 10szt na zaś ;) ale chyba szybko je wykorzystam bo już mam milion pomysłów na wykorzystanie. Jedno kosztuje u nich kilka dolarów (jakoś w przeliczeniu) no ale minimum chcieli sprzedać z 10szt

    za całą paczkę z tymi gniazdami wraz z przesyłką zapłaciłem chyba koło 100zł czy 110zł

    ..... no testy są zarąbiaszcze - ktoś tam gdzieś kiedyś pisał, że z niektórymi swichami nie działa ten ENC po podłączeniu a już sprawdziłem i na zwykłym starym chub'ie 10Mbit - jak i na switchu 100Mbit a teraz podłączyłem do switcha 1Gbit i też ładnie śmiga

    wszystkie przykładowe programiki z tuxgraphics - działają rewelacyjnie. Tylko z części inicjalizacyjnej wywalam to ustawianie clkout w ENC bo jest nie potrzebne.

    jak wspominałem zabieram się teraz za pisanie sofciku na PC pod windę do komunikacji - dam znać jak już będę miał jakieś fajne etapy - albo jak wytworzę jakieś fajne urządzonko (kłębi mi się w głowie 2500 pomysłów na sek) ;)
  • #16
    K_o_n_r_a_d
    Poziom 23  
    http://kamami.pl/?id_prod=2625100
    Tutaj jest też gniazdo z transformatorem (08B0-1X1T-06-F) działające z ENC...
    Ten sam model, który Microchip używa w swoich płytkach demonstracyjnych.
  • #17
    mirekk36
    Poziom 42  
    K_o_n_r_a_d --> łoo matko ale brutto kosztuje u nich to gniazdo aż 16,45zł !!!(sprawdź sobie) - więc za 10szt z przesyłką zapłaciłoby się prawie 200zł

    wg mnie jednak lepiej kupić w gamma.pl
  • #18
    kaken
    Poziom 15  
    Fajny projekt - już z 4 lata mam już w pudełku wszystkie części tyle, że przewlekane. Co do tego transformatorka to ja go wymontowałem ze spalonej płyty, która miała wbudowaną kartę sieciową. Łatwo to rozpoznać bo jest za rjtem, w kształcie jak mały przekaźnik.
  • #19
    mirekk36
    Poziom 42  
    kaken --> taak masz rację - można takie transormatorki z odzysku dawać, podobnie z kwarcami 25MHz, których zwykle pełno znajduje się w starych sieciówkach. Tyle tylko, że takie gotowe gniazdko z trafkami w środku mniej mniejsca zabiera na płytce i nie trzeba dawać tych rezystorków 75R .... nie mniej jednak pewnie, że warto brać takie czy inne elementy z odzysku jak komuś to akurat pasuje ... bo i ekologicznie ... i taniej ;)

    Dodano po 4 [godziny] 34 [minuty]:

    kurka wodna - to jest potężne narzędzie - za taaaak małe pieniądze. Oczywiście większość nrzeka, że:

    1. słaby procek
    2. mało pamięci ram - przez co ramki muszą być krótkie

    itp

    tymczasem, taki najzwykleszy w świecie procek ATmega88 taktowany kwarcem 20MHz - potrafi obsłużyć

    1. ogromną ilość klientów i zapytań UDP , TCP i HTTP
    2. jeśli ktoś potrzebuje koniecznie większe ramki bo usilnie chce praktykować tylko HTTP to może sobie dać przecież spokojnie większego AVR'a nawet mega128 i ma już duużo RAM'u na buforowanie większych ilości informacji

    3. - dla mnie najważniejsza jest możliwość komunikacji UDP i TCP ..... już jestem po testach - napisałem prosty sofcik w Delphi do komunikacji np po UDP i nawet jeśli chcę przesłać jakieś większe ilości danych to co za problem podzielić je na kawałki - i w kawałkach wysłać, opóźnienie z tego tytułu jest praktycznie znikome i pomijalne tym bardziej przy 20MHz-cowym zegarku w Atmega

    .... odnośnie bezpieczeństwa - jeśli już chcemy korzystać z łączy internetowych - wystarczy włączyć swoje kodowanie danych i po bólu - wszystko śmiga

    ... tą drogą można sobie zrobić własną obsługę - typu przejściówka RS232/ETHERNET ;)

    ... coś niesamowitego
  • #20
    DjExit
    Poziom 23  
    Kolego mirekk36 widzę, że bardzo się jarasz tym sprzęcikiem :D Interesowałem się tym jakiś czas temu, i w sumie dręczyła mnie jedna myśl, czy na prockach AVR 8 bitowych, dajmy na to Atmega32, czy można postawić na tym prosty serwer http. Powiedzmy urządzenie jakieś, sterownik świateł w domu, podłączony do domowego routera i przekierowanie nat do internetu. I z całego świata dostęp do prostego panelu konfiguracyjnego, jakaś prosta autoryzacja taka jak zwykle występuje w routerach. Jest to możliwe ?
  • #22
    mirekk36
    Poziom 42  
    DjExit ---> to fakt, że cieszę się bardzo z takiego kolejnego klocka AVR, który sobie zrobiłem ;)

    pytasz czy można zrobić jakieś sterowanie za pomocą serwera HTTP całego domu lub podobny projekt.....

    hmmm myślę że spokojnie można - aczkolwiek trzeba się liczyć z tym ograniczeniem pamięci RAM co nieco - więc zbyt rozbudowany to taki serwer HTTP chyba nie będzie - chociaż - przecież większość danych do generowanych stron można trzymać w pamięci FLASH albo jakiejś innej zewnętrznej - więc czemu nie ???

    .... ja z kolei do moich potrzeb preferuję czyste połączenia UDP lub TCP bez tego całego dodatkowego HyperTextu w postaci HTTP . Wprawdzie wtedy nie da ready tego obsługiwać przez www .... ale da radę obsługiwać już prześlicznie i BEZ ŻADNYCH OGRANICZEŃ z własnych aplikacji sterujących. A na prawdę na samym zwykłym UDP można dużo zrobić. Niedługo wystawiam sobie właśnie taki swój mini serwerek w firmie - bo tak zwykle trzymam tam włączonego kompa, który większość czasu nic nie robi (a prąd pożera jak głupi) .... tymczasem taki serwerek na AVR - jak trzeba to włączy kompa, wyłączy grzecznie - albo zrobi milion innych rzeczy, które mu się rozkaże ;) .... przy czym włączanie można zrobić bez żadnej ingerencji w kable kompa - też po sieci ale już lokalnej - za pomocą WakeOnLAN - wysyłając tylko kilkanaście magicznych pakietów z MAC adresem kompa którego chce się wybudzić ;)

    .... i dokładnie tak jak mówisz - dostęp do niego przez zwykły router ADSL - poprzez wystawienie tego IP'ka na zewnątrz - testuję to sobie teraz w domciu - hmmm mniam , aż ślinka leci na myśl co można z tym porobić. Czasem z kolei jak jestem poza domem to przydałoby się odpalić kompa zdalnie i coś z niego pobrać czy wrzucić do niego a potem wyłączyć - ale jak??? w prosty sposób

    a teraz ? ;) .... super


    parafka --> właśnie zmieniłem fusebity na wewn. oscylator 8MHz - i tak na szybko - to nie mogę stwierdzić, żeby coś było nie tak - jak na razie także wszystko chula mi ładnie ..... no ale po to robiłem na zewnętrznym kwarcu - bo:

    1. sam autor z tuxgraphics wspominał że, jak działał na 8MHz to mu się cały układ czasami wieszał i trzeba było resetować.

    2. w nocie PDF od ENC piszą o tym że zalecana prędkość SPI powinna być powyżej 8MHz (teraz wprawdzie nie mogę tego znaleźć hmmmm ale widziałem sam to na własne oczy ... chyba że to było w którejś erracie do noty)

    reasumując - wolę nawet na szybkim kwarcu działać, żeby można było dużo rzeczy w międzyczasie odbioru i transmisji zrobić
  • #24
    mirekk36
    Poziom 42  
    parafka -> oj coś kolega mało zdecydowany jest ;) .... najpierw piszesz żebym przestawił na 8MHz a teraz okazuje się, że ci nie chodziło o 8MHz tylko o 7,5MHz i to przy 3,3V ;)

    .... a skąd w ogóle wziąłeś informację, że procek przy zasilaniu 3,3V jest taktowany 7,5MHz a nie 8MHz ????

    to conajmniej bardzo dziwna teoria w porównaniu z danymi w nocie katalogowej, gdzie wyraźnie napisane jest, że wewnętrzny oscylator fabrycznie kalibrowany jest na wartość = 8MHz. Fakt napisane też jest , że za pomocą OSCCAL można zmieniać tę częstotliwość w dość szerokim zakresie bo zdaje się od 7,1MHz do 8,3MHz - ale żeby w takiej sytuacji ustawić te twoje 7,5MHz to trzeba by było bawić się w kalibrację za pomocą tego właśnie rejestru i mieć jeszcze jakiś częstościomierz żeby się wspomagać przy tej operacji

    .... w związku z powyższym - raczej nie chce mi się aż tak bawić - i sprawdzać czy działa to przy 7,5MHz
  • #25
    sebastian11
    Poziom 16  
    DjExit napisał:
    Kolego mirekk36 widzę, że bardzo się jarasz tym sprzęcikiem :D Interesowałem się tym jakiś czas temu, i w sumie dręczyła mnie jedna myśl, czy na prockach AVR 8 bitowych, dajmy na to Atmega32, czy można postawić na tym prosty serwer http. Powiedzmy urządzenie jakieś, sterownik świateł w domu, podłączony do domowego routera i przekierowanie nat do internetu. I z całego świata dostęp do prostego panelu konfiguracyjnego, jakaś prosta autoryzacja taka jak zwykle występuje w routerach. Jest to możliwe ?



    Witam

    oczywiscie ze mozliwe - 8 lat temu zrobilem prace dyplomowa na AVR 8535 + RTL8019AS i HTTP dla jenego polaczenia dzialalo super :)

    pozdrawiam
    Seba
  • #26
    parafka
    Poziom 20  
    mirekk86:
    Przy zasilaniu 3,3V Atmega taktowana jest nie 8Mhz tylko ok. 7,5MHz.
    Wynika to z wykresu w datasheecie F/Ucc.
    Zobacz na stronie 365 Atmega64
    Te 8MHz jest naprawdę mocno umowne i zależy od temperatury i zasilania,
    Dlatego jak zasilisz 3,3V to na bank nie będzie zegara 8Mhz tylko mniej.
    Dlatego prosiłem tylko o zasilenie procka napięciem 3,3V bez żadnych kalibracji.
  • #27
    tiggerek1982
    Poziom 15  
    witam co do projektu opartego o LAN atmege i serwer WWW było poruszane na elektrodzie
    Link

    choć przyznam gotowy moduł Lan (wiznet) do najtańszych należy. A całość do ściągnięcia ze źródłami w bascomie.
    a ja już ręce zacieram i czekam na enc28j60 :D . co do gniazd Lan poszedłem za waszą radą i na alledrogo wyrwałem kilka kart pod pci roalteka za śmieszne pieniądze .

    pozdrawiam
    Krystian
  • #28
    mirekk36
    Poziom 42  
    parafka --> no tak moja wina ;) na wykresy sobie nie spojrzałem ..... (a taki wykres jest chyba praktycznie w PDF'ie każdego procka)

    ... z drugiej strony, można sobie przy 3,3V dać OSCCAL na max'a i też będzie 8MHz ;) ...ok jutro postaram się sprawdzić to jednak na 3,3V i na tych ok 7,5MHz

    Dodano po 13 [minuty]:


    ----------------------------------------------------------------


    hmmm okazuje się jednak - na razie, że za pomocą stosu (oprogramowania źrółowego z tuxgraphics) to można podziałać na ENC ale głównie w roli serwera dla wszystkich z wymienianych protokołów. Natomiast gdy chcemy aby popracował dla nas jako klient chociażby UDP to już zaczynają się schody - bo w tym zakresie nie ma już ani linijki kodu ;) .... a chodzi mi np o to aby za pomocą procka poprzez ENC nawiązać połączenie UDP tzn wysłać jakieś choćby pakiety (własne) UDP do jakiegoś Hosta w sieci ...


    .... hmmm trzeba zacząć kombinować i napisać je samemu.... ale trzeba dokładnie poznać budowę stosu, ramek itp itp

    no nic zakupiłem grubą książkę o TCP/IP i zaczynam ją studiować
  • #29
    keszua
    Poziom 11  
    Świetny projekt. Również chodziło mi po głowie podobny pomysł...
    Interesowałem się tematem: "Bascom + TCP IP, Internet - IIM7000A, NM7010A", jednak koszt takiego modułu przekracza grubo ponad 100zł i opis programowania tylko pod Bascom i trzeba kupować całą gotową płytkę.

    Koszt kontrolera Ethernet ENC28J60 znalazłem na http://mse.beep.pl i wynosi około 16zł.

    Gniazdo LAN z transformatorami proponuje wyjąć ze starej płyty głównej. Dołączam zdjęcie takiego gniazda.
    ETHERNET - "karta sieciowa" SPI dla AVR enc28j60

    W niebieskiej ramce widać wymontowane i rozebrane gniazdo. Są tam także 2 gniazda USB (A), ale chyba nie powinno to przeszkadzać, a wręcz przeciwnie, może w przyszłości zrobić obsługę urządzeń przez protokół USB?

    Jak wygospodaruje trochę zaskórniaków i czasu to też zrobię taki projekt :)


    Nasunęło mi się pewne pytanie...
    - układ z komputerem łączysz przewodem krosowanym czy niekrosowanym?
  • #30
    mirekk36
    Poziom 42  
    keszua --> ja na razie podłączałem ten moduł do sieci LAN tylko przez switche albo huby - ale jeśli trzeba podłączyć wprost do kompa - no to na pewno trzeba skrosować ;) bo inaczej się nie połączy - nie ma bata ;)