TCP IP i mikrokontrolery, Elektronika, TCP IP i mikrokontrolery

[ Pobierz całość w formacie PDF ]
K U R S
TCP/IP
i mikrokontrolery, część 1
Jak mówi stare przysłowie:
„co dwie głowy to nie jedna”.
A gdy głów tych będą tysiące,
a nawet miliony? Aż strach
pomyśleć. Tymczasem taką
globalną siłę intelektu mamy
dziś w zasięgu ręki, ba – nawet
z niej korzystamy. Wszystko
za pośrednictwem terabajtów
informacji, które w każdej
sekundzie przesyłane są
olbrzymią siecią informatyczną
oplatającą całą kulę ziemską.
większych problemów zastosować go
we własnych aplikacjach. Wszystkie
programy zawarte w niniejszym arty-
kule zostały przetestowane na zesta-
wie uruchomieniowym Easy TCP/IP,
w którym zastosowano mikrokontroler
ATmega162. Przykładowe programy
zostały napisane w Bascomie AVR.
Efekty działania niektórych aplika-
cjach można obserwować na wy-
świetlaczu LCD zestawu, komputero-
wym terminalu komunikującym się
z zestawem przez łącze RS232 oraz
za pośrednictwem programu
easytc-
pip.exe
. Do poprawnej kompilacji
programów wymagana jest biblioteka
tcpip.lbx
. Wykorzystywane z tej bi-
blioteki instrukcje będą sukcesywnie
opisywane w trakcie przedstawiania
przykładowych aplikacji. Będą to:
– aplikacja testująca poprawność
konfiguracji zestawu Easy TCP/IP,
– aplikacja umożliwiająca wysyła-
nie wiadomości e–mail po naci-
śnięciu przycisku,
– aplikacja umożliwiająca wysyła-
nie wiadomości e–mail z autory-
zacją po naciśnięciu przycisku,
– aplikacja umożliwiająca odbiera-
nie wiadomości e–mail z infor-
macją o włączeniu bądź wyłącze-
niu diody LED,
– aplikacja umożliwiająca pracę
jako serwer, do którego może
się dołączyć do 4 klientów,
– aplikacja umożliwiająca pracę
jako klienta łączącego się do
serwera,
– aplikacja komunikującą się przez
protokół bezpołączeniowy UDP,
– aplikacja serwera HTTP, umożli-
wiająca odczyt temperatury oraz
sterowanie diodą LED przez
przeglądarkę stron www.
Protokoły TCP/IP oraz UDP
TCP to skrót od
Transmission
Control Protocol
, natomiast IP to skrót
od
Internet Protocol
. Każde urządzenie
w sieci może mieć przypisany adres
IP, który będzie go identyfikował (dba
o to bezpołączeniowy protokół IP).
W TCP/IP do komunikacji pomiędzy
aplikacjami używane są tak zwane
gniazda, które można porównać do
kanałów komunikacyjnych. Aby sko-
munikować się z danym serwerem
lub klientem należy w pierwszej kolej-
ności otworzyć gniazdo. Należy także
wspomnieć o portach, które są punk-
tami końcowymi połączeń związanymi
z aplikacjami. Numer portu może się
zawierać w przedziale od 0 do 65535,
przy czym wiele portów jest używa-
nych przez konkretne usługi (np.
HTTP używa portu 80). Serwerem jest
aplikacja, która oczekuje na połączenie
klientów, natomiast klient jest aplika-
cją łączącą się do serwera. Na przy-
kład klientem jest aplikacja łącząca
się do serwera poczty, natomiast ser-
werem jest aplikacja HTTP, do której
klienci łączą się przez przeglądarkę.
TCP jest protokołem gwarantującym
dostarczenie danych. W tym protokole
oczekiwane jest potwierdzenie odbio-
ru przesyłanych danych przed rozpo-
częciem transmisji kolejnych. Inaczej
jest w protokole UDP (
User Datagram
Protocol
). Jest to protokół bezpołącze-
niowy. Nie gwarantuje on dostarcze-
nia danych. Nie ma w nim żadnego
mechanizmu sprawdzającego czy dana
aplikacja otrzymała dane. Przesyłanie
danych za pośrednictwem UDP ge-
neruje więc mniejszy ruch w sieci
niż przesyłanie przez TCP. W ramach
przykładu z wykorzystaniem UDP zo-
stanie przedstawiony prosty chat.
Upowszechnienie się Internetu
było tylko kwestią czasu. Dziś pra-
wie każdy użytkownik komputera
ma w swoim domu do niego dostęp.
Coraz więcej urządzeń domowego
użytku pozornie nie mających naj-
mniejszego związku z globalną siecią
(np. tuner, lodówka) ma możliwość
dostępu do Internetu. Celem niniej-
szego artykułu jest przedstawienie
metod dołączania do Internetu wła-
snych, mniej rozbudowanych urzą-
dzeń. W szczególności przedstawione
zostaną aspekty programowe wyko-
rzystania różnych protokołów siecio-
wych we własnych aplikacjach.
Informacje podstawowe
TCP/IP jest rodziną wielu proto-
kołów (TCP, UDP i innych). Wszyst-
kie standardy protokołu TCP/IP są
opublikowane w dokumentach RFC
dostępnych na stronie
www.ietf.org/
rfc.html
. Więcej informacji można
uzyskać z książek na temat TCP/IP.
Dostosowanie aplikacji mikropro-
cesorowych do współpracy z Inter-
netem czy ogólnie siecią Ethernet
jest stosunkowo łatwe przy wyko-
rzystaniu układu W3100A firmy
Wiznet. Układ ten posiada 4 nieza-
leżne kanały, co stwarza możliwość
dołączenia 4 klientów. Wbudowana
pamięć RAM pełni funkcję bufora
dla otrzymywanych i wysyłanych da-
nych. Układ W3100A jest dostępny
w obudowie SMD, ale wykorzystując
gotowy moduł IIM7000A można bez
Elektronika Praktyczna 4/2006
89
K U R S
List. 1.
‘Program PING - konfiguracja modułu TCP/IP
‘Easy TCP/IP
$regfile = „M162def.dat” ‘typo mikrokontrolera
$crystal = 4000000 ‘czestotliwosc zegara
$xa ‘wlaczenie dostepu do zewnetrznej magistrali mikrokontrolera
$hwstack = 50 ‘wartosc stosu
$swstack = 50 ‘wartosc stosu
$framesize = 50 ‘wartosc ramki
‘stałe dla modułu TCP/IP
Const Sock_stream = $01 ‘Tcp
Const Sock_dgram = $02 ‘Udp
Const Sock_ipl_raw = $03 ‘Ip Layer Raw Sock
Const Sock_macl_raw = $04 ‘Mac Layer Raw Sock
Const Sel_control = 0 ‘Confirm Socket Status
Const Sel_send = 1 ‘Confirm Tx Free Buffer Size
Const Sel_recv = 2 ‘Confirm Rx Data Size
Const Sock_closed = $00 ‘Status Of Connection Closed
Const Sock_arp = $01 ‘Status Of Arp
Const Sock_listen = $02 ‘Status Of Waiting For Tcp Connection Setup
Const Sock_synsent = $03 ‘Status Of Setting Up Tcp Connection
Const Sock_synsent_ack = $04 ‘Status Of Setting Up Tcp Connection
Const Sock_synrecv = $05 ‘Status Of Setting Up Tcp Connection
Const Sock_established = $06 ‘Status Of Tcp Connection Established
Const Sock_close_wait = $07 ‘Status Of Closing Tcp Connection
Const Sock_last_ack = $08 ‘Status Of Closing Tcp Connection
Const Sock_fin_wait1 = $09 ‘Status Of Closing Tcp Connection
Const Sock_fin_wait2 = $0a ‘Status Of Closing Tcp Connection
Const Sock_closing = $0b ‘Status Of Closing Tcp Connection
Const Sock_time_wait = $0c ‘Status Of Closing Tcp Connection
Const Sock_reset = $0d ‘Status Of Closing Tcp Connection
Const Sock_init = $0e ‘Status Of Socket Initialization
Const Sock_udp = $0f ‘Status Of Udp
Const Sock_raw = $10 ‘Status of IP RAW
$lib „tcpip.lbx” ‘zalaczenie bibliotego TCP/IP
Enable Interrupts ‘odblokowanie sprzetowych przerwan
Config Lcd = 16 * 2 ‘konfiguracja rozdzielczosci wyswietlacza LCD
Config Lcdpin = Pin , Db4 = Pinb.0 , Db5 = Pinb.1 , Db6 = Pinb.2 , Db7 = Pinb.3 , E = Pinb.4 , Rs = Pinb.5 ‘konfiguracja
linii wyswietlacza LCD
Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.8 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport
= 1000 , Tx = $55 , Rx = $55 ‘konfiguracja modułu TCP/IP
Cursor Off ‘kursor wyłaczony
Cls ‘czysc LCD
Lcd „IP = 192.168.1.8” ‘wyswietlenie na LCD numeru IP przypisanego Easy TCP/IP
Do ‘poczatek nieskonczonej petli do-loop
Loop
End ‘koniec programu
Konfiguracja
Aby było można komunikować
się z aplikacją wykorzystującą mo-
duł IIM7000A, należy odpowiednio
skonfigurować sieć. Od tego bę-
dzie zależeć także dostęp do In-
ternetu. Podczas testów przykłado-
wych aplikacji zestaw Easy TCP/IP
podłączono do routera z wbudowa-
nym przełącznikiem. Do podłącze-
nia zestawu do przełącznika można
użyć typowego przewodu sieciowe-
go bez przeplotu. Do przełącznika
podłączono także komputer, którego
adres IP ustawiono na 192.168.1.2,
maskę: 255.255.255.0, a bramę na
192.168.1.1. Zestaw Easy TCP/IP skon-
figurowano tak, aby posiadał adres
IP: 192.168.1.8, maskę 255.255.255.0
oraz bramę 192.168.1.1. Taka konfi-
guracja umożliwiła zestawowi TCP/IP
dostęp nie tylko do sieci Ethernet,
ale i do Internetu.
nej obsługi pamięci. Umożliwia to
dyrektywa
$xa
. Dyrektywy
$hwstack
,
$swstack
i
$framesize
ustalają warto-
ści stosów i ramki. W dalszej części
programu zostają zdefiniowane stałe,
które ułatwiają czytelność programu.
Określonym nazwom zostają przy-
pisane wartości liczbowe. Aby był
dostęp do procedur obsługi modu-
łu TCP/IP, należy załączyć potrzeb-
ną bibliotekę
tcpip.lbx
. Umożliwia
to dyrektywa
$lib
. Następnie zostaje
odblokowany globalny system prze-
rwań. Moduł TCP/IP korzysta tylko
z jednego źródła zewnętrznego prze-
rwania. W pierwszej kolejności kon-
figurowany jest wyświetlacz LCD
zestawu Easy TCP/IP. W dalszej ko-
lejności następuje konfiguracja mo-
dułu TCP/IP instrukcją
config tcpip
.
Pierwszym parametrem tej instrukcji
jest określenie rodzaju przerwania,
z którego korzysta moduł TCP/IP.
W tym przypadku wykorzystywa-
na jest zewnętrzna linia przerwania
INT0. Drugim parametrem jest adres
MAC (
Media Access Control
) modu-
łu. Jest to adres fizyczny danego
urządzenia. W tym przypadku MAC
będzie adresem układu TCP/IP. MAC
jest zazwyczaj złożony z 12 cyfr
szesnastkowych (6 bajtów). Adresy
MAC urządzeń pracujących w da-
nej sieci nie mogą być identyczne.
W module TCP/IP adres MAC zapi-
sano w postaci dziesiętnej. Parametr
IP określa adres IP modułu w sieci,
który także powinien być unikatowy.
Tak więc moduł TCP/IP będzie po-
siadał adres IP 192.168.1.8. Kolejny
parametr SUBMASK określa maskę
sieci, która w tym przypadku wyno-
si 255.255.255.0. Następny parametr
GATEWAY to adres bramy (wykorzy-
stywanej do dostępu do Internetu),
którą ustalono na 192.168.1.1. Ad-
res bramy jest zależny od dostaw-
cy Internetu. Parametr LOCALPORT
to domyślna wartość portu, którą
ustalono na 1000. Domyślna war-
tość portu może być wykorzystywa-
na podczas pracy modułu w trybie
klienta. Za pomocą parametrów TX
oraz RX ustalane są wielkości bufo-
ra odpowiednio nadawczego i odbior-
czego dla każdego z 4 gniazd. Całko-
wity bufor w module TCP/IP wykosi
8 kB. Dla każdego z gniazd w baj-
cie określającym wielkość bufora,
przypisano dwa bity. Dwa najmniej
znaczące bity określają wielkość bu-
fora dla gniazda 0, a dwa bardziej
znaczące bity wielkość bufora dla
gniazda 3. Wartość bitów 00 powo-
duje ustawienie bufora na rozmiar
1024 bajtów, 01 na 2048 bajtów,
10 na 4096 bajtów, a 11 na 8192
bajtów. Cały dostępny bufor można
rozdzielić na każde z gniazd. Czy-
li dla danych odbieranych i nada-
wanych na każde z gniazd, będzie
przypadał bufor 2048 bajtów. Aby
było to możliwe parametry TX oraz
RX powinny mieć przypisane war-
Aplikacja testująca
poprawność komunikacji
z modułem TCP/IP
Do sprawdzenia poprawności ko-
munikacji z modułem TCP/IP moż-
na wykorzystać dowolny program
ping
, który wysyła pakiet kontrolny
do układu o danym adresie IP. Na
list.
1
przedstawiono program kon-
figurujący moduł TCP/IP. Aby była
możliwa komunikacja pomiędzy mi-
krokontrolerem, a modułem TCP/IP,
należy włączyć dostęp do zewnętrz-
90
Elektronika Praktyczna 4/2006
K U R S
Rys. 1.
poprawność komunikacji z modu-
łem TCP/IP, należy wydać następu-
jące polecenie:
ping.exe 192.168.1.8
Na
rys. 1
. przedstawiono rezul-
tat działania programu
ping
z pra-
widłową odpowiedzią modułu TCP/
IP. W przypadku braku odpowiedzi
z modułu TCP/IP, problem może
być ze źle skonfigurowaną kar-
tą sieciową w komputerze, w złym
przewodzie połączeniowym lub
z samym układem wykorzystującym
moduł TCP/IP. W przypadku otrzy-
mania odpowiedzi istnieje 99%
pewności, że moduł TCP/IP z dołą-
czonym do niego mikrokontrolerem
działa poprawnie.
Omówieniem przykładowych
aplikacji zajmiemy się w kolejnych
częściach artykułu.
Marcin Wiązania, EP
marcin.wiazania@ep.com.pl
tości &H55 (&B01010101). Umożliwi
to korzystanie ze wszystkich 4 do-
stępnych gniazd. Oczywiście przy
wykorzystywaniu mniejszej liczby
gniazd istnieje możliwość zwiększe-
nia bufora dla danego gniazda kosz-
tem bufora innego gniazda.
W dalszej kolejności w progra-
mie na wyświetlaczu LCD jest wy-
świetlany adres IP modułu TCP/IP,
po czym program przechodzi do
wykonywania nieskończonej pętli.
Poprawność konfiguracji ikomuni-
kację można sprawdzić programem
ping
, który jest dostępny w prawie
każdym systemie operacyjnym. Pro-
gram
ping
wysyła pakiet pod okre-
ślony adres IP. Adresowane urzą-
dzenie powinno zwrócić otrzymane
dane z powrotem. Aby sprawdzić
Dodatkowe informację:
ARM7TDMI
®
ADuC7000
…uk³ady i narzêdzia uruchomieniowe
- ju¿ dostêpne !
ANALOG
DEVICES
uznany dostawca
rozwi¹zañ dla
ANALOG
DEVICES
teraz, jako partner
www.analog.com/dsp/3rdparty
ALFINE P.E.P.
ul. Poznañska 30-32 • 62-080 Tarnowo Podgórne
tel.: (61) 89 66 934, 89 66 936 • fax: (61) 81 64 414, 81 64 076
e-mail: analog@alfine.pl • http: //www.alfine.pl
AlfineTeam
likeneverbefore
Designed by
Electro-Vision
Elektronika Praktyczna 4/2006
91
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shinnobi.opx.pl