Ethernet do AVR.

Jun 19, 2021 20 Replies

Macie jakieś sprawdzone rozwiązania ethernetu do mikrokontrolerów, w szczególności AVR? Najlepiej, by były dostępne również w postaci gotowych modułów. Jako że to AVR, komunikacja przez USART, I2C lub SPI. Obsługa TCP/IP (niestety nie wystarczy UDP) też dobrze, by była wbudowana w to rozwiązanie (analogicznie jak modemy GSM - tzn. te oferujące więcej niż tylko PPP) - chyba że macie do polecenia jakąś sprawdzoną bibliotekę do AVR.


Ładne, dzięki - ale jeśli używałeś w praktyce to napisz jeszcze, czym podłączyć AVRa - niech będzie ATmega1284 - do ethernetu? Czy też używałeś innego łącza?

Dlaczego upierasz się przy AVR?

c.

Używam (używałem) trochę archaicznego rozwiazania; RLT8019as, driver przeportowalem z jakiegoś stosu microchipa, chociaż chyba pod avr są ale ja nie byłem specem od avr. Współpracuje toto z atmega128. Trochę tego uIP powiginałem pod własne potrzeby. Dość dawno to było ale u klientów stabilnie działa do dzisiaj.

jp

Opanowane, więc od tego zaczynam. Oczywiście chetnie posłucham innych sugestii, ale wolałbym jednak do AVR, odpada poznawanie nowego producenta, przygotowanie toolchaina, kupowanie zestawu, prototypy, itp. co oczywiście bya ciekawe, ale nie gdy czas goni. No i jest już gotowy produkt na AVR, który być może trzeba będzie podłączyć do internetu używając koniecznie ethernetu - bo tylko w ten sposób (pomijając dawanie kolejnego modemu gsm z kolejną kartą sim i kolejną anteną - a to "kolejne" to jest min. 3 albo i więcej) można to zrobić na tramwaju - choć przy przesyłanych ilościach danych (co widać choćby po tym, że z ich obsługą da sobie radę ATmega) jest to armata na wróbla.

Dawid Rutkowski snipped-for-privacy@wp.pl napisał(a):

Korzystałem z ENC28J60 na ATmega32 + uIP. Doświadczenia opisałem w Elektronice dla wszystkich 07 i 08/2018.

W dniu 19.06.2021 o 15:12, Dawid Rutkowski pisze:

Z tego co rozumiem to pytasz o sprzęt, tak? Może moduły od Wiznet?

formatting link
ępne, działają, rozwijane.

W zamierzchłej przeszłości używałem modułów Tibbo. Rozsądne wsparcie, zamknięte środowisko.

Rozwiązań jest całkiem sporo. Chyba historycznie najstarszym będzie podpinanie do AVR-ów kart ISA na RTL8019. Potem zaczęły się pojawiać dedykowane moduły albo ludzi po prostu umieszczali ten układ wraz z gniazdkiem i transformatorem Ethernetowum na swojej płytce. Z tego układu nie miałem okazji korzystać - gdy zacząłem się interesować programowaniem MCU odchodził już do lamusa. Potem pojawiły się układy ENC28J60 (oraz parę mniej popularnych następców) pozwalające na podłączenie mikrokontrolera do Ethernetu za pomocą magistrali SPI. Bardzo dobrze współpracowały z AVR-ami, potem korzystałem z nich także na układach PIC2.

Na twoim miejscu zastanowiłbym się jednak, czy faktycznie chcesz to robić na AVR-ach. Jeśli postawisz na bardziej współczesny układ, to otwierają się przed Tobą nowe możliwości w związku chociażby z dużo większą ilością RAM-u. Do tego coraz częściej standardowo w 32bitowych układach masz zintegrowany kontroler Ethernetowy, do którego podpinasz tylko PHY i dostajesz obsługę sieci 100 Mbps. Sprawdzałem na PIC32 i STM32 - działa nawet na samodzielnie trawionych, dwustronnych płytkach.

Co do strony programowej, to w przypadku AVR-ów nie masz wielkiego wyboru. Albo niesamowicie okrojony i toporny stos z Tuxgraphics (nie wiem czy to w ogóle jest jeszcze rozwijane) albo uIP. Ja osobiście chwalę sobie stos od Microchipa. Obecnie de facto standardem staje się lwIP, ale to już na mocniejszych układach niż AVR-y.

Jeśli o to chodzi to właściwie chyba tylko układy Wiznet W5100/W5500. Magistrala SPI, dostępne gotowe moduły, banalna w obsłudze biblioteka w stylu POSIX-owych gniazd. Tylko musisz sprawdzić, czy limit dostępnych socketów Cię nie ogranicza.

Szczerze? Jak już opanowałeś AVR-y, to próg wejścia na współczesne mikrokontrolery będzie naprawdę niski. Szczególnie jeśli zdecydujesz się korzystać z bibliotek i narzędzi programistycznych producenta. To już nie jest pisanie po rejestrach, teraz to w dużej mierze korzystanie z wysokopoziomowego, intuicyjnego kodu. Niektóre rzeczy (np. konfigurację zegara) możesz sobie spokojnie wyklikać.

Wrażenie, że zaczęcie od Ethernetu na AVR-ach będzie łatwiejsze, może być złudne. Bo co prawda znajomość narzędzi parę rzeczy Ci ułatwi, ale będziesz musiał się mierzyć z ograniczeniami narzucanymi przez skromny hardware i prymitywniejsze biblioteki.

Jeśli już uprzesz się na AVR-y, to polecam skorzystać z układów od Wizneta. Przeskoczysz kwestię implementacji stosu TCP/IP.

Dawid Rutkowski wrote on 19.06.2021 15:12:

Polecam przesiadkę na coś współczesnego, najlepiej ARM z wbudowanym MAC, a jeszcze lepiej z MAC+PHY. Do tego jakiś gotowy system z RTOSem, stosem tcp, bibliotekami do ssl np. mongoose-os, mbed itp. Szkoda czasu na rzeźbienie tego na jakiś AVR-kach z mikroramem.

Ktoś produkuje obecnie MCU, które miałyby na pokładzie zestaw MAC+PHY? Pamiętam, że były układy z serii PIC18F, które miały kompletny Ethernet, wystarczyło tylko podpiąć do odpowiednich pinów gniazdko z transformatorem. Potem jednak już czegoś takiego nie widziałem. Czyżby problemy z przejściem testów EMC?

Jeśli nie musi być AVR, to polecam np.: STM32F107 + DP83848 + lwIP. Ogarnąłem bez problemów, choć wtedy nie było jeszcze książki (jest też e-book): Marcin Peczarski "Mikrokontrolery STM32 w sieci Ethernet w przykładach", która może być pomocą.

tak, TI, Nxp, Nuvoton.

Pewnie jeszcze są produkowane, ale architektura tego wynalazku to dramat.

sobota, 19 czerwca 2021 o 21:15:26 UTC+2 Atlantis napisał(a):

To wygląda nieźle i nawet niedrogie. A wczytał się ktoś w różnice między W5100S i W5500? Pierwszy ma dodatkowo interfejs równoległy, więc pewnie więcej pinów. A czy są inne różnice? Fajnie też, że to jest 10/100. Szkoda, że tylko SPI, przydałby się też UART.

8 socketów to aż nadto - z ilu miałby korzystać program do ATmegi?

ENC28J60 też fajny, ale tylko 10mbps - całe szczęście, że na switchu to nie przeszkadza. Pewnie drugi krok to ATmega+ENC z UARTem, robiąca za coś takiego jak wiznet dla innej ATmegi.

Dzięki za wskazówki - fajnie, że takie rzeczy są wciąż dostępne. I to nawet w DILu - dla mnie samodzielnie szczyt możliwości to układ na płytce uniwersalnej, chipy SMD odpadają - chyba że na modułach. Zaś zadanie może wyskoczyć w stylu "na wczoraj" - i znów trzeba będzie udowadniać, że my wszystko i od razu, bo "Konieczko nie ma bajuchy" i tramwaj nie będzie mógł pojechać...

sobota, 19 czerwca 2021 o 22:21:31 UTC+2 Zbych napisał(a):

Są i AVR z 16kB RAM i to w DILu. Cena i łatwość nie do pobicia.

Pamiętam, jak kiedyś szukałem pierwszej roboty jako student, to były fajne czasy, poznałem nawet - choć może to za dużo powiedziane, odpytywał mnie z tego, jak się pisze sterowniki do Linuxa - jednego hackera, którego potem widziałem na zdjęciu z jakiejś ważnej hackerskiej konferencji. I trafiłem też do firmy mającej siedzibę w dawnym KC PZPR, robiącą w J2ME - i tam się wyśmiewali z takich, co deklarują tablice 64kB. W DOSie też się nie dało wczytać na raz rysunku 640*480 - ale akurat to zadanie można był wykonać wczytując po dwie linie. Wtedy pierwszy raz poznałem ograniczenia. Potem był Linux i brak przejmowania się :) Póki nie napisałem programu w FORTRANie na zaliczenie dla kolegi (kiedyś muszę zapytać, jak się z tego FORTRANu - i to 77 - wytłumaczył prowadzącemu, bo język był dowolny), gdzie pierwsze podejście tworzyło tablice 48MB - a akurat w moim OmniBooku miałem 48MB - i usłyszałem dawno niesłyszane dźwięki swapowania, a program coś wolno liczył.

Dawid Rutkowski snipped-for-privacy@wp.pl napisał(a):

ATmega i tak więcej nie uciągnie. Czy switche już są tak nowoczesne, że przestały osługiwać 10 Mb/s?

W dniu 6/19/2021 o 10:21 PM, Zbych pisze:

Jeśli może być po WiFi to można dać ESP8266 NodeMCU za niecałą dychę. Wtedy ESP robi za konwerter lub na ESP wszystko wsadzisz... Jeśli masz opanowane programowanie w C lub chcesz pobawić się w Arduino...

niedziela, 20 czerwca 2021 o 17:09:08 UTC+2 Grzegorz Niemirowski napisał(a):

Nie no, przecież napisałem, że na switchu to nie problem - będzie działał w store&forward. A ATmega nie uciągnie nawet kawałka z 10mbps - ale dla niej to wszystko jedno, czy przesłany do NIC pakiet pójdzie 10 czy 100 - byle za szybko nie przychodziły z serwera. Bardziej chodzi o to, by nie przeszkadzać innym urządzeniom w LANie. A tutaj ethernet to nie wybór tylko konieczność - na tramwaju jest "moduł komunikacyjny", który daje gsm oraz wifi (na zajezdni), ale skorzystać można tylko przez ethernet - SLIP ani PPP na szeregowym nie przewidzieli.

Dawid Rutkowski wrote on 20.06.2021 14:33:

:-)

Fajne te kombatanckie wspomnienia, też mam podobne. Fajnie się o tym gada przy piwie, ale nie widzę powodu, żeby się tym kierować przy wyborze platformy w 2021. Tak jak wspomniał Jacek, dzisiaj byle amator odpala gotowce sieciowe na ESP32, ma 16MB flasha, 0,5MB ramu i może robić fikołki i kręcić kółka do okoła AVRków z 16kB ramu.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required