Go Down

Topic: problema con enc28j60 (Read 11 times) previous topic - next topic

Testato

#45
Feb 12, 2012, 11:41 pm Last Edit: Feb 13, 2012, 10:54 am by Testato Reason: 1

Ciao

ho appena scritto il primo post del tutorial sull'uso di tale driver con Arduino:
http://www.lucadentella.it/category/enc28j60-arduino/

vedi se ti può essere utile! ne seguiranno presto altri un po' più avanzati...

luca bellissimo lavoro, lo seguiro' perche' ho lo stesso shield.

ci aggiungerei all'inizio un paragrafo che spieghi la differenza hardware tra i due chip, che fa capire anche il perche' di certe scelte.
La grossa differenza sta nel fatto che non c'è il supporto in hardware del IP e TCP/UDP

quindi implementarlo occupa risorse ram/flash, per questo hanno scelto il wiz su arduino
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

relinquished

ora capisco perche su avr  non usano enc28j60 perche rallenta parecchio la mcu , a differenza invece dei pic che raggiungono  anche i 20 mips  e  quindi permette luso del enc , cmq ho scoperto che nell' enc ce una configurazione  che decide se e stato usato  per lo shift un nand oppure un buffer in base a questo   se viene usata una libreria  sviluppata su uno schift che monta 74hc08 non bsara compatibile con uno che monta un 74act125 poi si deve vedere se la scheda monta un connettore che ha dei trasformatori di accoppiamento oppure e un semplice connettore , e questo il problema principale  vedere tutto hardware che ce montato vicino all' enc

lucadentella

Ciao

non puoi fare un discorso così generico tra PIC e AVR... come vi sono PIC che superano tranquillamente i 20mips, così vi sono anche AVR; in più con Arduino riesci tranquillamente a gestire in software lo stack IP.

Il chip 74hc08 che vedi sulle board viene utilizzato per adattare i livelli logici del controller (3.3V) con quelli di Arduino (5V)... a prescindere comunque dalle questioni tecniche hai provato l'esempio base che ho scritto? Ancora non funziona?

L'unico vero elemento che può distinguere uno shield da un altro secondo me è il PIN a cui è collegato il ChipSelect dell'enc28j60: hai verificato se anche sul tuo shield è il PIN 10?
lucadentella.it

BrainBooster

P. S.
Il wiz5100 è limitato a 4 connessioni massime, l'enc28j60 no ;)

lucadentella


ci aggiungerei all'inizio un paragrafo che spieghi la differenza hardware tra i due chip, che fa capire anche il perche' di certe scelte.
La grossa differenza sta nel fatto che non c'è il supporto in hardware del IP e TCP/UDP


hai perfettamente ragione, ho aggiunto una piccola nota... http://www.lucadentella.it/2012/02/12/enc28j60-e-arduino-1/
A questa sera la parte su DHCP! ;)
lucadentella.it

astrobeed


ci aggiungerei all'inizio un paragrafo che spieghi la differenza hardware tra i due chip, che fa capire anche il perche' di certe scelte.
La grossa differenza sta nel fatto che non c'è il supporto in hardware del IP e TCP/UDP


La differenza è ancora più profonda, l'ENC28J60 contiene solo l'hardware per interfacciare ethernet, il WIZ contiene anche un microprocessore, con relativo software, che gestisce vari protocolli di rete in totale autonomia.

relinquished

Quote
Quote
a prescindere comunque dalle questioni tecniche hai provato l'esempio base che ho scritto? Ancora non funziona?


si ho provato il tuo esempio e lo stesso non mi funziona , ed ho controllato pure se il cs stava sul pin 10 e mi trovo quindi il problema sta da qualche altra parte

lucadentella

qual'è l'output della seriale? Ti si blocca da qualche parte nel config?
Prova ad aggiungere qualche Serial.print in più per vedere cosa fa...
lucadentella.it

relinquished

allora sulla compilazione va che una bellezza , per quanto riguarda i comandi non so neanche a che servono

lucadentella

non ho capito  :smiley-eek:
quando carichi lo sketch su Arduino e lo mandi in esecuzione, sulla seriale ti scrive qualcosa?
hai adattato l'indirizzo IP del mio esempio alla tua rete? Tra poco metterò anche uno sketch per usare il DHCP se hai un server attivo nella tua rete...
Per quanto riguarda i comandi, speravo di averli spiegati bene ma se hai domande chiedi pure!
lucadentella.it

Testato


hai perfettamente ragione, ho aggiunto una piccola nota...

grazie della citazione  :)
spero di poter testare fisicamente il tuo tutorial, serviva proprio questa cosa.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

relinquished

allora io lo sketch lo carico tranquillamente senza errori il problema e che cmq non mi funziona

lucadentella

ciao

"non funziona" cosa vuol dire? Ripeto: sul serial monitor ti dice qualcosa?
prova ad aggiungere qualche Serial.print() nei vari punti dello sketch per capire se comunque lo sketch gira. Con le periferiche SPI un classico motivo per cui lo sketch va in blocco è che il CS non viene correttamente pilotato: la libreria resta in attesa della risposta ad un comando, risposta che non arriverà mai semplicemente perché il chip SPI non ha mai ricevuto il comando (non è stato "selezionato")
lucadentella.it

relinquished

ma questo serial print a che serve

lucadentella

facciamo così: hai un DHCP server nella tua rete (tipo un router adsl o simili)? Se sì butta su Arduino questo sketch (che sarà l'esempio numero 2 del tutorial):

Code: [Select]
#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
byte Ethernet::buffer[700];

void setup () {

  Serial.begin(57600);
  Serial.println("DHCP Demo");

  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
else
   Serial.println("Ethernet controller initialized");
   
  if (!ether.dhcpSetup())
    Serial.println("Failed to get configuration from DHCP");
  else
    Serial.println("DHCP configuration done");
   
  ether.printIp("IP Address:\t", ether.myip);
  ether.printIp("Netmask:\t", ether.mymask);
  ether.printIp("Gateway:\t", ether.gwip);
}

void loop() {

  ether.packetLoop(ether.packetReceive());
}


collega Arduino alla rete, apri il serial monitor e posta quello che appare...
lucadentella.it

Go Up