20140204
arduino, enc28J60, ...
LU ET LIRE/
http://forum.arduino.cc/index.php/topic,27986.0.html
OFFICIL EXPLICATION/
http://www.atmel.com/dyn/resources/prod_documents/doc2585.pdf
EN DEUX MOTS
- SS est 10
- SI CS!= 10 il faut manager 10! comme SS
"déouyblement" de la libriire;
AtherCard?.h --> Ethercarde.h
suppression du define Ethernet
objet ENc28J60 aulieu de
Enc28J61?
ouf sur le 3.3V seul, a tourne sur les deux objets
fonctionne aussisisur la prise plug si 3.3 + pug, mais pas sur la prie 3.3V
quand j'empile le pluggabm;, conso 180 mA (110 sans le plug) avec alim externe, plus quie 20mA!
focntioone sur le pluggble
mis pas sur le 3.3V
en résumé, il semble que je ne puisse pas traverser le plug!
// work in progress
// cussing TXO Enc28J60
// http://antiguide.free.fr/wiki/wakka.php?wiki=ArduinoEnc28J60Stereo
#include <EtherCard.h>
#include <EtherCard_bis.h>
// interface to use
#define Ethernet ENC28J60_bis //
#define ETHER ethes // ether oro ethes !
// EtHERnet interface mac addreess, must be unique on the LAN
byte mymac[] = { 0,1,2,3,4,5 };
#define BUFSIZE 500
byte ENC28J60::buffer[BUFSIZE];
byte ENC28J60_bis::buffer[BUFSIZE];
uint32_t timer;
static int sent=0;
static int biglen;
int ICMP=1;
int TCP=0;
void setup () {
Serial.begin(9600);
Serial.println("\n[TcpDump]");
// 9 for 3.3V external 10 for plugged
if (ETHER.begin(sizeof Ethernet::buffer, mymac,9) == 0)
Serial.println( "Failed to access Ethernet controller");
Serial.println( "oK access Ethernet controller");
if (!ETHER.dhcpSetup())
Serial.println("DHCP failed");
ETHER.printIp("IP: ", ETHER.myip);
ETHER.printIp("GW: ", ETHER.gwip);
ETHER.printIp("DNS: ", ETHER.dnsip);
// if (!ETHER.dnsLookup(website)) Serial.println("DNS failed");
// EtHER.printIp("SRV: ", EtHER.hisip);
prtdump("andiamo",10);
}
void prhexa(int base,int nb, char *t){
for (int iii=0;iii<nb;iii=iii+1) {
Serial.print((byte) ETHER.buffer[base+iii]);
Serial.print(" ");
}
Serial.print("<-- ");
Serial.println(t);
}
void dump (int deb, int fin){
Serial.print("dump buffer a partir de " );
Serial.print(deb);
Serial.print(" à ");
Serial.println(fin);
for (int iii=deb;iii<fin;iii=iii+1) Serial.print ((char)ETHER.buffer[iii]);
Serial.println("");
Serial.println("------------------");
for (int iii=deb;iii<fin;iii=iii+1) {
Serial.print (ETHER.buffer[iii]);
Serial.print(" ");
}
Serial.println("------------------");
}
void prtdump(char *tt,int tout){
Serial.println("------------------");
Serial.println(tt);
Serial.println("------------------");
prhexa(0,6,"to mac ");
prhexa(6,6,"from mac ");
prhexa(12,2,"ehr type (8) ");
prhexa(14,1," version ");
prhexa(15,1," service ");
prhexa(16,2," big len ");
biglen=ETHER.buffer[16]*256+ETHER.buffer[17];
Serial.print(" "); Serial.print(biglen);Serial.println(" decimal ");
prhexa(18,2," id ");
prhexa(20,2," flag ");
prhexa(22,1," ttl ");
prhexa(23,1," next ");
if (ETHER.buffer[23]==1){ ICMP=1;Serial.println("ICMP");}
if (ETHER.buffer[23]==6) {TCP=1;Serial.println("TCP");}
prhexa(24,2," chk ");
prhexa(26,4," source ip ");
prhexa(30,4," dest ip ");
if (ICMP) {
prhexa(34,1," type 8 ");
prhexa(35,1," code 0 ");
prhexa(36,2," chk ");
prhexa(38,2," id 4019 ");
prhexa(40,2," seq num ");
dump (42,biglen);
}
if (TCP) {
prhexa(34,2," source port ");
prhexa(36,2," dest port ");
prhexa(38,4," seq num ");
prhexa(42,4," ack num ");
prhexa(46,2," hdr len ");
prhexa(48,2," reserved ");
dump (50,biglen);
}
Serial.println("");
Serial.println("------------------");
}
void loop () {
word q= ETHER.packetReceive();
if (q>64) {
prtdump("recu",q);
}
if (!sent){
sent=1;
Stash::prepare(PSTR("Bonjour mobnsieur kle directeur "));
prtdump("envoi",10);
ETHER.tcpSend();
}
word resu= ETHER.packetLoop(q);
if (resu>0){ Serial.print(resu);
Serial.println("");}
}