Table of Contents

(Old) Laboratorul 5: Webserver

1. Specificatii ENC28J60

ENC28J60 este un controller Ethernet cu interfata SPI. Este special proiectat pentru a fi conectat prin SPI la un controller, oferind acestuia o interfata Ehernet. ENC28J60 indeplineste specificatiile IEEE 802.3 si ofera urmatoarele servicii:

ENC28J60 incorporeaza urmatoarele module:

1.1. Organizarea memoriei

Memoria lui ENC28J60 este implementata ca RAM static si se imparte in 3 tipuri:

1.1.1. Registre de control

Acestea asigura interfata principala intre controller-ul gazda si logica controller-ului Ethernet. Scriere si citirea acestor registre se poate face in mod direct de controller-ul gazda utilizand SPI, acesta avand astfel controlul asupra operatiilor executate de ENC28J60.

Registrele de control sunt in general grupate in registre de tip ETH, MAC si MII (Media Independent Interface). Ne putem da seama din ce categorie face parte un registru uitandu-ne la prefixul numelui sau.

Memoria unde sunt mapate registrele de control este partitionata in 4 bank-uri (vezi tabelul 3-1, pagina 12 din Data Sheet-ul ENC28J60), selectabile prin intermediul bitilor BSEL1:BSEL0 din registrul ECON1. Fiecare bank are 32 bytes, deci putem adresa registrii in interioul unui bank folosind o adresa de 5 biti. Deoarece registrii EIE, EIR, ESTAT, ECON2 si ECON1 sunt foarte des utilizati, acestia au fost mapati in fiecare bank, pentru a facilita accesul la ei.

Cel mai important registru dintre cei mentionati in tabelul de mai sus este ECON1. Biti importanti din acest registru sunt:

5.1.2. Ethernet buffer

Buffer-ul Ethernet reprezinta acea zona de memorie in/din care ENC28J60 va scrie/citi pachetele receptionate sau transmise. Capacitatea buffer-ului este de 8Kbytes si este impartit in doua zone distincte pentru pachete receptionate si transmise. Dimensiunea si locatia celor doua zone de memorie sunt configurabile de catre controller-ul gazda prin intermediul SPI.

1.1.3. Registri PHY

Permit configurarea si controlul modulului Nivel Fizic. Spre deosebire de registrii de control si de buffer-ul Ethernet, registrii PHY nu pot fi modificati in mod direct de controller-ul gazda prin SPI. Pentru a avea acces la acestia, controller-ul ii poate accesa indirect prin intremediul registrilor de control de tip MII.

1.2. Implementarea SPI la ENC28J60

Controller-ul Ethernet ENC28J60 este proiectat pentru a se conecta cu usurinta la portul de SPI al celor mai multe microcontroller-e.

Functionarea ENC28J60 depinde in totalitate de comenzile primite de la controller-ul gazda, de aceea in continuare ne vom uita la forma pe care o au aceste comenzi SPI.

Generalitati legate de comenzile SPI:

Sa analizam urmatoarele comenzi:

2. Tema laboratorului

Arhiva de lucru: lab6_skel2.zip Soluție: lab5_sol.zip Exemplu care chiar merge: exemplu_webserver.zip Datasheet ENC28J60 39662b.pdf

In acest laborator vom folosi ATMega324 pentru a implementa o interfata web. Pagina web afisata contine informatii despre ip-ul microcontroller-ului si al clientului, ora curenta, up-time si se pot controla 8 led-uri. Pentru a ne conecta la reteaua laboratorului vom folosi chip-ul ENC28J60 pe post de slave, in timp ce ATMega16 va fi master iar conexiunea dintre ei va fi de tip SPI. Pentru a afisa pagina web avem nevoie de o implementare a protocolului TCP. Pentru a minimiza dimensiunea codului implementarea va fi simplista (stateless TCP) si nu va permite fragmentarea pachetelor. Chiar si asa codul devine relativ complex. Cele mai importante parti sunt:

TODO-uri: