New firmware release 1.2.0.b1
-
I don't seem to get the interrupts working either...
-
@Wembly I tested because I desperate need them. It looks like working. I tested on WiPy 2
-
@constantinos can you show how did you get to that Guru Meditation Error ?
-
@Wembly are you trying any of the examples from the docs or something else? Could you share your code?
-
@daniel I have a project with three buttons, which I debounce and use them to activate some relays. I tried to simplify my code using the pin.callback, but every time I push the button, the handler gets called several times because of the noise. How could I solve this?
The code I'm using is:
button1 = Pin("G8", mode=Pin.IN, pull=Pin.PULL_UP)
button2 = Pin("G9", mode=Pin.IN, pull=Pin.PULL_UP)
button3 = Pin("G10", mode=Pin.IN, pull=Pin.PULL_UP)
button1.callback(handler=pin_handler, trigger=Pin.IRQ_LOW_LEVEL and Pin.IRQ_FALLING)
button2.callback(handler=pin_handler, trigger=Pin.IRQ_LOW_LEVEL and Pin.IRQ_FALLING)
button3.callback(handler=pin_handler, trigger=Pin.IRQ_LOW_LEVEL and Pin.IRQ_FALLING)The code I previously used and works fine is:
while True:
reading1 = button1()
reading2 = button2()
reading3 = button3()
if(reading1 != lastButton1State):
lastDebounceTime = current_milli_time()
if(reading2 != lastButton2State):
lastDebounceTime = current_milli_time()
if(reading3 != lastButton3State):
lastDebounceTime = current_milli_time()if((current_milli_time() - lastDebounceTime) > debounceDelay): if(reading1 != button1State): button1State = reading1 if(button1State == True): relay1State = not relay1State print("button pushed") if(reading2 != button2State): button2State = reading2 if(button2State == True): relay2State = not relay2State print("button pushed") if(reading3 != button3State): button3State = reading3 if(button3State == True): relay3State = not relay3State print("button pushed") relay1.value(relay1State) relay2.value(relay2State) relay3.value(relay3State) lastButton1State = reading1 lastButton2State = reading2 lastButton3State = reading3 -
@daniel just a gc.collect() before the instance of Clock()
import micropython from machine import Timer import gc micropython.alloc_emergency_exception_buf(100) SECONDS = 0 class Clock: def __init__(self): self.__alarm = Timer.Alarm(self._seconds_handler, 1, periodic=True) def _seconds_handler(self, alarm): global SECONDS SECONDS += 1 #print("%02d seconds have passed" % nemet_global.SECONDS) gc.enable() gc.collect() clock = Clock() -
@toribios_people debouncing by measuring time like you show on your code should work. Could you share with us the complete pin handler so that I can test it? Other than that, instead of:
button1.callback(handler=pin_handler, trigger=Pin.IRQ_LOW_LEVEL and Pin.IRQ_FALLING)you should write it like this:
button1.callback(handler=pin_handler, trigger=Pin.IRQ_FALLING)Doing that AND operation on the trigger doesn't have the effect that you expect as this are just bit flags that are passed to the internal interrupt registers. Besides that, if you want to detect the button push, the falling edge is enough (plus some of that debounce code).
Cheers,
Daniel -
@constantinos I just tested your example, and I even enabled the print statement, but I can't reproduce the crash... (still running for ~10 minutes)
EDIT: OK got the guru meditation error now getting closer to the 11 minutes. We'll investigate. Thanks for the report.
Cheers,
Daniel -
@daniel Thanks for reply, nevermind my comment. It was my bad. Interrupts works !
Edit: however, interrupts will not work if waiting for socket operation (which was the only reason to why I needed them to work). I have added an issue here:
https://github.com/pycom/pycom-micropython/issues/57 -
@constantinos, thanks again for your report. We found the cause of the issue inside the garbage collector code. We're fixing it right now. It should be fixed for the next firmware release.
-
@Wembly, thanks for reporting the issue with the sockets, we've tracked it to the GIL (global interpreter lock) not being taken care of inside the sockets code. I've already tested a fix, so it should be included for the next firmware release.
-
@abilio I appreciate your effort and your response. I started one week ago having no experience in python but having a lot in Enterprise Infrastructure & Software (Banking & Finance) and offcourse made plenty projects with atmega and ESP8266. Check my pyCom coda library in github
-
@daniel Can you also give us access to older firmware updates? Sometimes I need that because of breaking updates.
-
@gertjanvanhethof yes of course. I'll publish links to access the old updates tomorrow. Sorry for the delay.
-
@daniel
can you confirm this on WiPy2?when i do:
ir = Pin('P13', mode=Pin.IN, pull=None)
or
ir = Pin('P14', mode=Pin.IN, pull=None)then this is connected to same pin?
P15 is ok
but P13 is same as P14it looks to me as firmware error
pin P13 not work at all (first on the right bottom) only second one and P13 and P14 are connected to it
-
When do you plan to update the GitHub repository. Due to limited RAM, beaing able to use pre-compiled code is important, and that's what I do with the sources:
I add the line:
#define MICROPY_PERSISTENT_CODE_LOAD (1)
to mpconfigport.h and recompile it. The compiler I use is mpy-cross of that repository. Using mingw32, it can even be built under Windows. -
@daniel I run the latest osx updater tool but can not select the country.
-
@scratchrobot we saw this before and it was happening because you are not connected to the internet while you run the tool, or because your firewall if blocking the connection. The tools needs to connect to download the correct binary for your board.
-
@robert-hh we will upload them in a couple of hours.
-
Hello everyone,
The old firmware versions are now published in the Firmware Updates sections of this link:
https://www.pycom.io/support/supportdownloads/
Just scroll down and you'll see the list.
Cheers,
Daniel
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login