Edukit ATECC608B & AWS IOT & UiFlow



  • @felmue Sorry, you need to import unit
    Then import units then from units import _ID

    also the code is

    import units
    import unit
    from units import _ID
    ID_0 = unit.get(unit.ID, (21,22))
    

    however you can also use:

    import units
    import unit
    from units import _ID
    ATECC = unit.get(unit.ID, (21,22))
    

    I don't know why both unit and units (with an S) must be called but they both do.



  • Hello @ajb2k3

    thank you again. I tried both your code sequences - still no luck. M5Core2 still reboots after the last command.

    Which UIFlow firmware version is running on your M5Core2?

    Thanks
    Felix



  • @felmue ok, its been working all day and now crashing
    1.10.2

    OK if you make 1 single mistake, you to to disconnect and power down the Core2 to empty the memory
    0_1659898393874_Screenshot 2022-08-07 at 19.53.03.png

    this works.



  • Hello @ajb2k3

    at this point I think whether the commands succeed or result in a crash depends on the amount of free memory.
    With a freshly rebooted M5Core2 the following commands (sometimes) can be executed w/o crash.

    >>> import unit
    >>> ID_0 = unit.get(unit.ID, (21,22))
    >>> print(ID_0.wakeup())
    True
    >>> print(ID_0.readConfigZone())
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "units/_ID.py", line 186, in readConfigZone
      File "units/_ID.py", line 363, in read
      File "units/_ID.py", line 377, in read_output
      File "units/_ID.py", line 161, in idle_mode
      File "i2c_bus.py", line 100, in write_list
    OSError: I2C bus error (110)
    >>> print(ID_0.readConfigZone())
    True
    >>> print(ID_0.revisionNumber)
    bytearray(b'\x00\x00`\x03')
    

    Note: The commands need to be executed manually one by one.
    Note: I don't need the import units nor the from units import _ID commands.

    Thanks
    Felix



  • @felmue said in Edukit ATECC608B & AWS IOT & UiFlow:

    Hello @ajb2k3

    at this point I think whether the commands succeed or result in a crash depends on the amount of free memory.
    With a freshly rebooted M5Core2 the following commands (sometimes) can be executed w/o crash.

    >>> import unit
    >>> ID_0 = unit.get(unit.ID, (21,22))
    >>> print(ID_0.wakeup())
    True
    >>> print(ID_0.readConfigZone())
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "units/_ID.py", line 186, in readConfigZone
      File "units/_ID.py", line 363, in read
      File "units/_ID.py", line 377, in read_output
      File "units/_ID.py", line 161, in idle_mode
      File "i2c_bus.py", line 100, in write_list
    OSError: I2C bus error (110)
    >>> print(ID_0.readConfigZone())
    True
    >>> print(ID_0.revisionNumber)
    bytearray(b'\x00\x00`\x03')
    

    Note: The commands need to be executed manually one by one.
    Note: I don't need the import units nor the from units import _ID commands.

    Thanks
    Felix
    Agreed, once the error occurs then memory gets filled requiring hard reset.
    You didn’t need unit or the from? I will try again later.
    I have spent all weekend writing up the atecc for my av2 book including logging the MP modules. I’ll try without those two line tonight.



  • The issue of found was that the basic unit functions are in the unit module with unit.ID being empty but the ATecc function are all in units._ID



  • @felmue try adding the following before defining ID_0

    From esp import gc
    gc.collect.

    This should help clean up some memory.

    Nope that was wrong. the min code I can get running is

    import unit
    import units
    from units import _ID
    import gc
    ATECC = unit.get(unit.ID, (21,22))
    gc.collect()
    

    Oh cool, I got import units._ID to work.



  • @gabrielgc75 @felmue I now present to you the configuration loaded from the ATECC608b in my Core2 AWS
    0_1660068336244_Screenshot 2022-08-09 at 19.02.56.png



  • Hello @ajb2k3

    thank you. I've tried to add the gc.collect() command. The result is still not 100% persistent. From time to time I still get a crash.

    Thanks
    Felix



  • @felmue thanks for letting me know. It’s been stable for the testing but I’m yet to move beyond. I tried looking at provisioning for vets and codes but my brain is not taking it in hence the low level MP stuff.

    I’m sure there will s an issue with MP but I don’t deal directly and not getting feedback from @m5stack or @IAMLIUBO