PcTuner.net
  • Home

  • Forum

  • Hardware

  • Tuning ed Elettronica

  • Software

  • Download

  • Blog

  • Shop

  • PcTunerUP

  • Cerca

  • Foto

Cerca in PcTuner

Ricerca Avanzata
Hardware
  • Processori

  • Schede madri e RAM

  • Schede madri

  • Memorie RAM

  • Schede video

  • Monitor

  • Audio

  • Schede audio

  • Diffusori

  • Accessori

  • Case e Alimentatori

  • Case

  • Alimentatori

  • Archiviazione

  • Hard Disk - SSD

  • Unit� esterne

  • Unit� ottiche

  • Personal computer

  • Server e Storage

  • Notebook e Palmari

  • Apple

  • Notebook

  • Palmari e cellulari e Tablet PC

  • Accessori

  • Periferiche e Hi Tech

  • Tastiere e Mouse

  • Audio/Video

  • Altro

  • Reti

Tuning ed Elettronica
  • Raffreddamento

  • Aria

  • Liquido

  • Estremo

  • Overclock

  • Processori

  • Schede madri e RAM

  • Schede video

  • Shark Oc Team

  • Progetti elettronici e PIC

  • Modding

Software
  • Programmi

  • Videogiochi

Aziende ed Eventi
  • Web e Business

  • Eventi

Partners
  • Lista dei partners



Interfaccia Ethernet con ENC28J60


English version: Article English version
Pubblicato il: 19.01.2007  A cura di:  Paolo Conte 
 
Processori PC - Le offerte del nostro shop

Inizializzazione

L’inizializzazione del modulo SPI avviene con queste due semplici istruzioni:

void encInit(){
  	TRISB = 0xFF;		// configurazione I/O di PORTB
  	TRISC = 0xD1;		// configurazione I/O di PORTC
  	PORTC = 0x00;
	
	SSPSTAT = 0x40;	
	SSPCON1 = 0x20;

In particolare il modulo MSSP viene abilitato e configurato in modalità "0,0", con clock pari a Fosc/4.

Inizializzazione ENC28J60

L’inizializzazione del controller prevede la configurazione di diversi registri, nonchè l’abilitazione alla ricezione.

#define RX_BUF_START	0
#define RX_BUF_END	6499	
#define	TX_BUF_START	6500
 ....
setBank(0);
writeReg(ERXSTL,   LOW(RX_BUF_START));		//
writeReg(ERXSTH,   HIGH(RX_BUF_START));		// inizio buffer di lettura
writeReg(ERXRDPTL, LOW(RX_BUF_END));		//
writeReg(ERXRDPTH, HIGH(RX_BUF_END));		// puntatore del buffer di lettura
writeReg(ERXNDL,   LOW(RX_BUF_END));		//
writeReg(ERXNDH,   HIGH(RX_BUF_END));		// fine buffer di lettura
writeReg(ETXSTL,   LOW(TX_BUF_START));		//
writeReg(ETXSTH,   HIGH(TX_BUF_START));		// inizio buffer di scrittura

Come già detto in precedenza, il buffer dell’ENC28J60 può essere diviso a piacere tra memoria di trasmissione e di ricezione. Per fare ciò si configurano i puntatori del buffer di ricezione; la memoria rimanente sarà il buffer di trasmissione.
I registri ERXST contengono l’indirizzo del primo byte del buffer di ricezione, mentre i registri ERXND l’ultimo byte.
In ERXRDPT, invece, risiede il puntatore di lettura della memoria RX, ovvero contrassegna una zona (insieme a ERXWRPT) che deve ancora essere elaborata dal PIC e quindi non può essere scritta; inizialmente il valore di questo indirizzo è uguale a ERXND (deve essere dispari secondo un problema descritto nell’Errata). Il registro ERXWRPT vale zero al reset ed è aggiornato automaticamente alla ricezione di un pacchetto.

setBank(2);
writeReg(MACON1, 0b01101);  		// MARXEN,  TXPAUS,  RXPAUS
writeReg(MACON3, 0b00110000); 		// Half Duplex, Padding 60byte, CRC
writeReg(MAIPGL, 0x12); 		//
writeReg(MAIPGH, 0x0C); 		//
writeReg(MABBIPG,0x12); 		// Inter-Packet Gap

Questi registri configurano il modulo MAC. Attraverso il registro MACON1 si abilitano il modulo MAC e la ricezione/trasmissione di trame di pausa.
Con il registro MACON3 si sceglie la modalità Duplex (Half o Full) del modulo MAC che deve essere impostata nello stesso modo anche nel modulo PHY; inoltre in questo registro sono presenti alcune configurazioni sul Padding automatico ed il calcolo del CRC.
I registri MAIPG e MABBIPG contengono i valori delle pause tra pacchetti; quelli presenti nel codice sono i valori standard.

writeReg(MAMXFLL, LOW(1500));
writeReg(MAMXFLH, HIGH(1500));

Nei registri MAXFL (Max Frame Length) viene salvata la massima dimensione consentita per un pacchetto; il controller può essere configurato in modo tale che si rifiuti di inviare un pacchetto che supera questo limite.

#define MY_MAC1     0x00
#define MY_MAC2     0x04
#define MY_MAC3     0xA3
#define MY_MAC4     0x00
#define MY_MAC5     0x00
#define MY_MAC6     0x00
  ....
setBank(3);
writeReg(MAADR1, MY_MAC1);
writeReg(MAADR2, MY_MAC2);
writeReg(MAADR3, MY_MAC3);
writeReg(MAADR4, MY_MAC4);
writeReg(MAADR5, MY_MAC5);
writeReg(MAADR6, MY_MAC6);

L’indirizzo MAC del nostro dispositivo viene salvato nei registri MACADR; quest’ultimi vengono solamente utilizzati dal filtro per respingere pacchetti non destinati al controller, quindi l’indirizzo non viene inserito automaticamente nei pacchetti da inviare.

writePHY(PHCON2, 0b0000000100000000);	// disabilita il loopback
writePHY(PHCON1, 0);			// abilita il PHY

setBank(1);
writeReg(ERXFCON, 0b10100001); 		// imposta i filtri di ricezione
BFSReg(ECON1, 0b100);         		// abilita la ricezione

Con quest’ultimo spezzone termina l’inizializzazione del controller. Il modulo PHY non ha molte opzioni da configurare, le uniche operazioni che vngono effettuate sono la disabilitazione del LoopBack (usato per fare test) e l’abilitazione del modulo.
I filtri sono settati in modo tale da accettare solo pacchetti destinati all’indirizzo MAC configurato e pacchetti di broadcast.




« Indietro
1 ... 3 4 5 67 8 9 ... 13
Avanti »
Iscriviti per lasciare un commento | Condividi/Email

Pagina 1: Interfaccia Ethernet con ENC28J60 - Introduzione
Pagina 2: Interfaccia Ethernet con ENC28J60 - Ethernet
Pagina 3: Interfaccia Ethernet con ENC28J60 - Il controller ENC28J60 - 1
Pagina 4: Interfaccia Ethernet con ENC28J60 - Il controller ENC28J60 - 2
Pagina 5: Interfaccia Ethernet con ENC28J60 - Comandi SPI
Pagina 6: Interfaccia Ethernet con ENC28J60 - Inizializzazione
Pagina 7: Interfaccia Ethernet con ENC28J60 - Il RevID
Pagina 8: Interfaccia Ethernet con ENC28J60 - Ricezione e Trasmissione di pacchetti - 1
Pagina 9: Interfaccia Ethernet con ENC28J60 - Ricezione e Trasmissione di pacchetti - 2
Pagina 10: Interfaccia Ethernet con ENC28J60 - Internet Protocol Suite
Pagina 11: Interfaccia Ethernet con ENC28J60 - Il protocollo ARP
Pagina 12: Interfaccia Ethernet con ENC28J60 - Il protocollo IP
Pagina 13: Interfaccia Ethernet con ENC28J60 - Il protocollo ICMP

Articoli correlati

Questo articolo descrive la realizzazione, dal punto di vista software, di un sistema di monitoraggio di grandezze quali pressione e temperatura di olio, acqua, gas di scarico ecc. offrendo la possibilità di visualizzarne i valori di picco e impostare soglie di allarme. Progetto AutoGauge
Raccolta di utili tooltip per avere sempre sottomano le informazioni su registri e periferiche dei PIC senza sfogliare tutto il datasheet. Abbiamo aggiunto delle tips riguardanti il funzionamento del modulo USART e degli esempi di codice per il suo utilizzo. Pic in pillole
L'intento di questa serie di articoli è quella di realizzare un interfaccia Ethernet per microcontrollori PIC, sfruttando il controller ENC28J60 di Microchip. L'ogetto della nuova lezione è il protocollo ICMP. Interfaccia Ethernet con ENC28J60
Realizzazione di un semplice pannello di controllo a due velocità per quattro ventole controllato da un PIC 16F84. Fanbus Baybus con PIC (2a Ed.)
Breve introduzione alla libreria Spi Ethernet che permette l'utilizzo del controller ENC28J60 con il compilatore mikroC La libreria SPI Ethernet in MikroC
  • Tutti gli articoli

Notizie correlate
  • Guida: comandi al volante per comandare il PC...
  • Progetto elettronico AutoGauge: guida passo p...
  • Guida alla programmazione dei PIC in assembly...
  • Filtro di rete
  • UPS SerialKiller: guida alla costruzione di u...
  • Pic in pillole
  • Fugger + Yorkfield all’IDF, ed è subito overc...
  • Tutte le news
Ultimi post dal Blog
  • L'iPhone 5 non ripeterà il successo dei suoi predecessori

  • Con Ubuntu, Linux entra negli smartphone

  • Windows 8 RT: HTC torna ad essere della partita!

  • Nokia e Microsoft puntano sul mercato cinese per salvarsi

  • Perché Microsoft rischia un clamoroso effetto domino?

  • Tutti i post dal Blog



Ultime news in Tuning
  • NVIDIA sulla Luna: importante contributo alla...
  • AMD APU «Trinity»: pubblicati i test della pr...
  • Intel Ivy Bridge promette l’uso di RAM ultrav...
  • Asus Radeon HD 7970 DirectCU II: un mostro di...
  • Com’è fatta e come si smonta la nuovissima co...
  • Primi benchmark sui processori Ivy Bridge di ...
  • Intel presenta le nuove CPU Sandy Bridge-E su...
  • Tutte le news
Ultimi articoli in Tuning
AMD presenta la nuova CPU Piledriver, evoluzione di Bulldozer, migliorata sotto diversi aspetti dagli ingegneri di Sunnyvale. Scopriamo assieme se i punti deboli della precedente architettura sono stati sistemati...
AMD FX-8350: 8 core Piledriver a 4.0GHz. Benchmark e Overclock
Dopo la presentazione della GTX 680 AMD ha perso lo scettro di regina delle prestazioni. Con la AMD Radeon HD 7970 GHz Edition ora tenta di riconquistare il trono... ci riuscirà?
AMD Radeon HD 7970 GHz Edition: Tahiti XT con una marcia in più!
A confronto tre schede madri basate sul nuovo chipset Intel Z77, cuore della piattaforma Ivy Bridge. Andiamo a scoprire qual è la migliore...
Roundup mainboard Intel Z77: ASUS, MSI e SAPPHIRE si danno battaglia
Dopo la GeForce GTX 680, NVIDIA ha deciso di raddoppiare e creare questo mostro composto da ben due chip GK104. Andiamo a scoprire le elevate prestazioni che questa scheda è in grado di offrire.
NVIDIA GeForce GTX 690: due cuori che battono in sincronia!
La Radeon HD 7870 chiude il cerchio della nuova famiglia di schede video AMD, introducendo un modello di fascia media che farà la gioia dei videogamers.
AMD Radeon HD 7870: prestazioni e consumi da prima della classe
  • Tutti gli articoli
Home - Newsletter - RSS - Pubblicità - Contattaci - Collabora con noi - Direttore responsabile e collaboratori

Copyright © 2010 - Master New Media S.r.l. a socio unico - P.I. 02947530784.
Tutti i diritti di proprietà letteraria e artistica sono riservati - Privacy

www.pctuner.net testata telematica registrata presso il Tribunale di Torino, n. 39 del 07.05.2008, Editore Master New Media S.r.l.