adafruit / adafruit/Adafruit_Wippersnapper_Arduino

Display initialisation messages don't always arrive in expected order, causing crashes

Open
#795 2 comments 0 reactions 0 assignees View on GitHub
display
Dominant language
C++
Stars
54
Forks
56
Avg merge
2d 12h
Merged PRs (30d)
11

Description

> Seeing the reboot on I2cWrite messages out of sync too. Was the XIAO, but I confused some LED thing with it actually rebooting.
> Has SSD1306 128x64 and a Character LCD 16x2 attached.
>
> See it reboot after init twice then boot okay thrid time, no changes:
>


>
> ```
> 01:21:17:921 -> ERROR [WDT RESET IN -4]:
> 01:21:17:922 -> ERROR: Unable to connect to WiFi, rebooting soon...
> 01:21:18:922 -> ERROR [WDT RESET IN -5]:
> 01:21:18:923 -> ERROR: Unable to connect to WiFi, rebooting soon...
> 01:21:19:922 -> ERROR [WDT RESET IN -6]:
> ---- Closed serial port COM52 due to disconnection from the machine ----
> ---- Reopened serial port COM52 ----
> 01:21:21:766 -> Found single wifi network in secrets.json
> 01:21:21:769 -> Adafruit.io WipperSnapper
> 01:21:21:769 -> -------Device Information-------
> 01:21:21:769 -> Firmware Version: 1.0.0-beta.108
> 01:21:21:769 -> Board ID: xiao-esp32s3
> 01:21:21:769 -> Adafruit.io User: tyeth
> 01:21:21:769 -> WiFi Network: free4all
> 01:21:21:769 -> MAC Address: 74:4D:BD:81:B8:A0
> 01:21:21:769 -> -------------------------------
> 01:21:21:769 -> ESP32 CPU0 RESET REASON: NO_MEAN
> 01:21:21:769 -> ESP32 CPU1 RESET REASON: POWERON_RESET
> 01:21:21:769 -> Generating device's MQTT topics...
> 01:21:21:769 -> Running Network FSM...
> 01:21:21:769 -> Establishing network connection...
> 01:21:21:769 -> Performing a WiFi scan for SSID...WipperSnapper found these WiFi networks:
> 01:21:24:908 -> free4all (6C:63:9C:23:A3:AB) -60dB (ch6)
> 01:21:24:908 -> free4all (28:F5:D1:EF:10:12) -68dB (ch1)
> 01:21:24:908 -> free4all (10:7C:61:82:50:F1) -76dB (ch6)
> 01:21:24:908 -> Ginger Moggie (20:35:43:4:83:6E) -88dB (ch1)
> 01:21:24:909 -> Shaun (48:D3:43:A2:44:81) -91dB (ch6)
> 01:21:24:909 -> VM1451252 (40:D:10:C1:4E:C9) -92dB (ch11)
> 01:21:24:910 -> TP-Link_BD8E (B0:A7:B9:98:BD:8E) -94dB (ch9)
> 01:21:25:510 -> Connecting to WiFi (attempt #0)
> 01:21:31:129 -> Connected to WiFi!
> 01:21:31:130 -> Connecting to AIO MQTT (attempt #0)
> 01:21:31:133 -> WiFi Status: 20
> 01:21:33:919 -> Registering hardware with WipperSnapper...
> 01:21:33:919 -> Registering hardware with IO...
> 01:21:33:919 -> Encoding registration request...Encoding registration msg...Published!
> 01:21:34:022 -> Polling for registration message response...2
> 01:21:34:624 -> GOT Registration Response Message:
> 01:21:34:625 -> Hardware Response Msg:
> 01:21:34:625 -> GPIO Pins: 14
> 01:21:34:625 -> Analog Pins: 11
> 01:21:34:625 -> Reference voltage: 2.60v
> 01:21:34:737 -> Completed registration process, configuration next!
> 01:21:34:738 -> Polling for message containing hardware configuration...
> 01:21:34:750 -> cbSignalTopic: New Msg on Signal Topic
> 01:21:34:750 -> 16 bytes.
> 01:21:34:750 -> decodeSignalMsg
> 01:21:34:750 -> cbSignalMsg
> 01:21:34:750 -> Sub-messages found: 1
> 01:21:34:750 -> Signal Msg Tag: Pin Configuration
> 01:21:34:750 -> cbDecodePinConfigMsg
> 01:21:34:750 -> Configuring digital input pin on D0with internal pull-up enabled
> 01:21:34:751 -> Interval (ms):0
> 01:21:34:751 -> Initial Pin Configuration Complete!
> 01:21:34:751 -> Publishing to pin config complete...
> 01:21:34:754 -> * NEW MESSAGE [Topic: Signal-I2C]:
> 01:21:34:754 -> 87 bytes.
> 01:21:34:754 -> cbDecodeSignalRequestI2C
> 01:21:34:754 -> I2C Device LIST Init Request Found!
> 01:21:34:754 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:21:34:755 -> EXEC: New I2C Port
> 01:21:34:755 -> Port #: 0
> 01:21:34:755 -> SDA Pin: 5
> 01:21:34:755 -> SCL Pin: 6
> 01:21:34:755 -> Frequency (Hz): 100000
> 01:21:34:923 -> Attempting to initialize I2C device: oled128x64large
> 01:21:34:924 -> SSD1306 display detected!
> 01:21:34:924 -> Configuring SSD1306 display...
> 01:21:34:941 -> SSD1306 display configured successfully!
> 01:21:34:942 -> SSD1306 display initialized Successfully!
> 01:21:34:942 -> Publishing Message: I2CResponse...ERROR: Failed to publish I2C Response!
> 01:21:34:944 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:21:34:944 -> Attempting to initialize I2C device: chardisplay16x2
> 01:21:35:049 -> Char LCD Display Initialized Successfully!
> 01:21:35:050 -> Publishing Message: I2CResponse...* NEW MESSAGE [Topic: Signal-I2C]:
> 01:21:35:054 -> 68 bytes.
> 01:21:35:054 -> cbDecodeSignalRequestI2C
> 01:21:35:054 -> [app] I2C Device Output Write
> ---- Closed serial port COM52 due to disconnection from the machine ----
> ---- Reopened serial port COM52 ----
> 01:21:40:160 -> WipperSnapper found these WiFi networks:
> 01:21:40:160 -> free4all (6C:63:9C:23:A3:AB) -61dB (ch6)
> 01:21:40:161 -> free4all (28:F5:D1:EF:10:12) -68dB (ch1)
> 01:21:40:161 -> free4all (10:7C:61:82:50:F1) -77dB (ch6)
> 01:21:40:161 -> Ginger Moggie (20:35:43:4:83:6E) -88dB (ch1)
> 01:21:40:162 -> Shaun (48:D3:43:A2:44:81) -90dB (ch6)
> 01:21:40:163 -> TP-Link_BD8E (B0:A7:B9:98:BD:8E) -91dB (ch9)
> 01:21:40:164 -> VM1451252 (40:D:10:C1:4E:C9) -94dB (ch11)
> 01:21:40:164 -> VM7662787 (18:35:D1:3A:9:9) -94dB (ch11)
> 01:21:40:769 -> Connecting to WiFi (attempt #0)
> 01:21:46:983 -> Connecting to WiFi (attempt #1)
> 01:21:52:601 -> Connected to WiFi!
> 01:21:52:601 -> Connecting to AIO MQTT (attempt #0)
> 01:21:52:606 -> WiFi Status: 20
> 01:21:55:423 -> Registering hardware with WipperSnapper...
> 01:21:55:424 -> Registering hardware with IO...
> 01:21:55:424 -> Encoding registration request...Encoding registration msg...Published!
> 01:21:55:531 -> Polling for registration message response...2
> 01:21:56:129 -> GOT Registration Response Message:
> 01:21:56:130 -> Hardware Response Msg:
> 01:21:56:130 -> GPIO Pins: 14
> 01:21:56:130 -> Analog Pins: 11
> 01:21:56:130 -> Reference voltage: 2.60v
> 01:21:56:242 -> Completed registration process, configuration next!
> 01:21:56:243 -> Polling for message containing hardware configuration...
> 01:21:56:254 -> cbSignalTopic: New Msg on Signal Topic
> 01:21:56:255 -> 16 bytes.
> 01:21:56:255 -> decodeSignalMsg
> 01:21:56:255 -> cbSignalMsg
> 01:21:56:255 -> Sub-messages found: 1
> 01:21:56:255 -> Signal Msg Tag: Pin Configuration
> 01:21:56:255 -> cbDecodePinConfigMsg
> 01:21:56:255 -> Configuring digital input pin on D0with internal pull-up enabled
> 01:21:56:256 -> Interval (ms):0
> 01:21:56:256 -> Initial Pin Configuration Complete!
> 01:21:56:256 -> Publishing to pin config complete...
> 01:21:56:259 -> * NEW MESSAGE [Topic: Signal-I2C]:
> 01:21:56:259 -> 87 bytes.
> 01:21:56:259 -> cbDecodeSignalRequestI2C
> 01:21:56:259 -> I2C Device LIST Init Request Found!
> 01:21:56:259 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:21:56:259 -> EXEC: New I2C Port
> 01:21:56:259 -> Port #: 0
> 01:21:56:260 -> SDA Pin: 5
> 01:21:56:260 -> SCL Pin: 6
> 01:21:56:260 -> Frequency (Hz): 100000
> 01:21:56:411 -> Attempting to initialize I2C device: oled128x64large
> 01:21:56:411 -> SSD1306 display detected!
> 01:21:56:411 -> Configuring SSD1306 display...
> 01:21:56:446 -> SSD1306 display configured successfully!
> 01:21:56:446 -> SSD1306 display initialized Successfully!
> 01:21:56:446 -> Publishing Message: I2CResponse...ERROR: Failed to publish I2C Response!
> 01:21:56:449 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:21:56:449 -> Attempting to initialize I2C device: chardisplay16x2
> 01:21:56:577 -> Char LCD Display Initialized Successfully!
> 01:21:56:578 -> Publishing Message: I2CResponse...* NEW MESSAGE [Topic: Signal-I2C]:
> 01:21:56:578 -> 68 bytes.
> 01:21:56:578 -> cbDecodeSignalRequestI2C
> 01:21:56:578 -> [app] I2C Device Output Write
> ---- Closed serial port COM52 due to disconnection from the machine ----
> ---- Reopened serial port COM52 ----
> 01:22:01:664 -> WipperSnapper found these WiFi networks:
> 01:22:01:665 -> free4all (6C:63:9C:23:A3:AB) -59dB (ch6)
> 01:22:01:665 -> free4all (28:F5:D1:EF:10:12) -68dB (ch1)
> 01:22:01:665 -> free4all (10:7C:61:82:50:F1) -74dB (ch6)
> 01:22:01:666 -> Ginger Moggie (20:35:43:4:83:6E) -86dB (ch1)
> 01:22:01:667 -> TP-Link_BD8E (B0:A7:B9:98:BD:8E) -92dB (ch9)
> 01:22:01:667 -> VM1451252 (40:D:10:C1:4E:C9) -92dB (ch11)
> 01:22:01:668 -> Shaun (48:D3:43:A2:44:81) -93dB (ch6)
> 01:22:02:269 -> Connecting to WiFi (attempt #0)
> 01:22:08:487 -> Connecting to WiFi (attempt #1)
> 01:22:14:106 -> Connected to WiFi!
> 01:22:14:106 -> Connecting to AIO MQTT (attempt #0)
> 01:22:14:110 -> WiFi Status: 20
> 01:22:16:724 -> Registering hardware with WipperSnapper...
> 01:22:16:725 -> Registering hardware with IO...
> 01:22:16:725 -> Encoding registration request...Encoding registration msg...Published!
> 01:22:16:848 -> Polling for registration message response...2
> 01:22:17:430 -> GOT Registration Response Message:
> 01:22:17:430 -> Hardware Response Msg:
> 01:22:17:430 -> GPIO Pins: 14
> 01:22:17:431 -> Analog Pins: 11
> 01:22:17:431 -> Reference voltage: 2.60v
> 01:22:17:543 -> Completed registration process, configuration next!
> 01:22:17:543 -> Polling for message containing hardware configuration...
> 01:22:17:564 -> Polling for message containing hardware configuration...
> 01:22:17:569 -> cbSignalTopic: New Msg on Signal Topic
> 01:22:17:570 -> 16 bytes.
> 01:22:17:570 -> decodeSignalMsg
> 01:22:17:570 -> cbSignalMsg
> 01:22:17:570 -> Sub-messages found: 1
> 01:22:17:570 -> Signal Msg Tag: Pin Configuration
> 01:22:17:570 -> cbDecodePinConfigMsg
> 01:22:17:570 -> Configuring digital input pin on D0with internal pull-up enabled
> 01:22:17:570 -> Interval (ms):0
> 01:22:17:570 -> Initial Pin Configuration Complete!
> 01:22:17:570 -> * NEW MESSAGE [Topic: Signal-I2C]:
> 01:22:17:570 -> 87 bytes.
> 01:22:17:570 -> cbDecodeSignalRequestI2C
> 01:22:17:570 -> I2C Device LIST Init Request Found!
> 01:22:17:570 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:22:17:570 -> EXEC: New I2C Port
> 01:22:17:570 -> Port #: 0
> 01:22:17:570 -> SDA Pin: 5
> 01:22:17:570 -> SCL Pin: 6
> 01:22:17:570 -> Frequency (Hz): 100000
> 01:22:17:721 -> Attempting to initialize I2C device: oled128x64large
> 01:22:17:721 -> SSD1306 display detected!
> 01:22:17:721 -> Configuring SSD1306 display...
> 01:22:17:756 -> SSD1306 display configured successfully!
> 01:22:17:756 -> SSD1306 display initialized Successfully!
> 01:22:17:756 -> Publishing Message: I2CResponse...Published!
> 01:22:17:958 -> EXEC: cbDecodeI2CDeviceInitRequestList
> 01:22:17:958 -> Attempting to initialize I2C device: chardisplay16x2
> 01:22:18:063 -> Char LCD Display Initialized Successfully!
> 01:22:18:064 -> Publishing Message: I2CResponse...Published!
> 01:22:18:367 -> Publishing to pin config complete...
> 01:22:18:469 -> Hardware configured successfully!
> 01:22:20:029 -> Registration and configuration complete!
> 01:22:20:029 -> Running application...
> 01:22:20:031 -> Sending MQTT PING: * NEW MESSAGE [Topic: Signal-I2C]:
> 01:22:20:034 -> 68 bytes.
> 01:22:20:034 -> cbDecodeSignalRequestI2C
> 01:22:20:034 -> [app] I2C Device Output Write
> 01:22:21:127 -> [app] I2C Device Output Write Done
> 01:22:21:129 -> * NEW MESSAGE [Topic: Signal-I2C]:
> 01:22:21:130 -> 56 bytes.
> 01:22:21:130 -> cbDecodeSignalRequestI2C
> 01:22:21:130 -> [app] I2C Device Output Write
> 01:22:21:261 -> [app] I2C Device Output Write Done
> 01:22:21:261 -> SUCCESS!
> 01:22:21:261 -> WiFi RSSI: -66
> 01:22:21:282 -> Executing state-based event on D0
> 01:22:21:283 -> Encoding pinEvent...Encoded!
> 01:22:21:283 -> Publishing pinEvent...Published!
> 01:22:25:775 -> Sending MQTT PING: SUCCESS!
> 01:22:25:938 -> WiFi RSSI: -68
> ---- Closed the serial port COM52 ----
> ```
>
>


>

_Originally posted by @tyeth in [#768](https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues/768#issuecomment-3111564194)_

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing initialization with the XIAO ESP32S3, SSD1306 128x64 display, and Character LCD 16x2 while reviewing the cbDecodeSignalRequestI2C and cbDecodeI2CDeviceInitRequestList log sequence. Compare successful and failing boots, then verify that display initialization messages and I2C responses arrive in a safe order without rebooting or crashing.

Written by the indexing model from the issue text.

Assessment

Tech stack
arduino, cpp
Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.