Sida 1 av 1

Applikation på AVR ENC28J60 slutar svara

Postat: 19 april 2020, 12:42:15
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;

}

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 19 april 2020, 15:13:14
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.

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 19 april 2020, 19:10:23
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/

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 20 april 2020, 09:47:51
av Icecap
Vad jag vet har Microchip en hel del på sin site om dessa problem - som är väl kända.

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 20 april 2020, 20:57:12
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.

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 20 april 2020, 21:56:10
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.

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 21 april 2020, 10:49:12
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....

Re: Applikation på AVR ENC28J60 slutar svara

Postat: 21 april 2020, 12:03:38
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.