shorepine / tulipcc

The Tulip Creative Computer - a portable Python synthesizer for music and graphics
https://tulip.computer/
Other
432 stars 28 forks source link

USB klobbered by early wifi() call in boot.py #79

Closed drepetto closed 1 year ago

drepetto commented 1 year ago

If i do tulip.wifi() at the top of my boot.py USB will fail to initialize. Putting a tulip.time.sleep(5) at the top of boot.py seems to solve this.

Rebooting... ?ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0xc (RTC_SW_CPU_RST),boot:0x39 (SPI_FAST_FLASH_BOOT) Saved PC:0x420f8966 0x420f8966: esp_pm_impl_waiti at /Users/douglas/Documents/tulipcc/esp-idf/components/esp_pm/pm_impl.c:839

SPIWP:0xee Octal Flash Mode Enabled For OPI Flash, Use Default Flash Boot Mode mode:SLOW_RD, clock div:1 load:0x3fcd0108,len:0xe34 load:0x403b6000,len:0x9e8 load:0x403ba000,len:0x2c08 entry 0x403b61d4 Starting MIDI on core 0 UART MIDI running on core 0 Starting USB host on core 1 Starting display on core 0 usb_host_install: 0 usb_host_client_register: 0 setting duty to 4000 ft5x06 device create successed Startck starting i2s: [ok] I'm renderer #0 on core #1 and i'm handling oscs 0 up until 32 I'm renderer #1 on core #0 and i'm handling oscs 32 up until 64 E (1080) HUB: Bad transfer status: CHECK_ADDR E (1080) HUB: Stage failed: CHECK_ADDR

bwhitman commented 1 year ago

I think the issue is the micropython interpreter is running while things like usb are still getting set up. We thread out all of the setups at once in ports/esp32s3/main.c. I'm now calling the setup separate from the run loop for USB, so it's guaranteed to be set up by the time micropython runs.

@drepetto can you test the latest main on your hardware and see if it still crashes? Mine does not, but i know this could be system-dependent.

bwhitman commented 1 year ago

Douglas reports this works for him