Internetowy interfejs dla mikrokontrolera P R O J E K T Y Internetowy interfejs dla mikrokontrolera, część 3 AVT-5055 Jest to ostatnia czÍśĘ opisu projektu, ktÛry wzbudziÅ‚ ogromne zainteresowanie naszych CzytelnikÛw. SprzÍtowa realizacja stosu TCP/IP, choĘby w oparciu o ukÅ‚ad S-7600A, zapewnia nowoczesne i bardzo praktyczne rozwiÄ…zanie - warto wiÍc zapoznaĘ siÍ z programowaniem i konfiguracjÄ… tego ukÅ‚adu. Najbardziej dostÍpnÄ… i znanÄ… nieniu dlaczego tak jest skoÒczyÅ‚y metodÄ… poÅ‚Ä…czenia siÍ z Interne- siÍ tak samo, jak prÛby Å‚Ä…czenia tem przez modem jest wykorzys- siÍ przez 0202122. PozostawiÍ to tanie numeru dostÍpowego TP bez komentarza... S.A. Wystarczy wysÅ‚aĘ do mode- Jak juÅ‚ wspomniaÅ‚em, wpisa- mu komendÍ ATDT 0202122, a do nie jedynki do PPP_En w rejestrze PAP String sekwencjÍ: 0x03 PPP Control and Status powoduje PPP0x03PPP i czekaĘ na popraw- rozpoczÍcie negocjowania poÅ‚Ä…- ne poÅ‚Ä…czenie. Pierwsze prÛby, czenia przez sprzÍtowy stos PPP. jakie robiÅ‚em nie daÅ‚y jednak WczeÅ›niej trzeba wpisaĘ jedynkÍ pozytywnego rezultatu. Powstawa- na pozycji bitu SCTL w rejestrze Å‚y zmiany w programie, kolejne Serial Port Configuration/Status. prÛby i... niestety nic z tego. UmoÅ‚liwi to przejÍcie kontroli ZrobiÅ‚em wiele takich prÛb, stra- nad portem szeregowym przez ciÅ‚em mnÛstwo czasu na mody- stos sprzÍtowy. Przy okazji trzeba fikacjÍ programu i wyczytywanie teÅ‚ ustawiĘ (wpisaĘ jedynkÍ) bit pakietÛw PPP wymienianych po- DSR/HWFC i wÅ‚Ä…czyĘ mechanizm miÍdzy S-7600A a serwerami TP hardware flow control. S.A. OkazaÅ‚o siÍ, Å‚e nie jest Ze stosem PPP zwiÄ…zane sÄ… moÅ‚liwe ustanowienie poÅ‚Ä…czenia jeszcze cztery rejestry Our IP pomiÍdzy S-7600A i serwerami TP Address. Pod adresem 0x10 znaj- S.A. Po zmianie na numer dostÍ- duje siÍ mniej znaczÄ…ca czÍśĘ powy firmy Polbox wszystko za- numeru IP, a pod 0x13 bardziej czÍÅ‚o dziaÅ‚aĘ od razu! Wszelkie znaczÄ…ca. MoÅ‚na tam wpisaĘ ad- prÛby dotarcia do kogoÅ› z TP res IP serwera dostÍpowego lub S.A., kto mÛgÅ‚by pomÛc w wyjaÅ›- nic nie wpisywaĘ (domyÅ›lnie sÄ… Elektronika Praktyczna 5/2002 47 Internetowy interfejs dla mikrokontrolera natomiast do rejestrÛw Their Port Tab. 11. Rejestr Config Status Low Registers (0x37...0x37) jest wpisy- Bit Nazwa DostÄ™p Opis wana wartośĘ 0x006e (110 dzie- 7 TO R TCP Timeout - ten bit sygnalizuje, że wystÄ…piÅ‚ timeout w czasie siÍtnie). Obie te wartoÅ›ci, tak jak ustanawiania poÅ‚Ä…czenia TCP lub czekania na pakiet TCP po i adres IP, muszÄ… byĘ ustawione ustanowieniu poÅ‚Ä…czenia. przed aktywacjÄ… kieszeni. Po wpi- 0 = normalna praca 1 = nastÄ…piÅ‚ timeout saniu tych ustawieÒ w rejestrze 6 Buff_ R Ten bit sygnalizuje, czy bufor danych wyjÅ›ciowych jest pusty czy też Config Status Low trzeba okreÅ›liĘ Empty nie. Bit jest jedynkÄ…, jeżeli bufor jest pusty. Jest zerowany, jeżeli typ protokoÅ‚u kieszeni na TCP kieszeÅ„ danych wyjÅ›ciowych nie jest pusta i taka pozostaje. Client Mode. 1 = bufor pusty Teraz jest juÅ‚ wszystko gotowe 0 = bufor nie jest pusty i moÅ‚na rozpocząĘ poÅ‚Ä…czenie TCP 5 Buff_Full R Ten bit sygnalizuje, czy przestrzeÅ„ jest dostÄ™pna do zapisu danych. (aktywacji kieszeni) przez wpisa- Może również wyzwalać przerwanie, kiedy bufor jest peÅ‚ny i bit Buff_Full_En w rejestrze Socket Interrupt Mask Low (0x2a) jest nie dowolnej wartoÅ›ci do rejestru ustawiony. Rejestr Data Register nie powinien być zapisywany, kiedy o adresie 0x30 (Data Send and Buff_Full=1. Buffer Length). JeÅ‚eli poÅ‚Ä…czenie 0 = bufor dostÄ™pny dojdzie do skutku, to w rejestrze 1 = bufor nie jest dostÄ™pny Socket Status Mid (tab. 11) bit 4 Data_ R/W Wyzerowanie tego bitu ustawia wszystkie parametry kieszeni do Avail/RST wartoÅ›ci domyÅ›lnych. Jest samozerujÄ…cy i nie potrzebuje zerowania dla ConU zostanie ustawiony, a w po- wÅ‚aÅ›ciwej operacji. Przed wyzerowaniem należy siÄ™ upewnić, że bit lu TCP State powinna pojawiĘ siÍ Snd_Bsy w rejestrze Socket Status High (0x3A) jest wyzerowany. wartośĘ 2 (established). Przeczytany okreÅ›la, czy sÄ… dostÄ™pne dane w kieszeni. Na wyÅ›wietlaczu w gÛrnym 2:0 Protocol_ R/W Te bity sÄ… używane do ustawiania protokoÅ‚u kieszeni. wierszu pojawi siÍ wtedy komu- Type 010 = TCP Client Mode nikat ìPolaczenie TCP/IP okî, 101 = UDP Mode 110 = TCP Server Mode natomiast w dolnym ìport 110î. Jest to moment, w ktÛrym S7600A moÅ‚e wysyÅ‚aĘ i odczytywaĘ z ser- tam wpisane same zera). W tym port ürÛdÅ‚a ma mieĘ losowo wy- wera pocztowego dane. Dane sÄ… drugim przypadku serwer sam branÄ… wartośĘ z zakresu wysyÅ‚ane w momencie wpisania przeÅ›le swÛj adres i zostanie on 1024...65535. Port przeznaczenia do rejestru Socket Data (adres wpisany do rejestrÛw Our IP dla aplikacji uÅ‚ywajÄ…cej protokoÅ‚u 0x2e). Odczytanie tego rejestru Address (floating IP address ne- POP3 ma standardowy numer 110. powoduje kolejne wczytywanie gocjowany podczas sesji PPP). Do rejestrÛw Our Port registers danych przychodzÄ…cych z pamiÍci Poprawne zakoÒczenie negocja- (0x38...0x39) wpisywana jest war- aktywnej kieszeni. Przez odczyta- cji ukÅ‚ad S-7600A sygnalizuje tośĘ 0x9200 (37376 dziesiÍtnie), nie rejestrÛw Data Send and ustawiajÄ…c bit PPP_UP/SRst w PPP Control and Status. MoÅ‚na wtedy Tab. 12. Rejestr Socket Status Mid odczytaĘ rejestry Our IP Address. Bit Nazwa DostÄ™p Opis Po ustawieniu PPP_En program 7 URG R Ten bit sygnalizuje przychodzÄ…ce pilne dane. Wpisanie 1 na pozycji sterujÄ…cy czeka w pÍtli na usta- bitu URG w Socket Interrupt High Register (0x2d) zeruje ten bit wienie bitu PPP_UP/SRst. JeÅ‚eli 0 = nie ma pilnych danych 1 = sÄ… pilne dane to nastÄ…pi, to na wyÅ›wietlaczu (w 6 RST R Ten bit sygnalizuje, że kieszeÅ„ odebraÅ‚a sygnaÅ‚ RST ze strony TCP gÛrnym wierszu) pojawi siÍ 0 = nie odebrano sygnaÅ‚u RST ìPPP_ok.î, a w dolnym bÍdÄ… wy- 1 = odebrano RST Å›wietlone hexadecymalnie cztery 5 Term R Ten bit sygnalizuje, że kieszeÅ„ odÅ‚Ä…cza siÄ™ od zródÅ‚a i wyzwala bajty adresu IP. przerwanie, jeżeli bit Term_En jest ustawiony w rejestrze Socket W tym momencie S-7600A mo- Interrupt Mask High (0x2b). Ustawienie maski przerwania nie Å‚e rozpocząĘ nawiÄ…zywanie poÅ‚Ä…- powoduje braku przesyÅ‚ania tego bitu. 0 = praca normalna czenia TCP ze stacjÄ… docelowÄ…. 1 = odÅ‚Ä…czenie kieszeni od zródÅ‚a Do rejestrÛw Their IP Address ten bit ustawia siÄ™, kiedy S-7600A odbierze segment z flagÄ… FIN. To (0x3c...0x3f) trzeba wpisaĘ adres oznacza, że zdalna strona żąda zamkniÄ™cia poÅ‚Ä…czenia TCP. IP tej stacji. Przed dostÍpem do 4 ConU R Ten bit sygnalizuje, że kieszeÅ„ ustanowiÅ‚a poÅ‚aczenie z hostem. indeksowanych rejestrÛw kieszeni 0 = poÅ‚Ä…czenie nieustanowione musi byĘ zaprogramowany rejestr 1 = poÅ‚Ä…czenie ustanowione indeksowy o adresie 0x20. Kolej- 3:0 TCP State R Te bity sygnalizujÄ… bieżący stan TCP 0 = CLOSED nÄ… czynnoÅ›ciÄ… jest wyzerowanie 1 = SYN_SENT bitu Data_avail/RST (wyzerowa- 2 = ESTABLISHED nie kieszeni) w rejestrze Config 3 = CLOSE_WAIT Status Low (adres 0x22). OprÛcz 4 = LAST_ACK adresu IP potrzebne jest jeszcze 5 = FIN_WAIT1 6 = FIN_WAIT2 okreÅ›lenie numerÛw portÛw ürÛd- 7 = CLOSING Å‚a i przeznaczenia. Prezentowane 8 = TIME_WAIT urzÄ…dzenie ma pracowaĘ jako 9 = LISTEN klient poczty. W takim przypadku A = SYN_RECVD Elektronika Praktyczna 5/2002 48 Internetowy interfejs dla mikrokontrolera Buffer Length moÅ‚na okreÅ›liĘ wiel- List. 3 kośĘ bufora wejÅ›ciowego. +OK 979 octets Return-Path: Wymiana informacji moÅ‚e siÍ Received: from ghost3.onet.pl (ghost3.onet.pl [213.180.128.18]) odbywaĘ tylko w ramach standar- by mach4.polbox.pl (8.10.2/8.10.2) with ESMTP id f9I6KKK9K052319 dowego protokoÅ‚u. Do odczytywa- for ; Thu, 18 Oct 2001 20:14:09 +0200 nia poczty stosuje siÍ protokÛÅ‚ Received: from pa24.zulavs.cvx.ppp.tpnet.pl ([213.77.198.24]:4100 HELO POP3. Bez wdawania siÍ w szcze- world ) gÛÅ‚y, umoÅ‚liwia on uwierzytelnie- by ghost3.onet.pl with SMTP id ; nie uÅ‚ytkownika przez wysÅ‚anie Thu, 18 Oct 2001 20:14:13 +0200 nazwy i hasÅ‚a, sprawdzenie liczby Message-ID: <001d01c157bledd8b0080$0334521fjj9@world> wiadomoÅ›ci i zajmowanej przez From: Tomek To: nie pamiÍci. MoÅ‚na teÅ‚ odczytaĘ Subject: POP3 test kolejne wiadomoÅ›ci i skasowaĘ Date: Thu, 18 Oct 2001 20:13:19 +0200 wiadomośĘ o konkretnym nume- MIME-Version: 1.0 rze. Po wysÅ‚aniu kaÅ‚dej komendy Content-Type: text/plain; POP3, serwer odpowiada komuni- charset= iso-8859-2" Content-Transfer-Encoding: 7bit katem, ktÛry zaczyna siÍ ì+ok.î X-Priority: 3 dla sytuacji kiedy komenda jest X-MSMail-Priority: Normal zaakceptowana i poprawnie wyko- X-Mailer: Microsoft Outlook Express 4.72.3110.5 nana lub ì-errî jeÅ‚eli wystÄ…pi X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 bÅ‚Ä…d. JeÅ‚eli wystÄ…pi bÅ‚Ä…d, to pro- Status: RO gram sterujÄ…cy wyÅ›wietla odebra- Witaj S7600A! ny komunikat i rozÅ‚Ä…cza poÅ‚Ä…cze- - nie przez wyzerowanie bitu PPP_En w rejestrze PPP Control and Status. W przypadku kiedy rzysty sposÛb, jak moÅ‚na wyko- siÍ ze stacjÄ… w Internecie potrzeb- caÅ‚a sekwencja odczytywania rzystaĘ S-7600A w aplikacji inter- ny jest jej adres IP. Dostawcy poczty jest poprawna, to moÅ‚na netowej. Program sterujÄ…cy dziaÅ‚a usÅ‚ug internetowych zmieniajÄ… ad- odczytaĘ na wyÅ›wietlaczu caÅ‚Ä… poprawnie w sytuacji, kiedy poÅ‚Ä…- resy IP zachowujÄ…c tÄ… samÄ… nazwÍ przesÅ‚anÄ… wiadomośĘ. Zawiera ona czenie jest realizowane wÅ‚aÅ›ciwie domeny. JeÅ‚eli aplikacja wyko- oprÛcz przesyÅ‚anej treÅ›ci - takiej, i nie wystÍpujÄ… Å‚adne problemy. rzystuje system DNS do wyszu- jaka pojawia siÍ w oknie progra- Program, ktÛry zawieraÅ‚by proce- kiwania adresÛw IP, to wszystko mu do odczytu poczty - szereg dury obsÅ‚ugi sytuacji krytycznych jest w porzÄ…dku. W naszym przy- innych istotnych wiadomoÅ›ci nor- byÅ‚by zdecydowanie bardziej roz- padku tak nie jest i waÅ‚ne jest by malnie niewidocznych (list. 3) - budowany, a co za tym idzie duÅ‚o znaĘ aktualny adres IP serwera moÅ‚na tam znaleüĘ informacjÍ od mniej zrozumiaÅ‚y. Celowo teÅ‚ wy- pocztowego. Przy znajomoÅ›ci da- kogo nadeszÅ‚a wiadomośĘ, do- braÅ‚em w warstwie aplikacji pro- tagramÛw protokÛÅ‚u IP moÅ‚na ten kÅ‚adnÄ… datÍ i godzinÍ wysÅ‚ania, tokÛÅ‚ POP3. MoÅ‚na byÅ‚o wybraĘ adres wyczytaĘ podczas spraw- a takÅ‚e dane identyfikacyjne ser- np. HTML i ze strony WWW dzania poczty za pomocÄ… np. wera, z ktÛrego wiadomośĘ zostaÅ‚a sterowaĘ jakimÅ› elementem - np. Outlook Express. MoÅ‚na w tym wysÅ‚ana. przekaünikiem. Jednak w takim celu wykorzystaĘ dowolny termi- OczywiÅ›cie sÄ… tam teÅ‚ takie przypadku jednoczeÅ›nie do sieci nal znakowy. Odpowiedni jest na podstawowe informacje, jak te- musiaÅ‚yby byĘ podÅ‚Ä…czone: nasz przykÅ‚ad Terminal Emulation mat i sama treśĘ wiadomoÅ›ci. moduÅ‚ i komputer z otwartÄ… stro- z Nortona Commandera. Adres IP PoniewaÅ‚ nawet najkrÛtsza wia- nÄ… WWW, a to z kolei mogÅ‚oby serwera dostÍpowego moÅ‚e byĘ domośĘ, to kilkaset znakÛw AS- zniechÍciĘ wielu potencjalnych wyÅ›wietlany na ekranie moduÅ‚u CII - w przedstawionym przypad- eksperymentatorÛw do prÛb. po nawiÄ…zaniu poÅ‚Ä…czenia PPP. ku 979 znakÛw - to przeglÄ…danie W przypadku poczty moÅ‚na naj- Odpowiedni fragment programu jej na ekranie wyÅ›wietlacza moÅ‚- pierw wysÅ‚aĘ na swojÄ… skrzynkÍ w pliku tcp.c (opublikowany na liwe jest w sekwencjach zawiera- wiadomośĘ, a potem odczytaĘ jÄ… pÅ‚ycie CD-EP3/2002B) jest zapisa- jÄ…cych 40 znakÛw. Pierwsze 40 za pomocÄ… moduÅ‚u. Podczas tes- ny w postaci komentarza i wystar- znakÛw wyÅ›wietla siÍ po odebra- tÛw opisywany moduÅ‚ Å‚Ä…czyÅ‚ siÍ czy go odpowiednio zmodyfiko- niu, a kolejne po przyciÅ›niÍciu w zasadzie bez problemu z serwe- waĘ, aby taka informacja mogÅ‚a przycisku SW1. rem dostÍpowym Polboxu. Zda- byĘ wyÅ›wietlana. W pliku tcp.c rzaÅ‚y siÍ problemy przy logowa- naleÅ‚y teÅ‚ wpisaĘ nazwÍ i hasÅ‚o Podsumowanie niu na serwerze POP3 - serwer swojej skrzynki pocztowej, wpisaĘ Przedstawiony tutaj projekt jest odpowiadaÅ‚ komunikatem o zajÍ- numer telefonu i caÅ‚ośĘ skompilo- dośĘ nietypowy. Nie jest to projekt toÅ›ci. Jednak w czasie niewielkie- waĘ. Program zostaÅ‚ napisany dla zamkniÍtego urzÄ…dzenia, ale ra- go natÍÅ‚enia ruchu w Internecie kompilatora C firmy Keil. W przy- czej ìszkieletuî sÅ‚uÅ‚Ä…cego do opra- poÅ‚Ä…czenia nastÍpowaÅ‚y szybko padku innych kompilatorÛw nale- cowania wÅ‚asnych konkretnych i bezproblemowo. Do moduÅ‚u pod- Å‚y go odpowiednio zmodyfiko- aplikacji. Å‚Ä…czony byÅ‚ standardowy modem waĘ. StaraÅ‚em siÍ przedstawiĘ w ar- Zoltrix FM366 za pomocÄ… firmo- Mimo wielu sceptycznych gÅ‚o- tykule, w jak najbardziej przej- wego kabla RS232. Do poÅ‚Ä…czenia sÛw wydaje siÍ, Å‚e systemy ste- Elektronika Praktyczna 5/2002 49 Internetowy interfejs dla mikrokontrolera rowania czy akwizycji danych zmiany parametrÛw sterowania Uwaga! oparte na mikrokontrolerach nie- oddalonych od siebie sterowni- Kody ürÛdÅ‚owe do projektu odwracalnie wchodzÄ… w Å›wiat kÛw. Wystarczy za pomocÄ… e- internetowego interfejsu opubliko- wielkiej sieci. Przed konstruktora- mail'a wysÅ‚aĘ zbiÛr tekstowy za- waliÅ›my na CD-EP3/2002B. mi otwierajÄ… siÍ olbrzymie moÅ‚- wierajÄ…cy potrzebne dane. Nic nie liwoÅ›ci przesyÅ‚ania danych na stoi na przeszkodzie, aby zaimple- Wzory pÅ‚ytek drukowanych w for- duÅ‚e odlegÅ‚oÅ›ci. DziÍki S7600A, mentowaĘ protokÛÅ‚ SMTP i wysy- macie PDF sÄ… dostÍpne w Internecie i na pewno doskonalszym nastÍp- Å‚aĘ do serwera wiadomoÅ›ci o za- pod adresem: http://www.ep.com.pl/ com, aplikacje internetowe stajÄ… istniaÅ‚ych zdarzeniach lub jakiÅ› ?pdf/maj02.htm oraz na pÅ‚ycie siÍ Å‚atwe i tanie. Nawet przedsta- inny protokÛÅ‚ np. HTTP. CD-EP05/2002B w katalogu PCB. wione tutaj rozwiÄ…zanie moÅ‚e sÅ‚u- Tomasz JabÅ‚oÅ„ski, AVT Å‚yĘ na przykÅ‚ad do okresowej tomasz.jablonski@ep.com.pl Elektronika Praktyczna 5/2002 50