Poll: has anyone had success with enc28j60?

(If this is the wrong place to put this, please let me know and I'll move it)
I'm taking a poll about the ENC28J60 to hopefully help other people as well as myself.
The poll is here due to the fact that I couldn't find a poll to use on this forum. It is just 3 questions.
http://www.surveymonkey.com/s/H9CQZRS

I've been trying for a couple weeks to get an ENC28J60 ethernet shield to work reliably. I've tried many libraries, examples, custom code, and cannot get expected results to last for longer than a matter of hours. Normally the ENC28J60 just stops processing web requests but the arduino is still happily chugging along which I can see from the serial output.
I'm curious if anyone else has had success for longer than a day? and what libraries/wrappers these people are using to get good results.
I'm hoping the results of the poll will help me, and others, to decide if it's worth the time to try and get this shield to work, or possibly scrap it and get a wiznet w5100. Or even an etherten for those who have not bought an arduino yet.

I made the results of the poll public but survey monkey would not let me make comments public. So please leave your comments in this forum.
This is a direct link to the results that you could also see by taking the poll

Yes, I have it working flawlessly now for a couple weeks non-stop. It's a temperamental little SOB. I am using EtherCard. I will try Alvaro's stuff when he's finishes a working client. What I really want to do is port uIP. That code seems to have been used quite a lot so I am hopeful it is more stable.

Things I had to do:

  • Watchdog reset after 10 minutes of no activity. Although, I have not been getting a lot of actual watchdog resets lately, so maybe this was my fault all along.
  • Avoid the stack. EtherCard seems to corrupt the stack, but I have relentlessly scoured the code to no avail. So all my variables are either statics or globals. And I do not let loop() return, I keep the Ethernet stuff in a tight while(1) with as little as possible else going on. Fortunately, calling OUT seems to work, so I can call into other functions.

In your poll, you call the watchdog a horrible workaround. I suppose that's true, but I have come to accept it as part of life with ENC28J60.

Thanks maniacbug for your response. I added EtherCard to the poll and am glad to hear you've go some stability.

maniacbug:

  • Avoid the stack. EtherCard seems to corrupt the stack, but I have relentlessly scoured the code to no avail. So all my variables are either statics or globals. And I do not let loop() return, I keep the Ethernet stuff in a tight while(1) with as little as possible else going on. Fortunately, calling OUT seems to work, so I can call into other functions.

I'm going to give this a try this week and see if it works out as well for me as it has for you. Thanks again.

grndamgt4:
I'm going to give this a try this week and see if it works out as well for me as it has for you. Thanks again.

You're welcome, and good luck!

Early this morning I did get a watchdog reset which successfully brought the system back up. Before that, it had gone 32 hours flawlessly, and has been going well in the 6 hours since then too.

I should mention that my watchdog approach is to ping the server at least every 4 minutes. As long as the system has received a response back in the last 15 minutes, it continues to 'tickle' the WDT. Once 15 minutes passes with no response, it quits tickling which forces the system reset.

I have an enc28j60 shield and a Wiznet shield and I think its fair to say you get what you pay for.

In the end I wrote a little library to make the enc28j60 easier to use. I know there are some other similar efforts by others.

Right, I'll go have a look at your survey now :wink:

Si:
In the end I wrote a little library to make the enc28j60 easier to use. I know there are some other similar efforts by others.
Dr. Monk's DIY Electronics Blog: Simplified Ethernet Library for 28J60 Shield

Hello Simon, when my chip first arrived I tried several libraries, I found yours about a week ago and have used it primarily. Thank you for making your work publicly available, it has been the simplest and most straightforward library I have used.
Yesterday I started playing with andy's restduino port, it is also quite interesting.

I've found that reading values and serving them (using ETHER_28J60 library) via a webpage is quite stable, I've left mine up running over the weekend just reading whether my garage door is open and it has not frozen once. However, if I send it a command to close the garage door (using learning relay.pdf) thats when it gets finicky. Sometimes it will work 2 or 3 times and then freeze, sometimes it will process the request twice, sometimes it will work for a couple hours and then stop working. I've replaced the components that I can get locally in case they were bad, but the only 5v relay i've been able to find is a 40ma from radioshack. I guess I'll order one online and try replacing it.

Hi maniacbug, I loaded up a couple example from EtherCard library and they did not initialize my shield but I'll give it another try later this week.