Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    New firmware release 1.2.0.b1

    Scheduled Pinned Locked Moved Announcements & News
    37 Posts 11 Posters 12.1k Views 11 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      constantinos
      last edited by

      Thank you for your new release.

      I tested the timer.alarm and I just get a reset.

      Guru Meditation Error of type InstrFetchProhibited occurred on core 0. Exception was unhandled.
      Register dump:
      PC : 0x02625a00 PS : 0x00060a30 A0 : 0x800e823c A1 : 0x3ffc1ab0
      A2 : 0x3ffc3470 A3 : 0x00000001 A4 : 0x00000000 A5 : 0x3ffc1ad0
      A6 : 0x400de118 A7 : 0x3ffc46b0 A8 : 0x800e81f8 A9 : 0x3ffc1a90
      A10 : 0x3ffc3470 A11 : 0x00000001 A12 : 0x00000000 A13 : 0x3ffc1ad0
      A14 : 0xb33fffff A15 : 0x00060023 SAR : 0x00000014 EXCCAUSE: 0x00000014
      EXCVADDR: 0x02625a00 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff

      Backtrace: 0x02625a00:0x3ffc1ab0 0x400e823c:0x3ffc1ad0 0x400de127:0x3ffc1b00 0x400df7a6:0x3ffc1b20 0x400d7d6c:0x3ffc1ba0

      Rebooting...

      1 Reply Last reply Reply Quote 0
      • W Offline
        Wembly
        last edited by

        I don't seem to get the interrupts working either...

        C 1 Reply Last reply Reply Quote 0
        • C Offline
          constantinos @Wembly
          last edited by

          @Wembly I tested because I desperate need them. It looks like working. I tested on WiPy 2

          1 Reply Last reply Reply Quote 0
          • D Offline
            daniel
            last edited by

            @constantinos can you show how did you get to that Guru Meditation Error ?

            C 1 Reply Last reply Reply Quote 0
            • D Offline
              daniel
              last edited by

              @Wembly are you trying any of the examples from the docs or something else? Could you share your code?

              W 1 Reply Last reply Reply Quote 0
              • T Offline
                toribios_people @daniel
                last edited by

                @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
                
                1 Reply Last reply Reply Quote 0
                • C Offline
                  constantinos @daniel
                  last edited by daniel

                  @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()
                  
                  A 1 Reply Last reply Reply Quote 0
                  • D Offline
                    daniel
                    last edited by

                    @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

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      daniel
                      last edited by 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

                      1 Reply Last reply Reply Quote 0
                      • W Offline
                        Wembly @daniel
                        last edited by Wembly

                        @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

                        A 1 Reply Last reply Reply Quote 0
                        • A Offline
                          abilio @constantinos
                          last edited by

                          @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.

                          C 1 Reply Last reply Reply Quote 0
                          • A Offline
                            abilio @Wembly
                            last edited by

                            @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.

                            1 Reply Last reply Reply Quote 0
                            • C Offline
                              constantinos @abilio
                              last edited by

                              @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

                              1 Reply Last reply Reply Quote 0
                              • G Offline
                                gertjanvanhethof Pybytes Beta @daniel
                                last edited by

                                @daniel Can you also give us access to older firmware updates? Sometimes I need that because of breaking updates.

                                1 Reply Last reply Reply Quote 1
                                • D Offline
                                  daniel
                                  last edited by

                                  @gertjanvanhethof yes of course. I'll publish links to access the old updates tomorrow. Sorry for the delay.

                                  1 Reply Last reply Reply Quote 1
                                  • L Offline
                                    livius
                                    last edited by livius

                                    @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 P14

                                    it 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

                                    think about people first, then computers

                                    D 1 Reply Last reply Reply Quote 0
                                    • robert-hhR Offline
                                      robert-hh
                                      last edited by

                                      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.

                                      D 1 Reply Last reply Reply Quote 1
                                      • S Offline
                                        scratchrobot @daniel
                                        last edited by scratchrobot

                                        @daniel I run the latest osx updater tool but can not select the country.

                                        D 1 Reply Last reply Reply Quote 0
                                        • D Offline
                                          daniel @scratchrobot
                                          last edited by

                                          @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.

                                          1 Reply Last reply Reply Quote 0
                                          • D Offline
                                            daniel @robert-hh
                                            last edited by

                                            @robert-hh we will upload them in a couple of hours.

                                            1 Reply Last reply Reply Quote 1

                                            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
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post

                                            Pycom on Twitter

                                            Pycom