🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    M5Stack D3231 uRTC module

    Scheduled Pinned Locked Moved General
    4 Posts 1 Posters 6.6k Views
    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.
    • PaulskptP Offline
      Paulskpt
      last edited by

      Hi,
      I would like to inform that I just published a small repo on Github, title: M5Stack_DS3231_uRTC. It is a module for use in MicroPython. It uses a modified version of Adafruit-uRTC library (which Adafruit marked 'Deprecated'). Beside various modifications in the file urtc.py , like the use of dictionaries, I added several functions as: weekday(), isLeapYear(), daysInMonth(), yearday() and cur_month(). The module provides the use of an external DS3231 RTC device with a M5Stack Core1 (BASIC) as host, connected via I2C.
      See: M5Stack_DS3231_uRTC,
      The main.py file is a combination of some tests: a) getting /setting date and time from the external RTC; b) read and display images from flash and from SD-Card; c) use of an MYVARS class to save variables and use them globally. The module is tested on a Core1 (BASIC).

      Coding keeps your mind going

      1 Reply Last reply Reply Quote 0
      • PaulskptP Offline
        Paulskpt
        last edited by Paulskpt

        Troubleshooting

        The past week I am trying 2 different external DS3231 devices on a m5stack FIRE. I have a GROVE Hub (with 3 I2C connectors) connected to the Port A of the Fire. The DS3231 I connected to the I2C Hub. I connected a MiniWare LA104 analyzer to a 2nd port otf the I2C Hub. a M5 RGB LED I connected to Port B of the Fire. The main script I programmed to let the middle RGB LED blink at the moment the script calls rtc.datetime(). Everything works except the readings from the DS3231 clock register (Addresses 0x0 - 0x6) remain mostly static. I don't see the seconds increase. I see the minutes increase but after 3 increases jump back to zero, e.g.: time is 18:40:00 After a minute the time shows 128:41:00, then 18:42:00 and then back to 18:40. This while at that moment the script runs inside a loop. So, the initial setting of the datetime registers only occur at the startup moment.

        I created a link to a Dropbox folder with the script main.py, the rtc classes in urtc.py and other files used during a run. Also a subfolder with various images that will give some impressions about the setup and signals visualized.
        Link: RTC_folder_in_Dropbox

        Question:
        Why are the datetime rtc registers not updating?

        Note:
        I modified the urtc.py file. Added various functions. Also added some try...except... blocks to prevent crashes in case functions receive a NoneType value or in case an I2C bus error occurs (this happened once in a while since I have the I2C analyzer connected to the bus. Mayby the handling of the analyzer did cause some noises on on or more lines.

        Coding keeps your mind going

        1 Reply Last reply Reply Quote 0
        • PaulskptP Offline
          Paulskpt
          last edited by Paulskpt

          I have some experience with programming RTC modules but this problem I am not (yet) able to solve.

          Is there anyone who read my post above and has looked into the code to see if he/she can give me a hint
          to solve this problem of RTC not updating ?

          See my tweet in May 2021:

          tweet in may 2021.

          Coding keeps your mind going

          1 Reply Last reply Reply Quote 0
          • PaulskptP Offline
            Paulskpt
            last edited by

            PROBLEM SOLVED

            At startup :
            if flag 'power_lost' is True:
            the external DS3231 is set with pre-determined datetime (adjust by hand)
            next the built-in RTC is started with the datetime from the DS3231

            if the flag 'power_lost is False:
            the built-in RTC is started with the datetime from the DS3231

            During the main loop displaying the datetime from the built-in RTC.

            I put a short video in the images folder inside the dropbox folder (see the link in my post above).

            Coding keeps your mind going

            1 Reply Last reply Reply Quote 0

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