Applikation på AVR ENC28J60 slutar svara

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Applikation på AVR ENC28J60 slutar svara

Inlägg av PaNiC »

Har i dagarna pillat med en http://tuxgraphics.org/electronics/2013 ... k-2x.shtml .
Har anpassat till annan display med mera. Ett problem som fanns med från början är att webservern slutar svara efter ett tag. Har tidigare provat ett helt annat ENC28J60-baserat projekt med helt annan kod och modul, med samma fenomen, kommunikationen dör. Det får mig att tro att det är något generellt man måste stryka medhårs för att det ska funka. I felsökningssyfte satte jag en soft reset av ENC på en femminuters timer, men då får jag inget svar på DHCP-requesten, trots att det är exakt samma kod jag kör vid kallstart. Vid hård reset hoppar det hela igång igen. Vet inte riktigt var jag ska börja leta. Förslag?

Kod: Markera allt

void eth_init(void){

    uint16_t plen=0;
	int8_t i;

    enc28j60Init(mymac);
    enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
    _delay_loop_1(0); // 60us

    enc28j60PhyWrite(PHLCON,0x476);
    if(ethrefresh == 2){
    	FB_clear();
    	FB_writestringram(2,0,"Waiting for");
		FB_writestringram(2,8,"ETH link up");
		LCD_update(1);
    }
	_delay_ms(1000);
    while (enc28j60linkup()==0){
            // wait a bit then try again:
            plen=0xFFF;
            while(plen){
                    _delay_loop_1(0); // 60us
                    plen--;
            }
    }

    // we need the timer for the dhcp-resend tick:

    if(ethrefresh == 2){
		FB_clear();
		FB_writestringram(0,0,"Waiting for");
		FB_writestringram(0,8,"DHCP answer");
		LCD_update(1);
    }

    timer_init();
    sei(); // interrupt on, clock starts ticking now

    // DHCP handling. Get the initial IP
    i=0;
    init_mac(mymac);
    while(i==0){
            plen=enc28j60PacketReceive(BUFFER_SIZE, buf);
            buf[BUFFER_SIZE]='\0';
            i=packetloop_dhcp_initial_ip_assignment(buf,plen,mymac[5]);
    }
    // we have an IP:
    dhcp_get_my_ip(myip,netmask,gwip);
    client_ifconfig(myip,netmask); // we do not need to call init_udp_or_www_server if the client is already configured and we can use the server functions now.

    mk_net_str(gStrbuf,myip,4,'.',10);
	if(ethrefresh == 2){
	    FB_clear();
		FB_writestringram(0,0,"My IP:");
		FB_writestringram(0,8,gStrbuf);
		LCD_update(0);
		delay_sec=2; //we use this to change the display only in 5 sec from now
	}
	// web server listen port:
    www_server_port(MYWWWPORT);

    ethrefresh = 0;

}
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Icecap »

Det är något med "ENC28J60" som triggar ett minne hos mig om att det finns en bugg i den som man ska ta hand om i mjukvaran.

Jag vill därför rekommendera att läsa databladet OCH errata till detta chip, där ska det finnas data om vad och hur.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Rick81 »

Jag höll på ett tag med ENC28J60 och hade samma problem att den helt slumpmässigt la av. Kollade erata och implementerade workaround efter workaround....till slut tröttnade jag. Känns som nåt är allvarligt fel i den kretsen, kanske därför den är så billig...

Om nån lyckats få den stabil vore det intressant veta hur....

Skulle rekommendera att istället kolla:
https://www.wiznet.io/product/serial-to-ethernet/
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Icecap »

Vad jag vet har Microchip en hel del på sin site om dessa problem - som är väl kända.
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av PaNiC »

Icecap: Tänker du på något annat än http://ww1.microchip.com/downloads/en/D ... 80349c.pdf ? För det är vad jag hittar i ämnet. Men det är ju mest errata med förklaringar.
Där finns ju ett antal tänkbara kandidater, men om Rick81 redan testat det mesta här borde det finnas någon annan lösning.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Icecap »

Jag har aldrig själv jobbat med den krets, delvist av den grund som denna tråd handlar om.

Det verkar dock vara många som har löst problemen på något sätt så det borde vara möjligt att lösa.
Jag vet bara att det är en hel del saker som ska göras ut över att bara sätta upp den o läst/skriva.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Rick81 »

Det verkar dock vara många som har löst problemen på något sätt så det borde vara möjligt att lösa.
Var hittar du dem som löst det?

Kan tillägga att för min del gjorde jag det bara som hobbyprojekt så jag satt inte med ENC28J60 i veckor....
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Applikation på AVR ENC28J60 slutar svara

Inlägg av Icecap »

Jag har inte hittat dom, jag läste om ATT det fanns problem och att de kunde lösas men att det knappast var enkelt om man ville ha ett "rent" programmeringsmiljö.

Det var saker som att respondera på interrupt (hänger fint ihop med enkel utveckling) MEN även pollningar efter en viss tid och annat som ville ge en synnerlig komplicerat funktion.

Då kom jag fram till att det inte var värd tiden och att det finns bättre kretsar, förvisso dyrare men ack så mycket mer tidseffektiva att jobba med.

Och där slutade jag min resa med dom.
Skriv svar