Git Product home page Git Product logo

Comments (8)

Testato avatar Testato commented on September 23, 2024

the Arduino esp8266 core document that delayMicroseconds() stop the wifi stack, but the delay() not. So maybe we can try whith delay(1), 1millisecondo instead of 0.1.
delay pauses the sketch for a given number of milliseconds and allows WiFi and TCP/IP tasks to run

whit the yeld() you removed completely the delay because it is like delay(0)

Probably the best is use a millis timing whithout use of delay, not only here but in all the library ?

from pubsubclient.

Imroy avatar Imroy commented on September 23, 2024

Yes, I had forgotten that delayMicroseconds() doesn't call yield. What if yield is called right after?

from pubsubclient.

Testato avatar Testato commented on September 23, 2024

Probably the best is use a millis timing whithout use of delay, not only here but in all the library ?

from pubsubclient.

av1024 avatar av1024 commented on September 23, 2024

Why do you need 100us delay here? Is it 1ms be enough?
Or simply use yield() (equals to delay(0)) and millis()

from pubsubclient.

av1024 avatar av1024 commented on September 23, 2024

@Testato yield() is enough because it used for switch scheduler, but time interval measured by millis()

from pubsubclient.

Imroy avatar Imroy commented on September 23, 2024

I'm not sure why I chose 100us. It doesn't seem to be inherited from knolleary's original code, so I can't blame him :P
I think I just didn't want it to spin its wheels checking a simple condition and to have a small delay in there. But I forgot about yielding. And it worked for me(tm).

from pubsubclient.

av1024 avatar av1024 commented on September 23, 2024

And it worked for me(tm).

For me too, But not for latest git Arduino's 8) I have got a mysterious resets on not clean wifi area but I hope they are gone...

from pubsubclient.

igrr avatar igrr commented on September 23, 2024

Guys, this code was there since original Nick's version. I remember it caused problems so I had a workaround in my code which called yield() internally if it detected that you are polling WiFiClient::available() in a loop. It seems to be broken now — I will check that.

My suggestions is to replace delayMicroseconds(100) with yield();

from pubsubclient.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.