Roger-random / ESP_8_BIT_composite

Color composite video code from ESP_8_BIT as an Arduino library
MIT License
125 stars 15 forks source link

video_isr and rtc_clk_apll_enable broken #50

Closed joshua137k closed 2 months ago

joshua137k commented 2 months ago
C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp: In function 'void i2s_intr_handler_video(void)': C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:45:55: error: invalid conversion from 'const volatile void' to 'volatile void*' [-fpermissive] 45 video_isr(((lldesc_t*)I2S0.out_eof_des_addr)->buf); // get the next line of video ~~~~~~~~^~~
const volatile void*

C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:39:41: note: initializing argument 1 of 'void video_isr(volatile void)' 39 | void IRAM_ATTR video_isr(volatile void buf); | ~~~^~~ C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp: In function 'esp_err_t start_dma(int, int, int)': C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:102:40: error: too many arguments to function 'void rtc_clk_apll_enable(bool)' 102 | case 3: rtc_clk_apll_enable(1,0x46,0x97,0x4,2); break; // 10.7386363636 3x NTSC (10.7386398315mhz) | ~~~~~^~~~~ In file included from C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.h:57, from C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:22: C:\Users\Joshu\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083/esp32/include/soc/esp32/include/soc/rtc.h:242:6: note: declared here 242 | void rtc_clk_apll_enable(bool enable); | ^~~~~~~ C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:103:40: error: too many arguments to function 'void rtc_clk_apll_enable(bool)' 103 | case 4: rtc_clk_apll_enable(1,0x46,0x97,0x4,1); break; // 14.3181818182 4x NTSC (14.3181864421mhz) | ~~~~~^~~~~ C:\Users\Joshu\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083/esp32/include/soc/esp32/include/soc/rtc.h:242:6: note: declared here 242 | void rtc_clk_apll_enable(bool enable); | ^~~~~~~ C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:106:28: error: too many arguments to function 'void rtc_clk_apll_enable(bool)' 106 | rtc_clk_apll_enable(1,0x04,0xA4,0x6,1); // 17.734476mhz ~4x PAL | ~~~~~^~~~~ C:\Users\Joshu\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083/esp32/include/soc/esp32/include/soc/rtc.h:242:6: note: declared here 242 | void rtc_clk_apll_enable(bool enable); | ^~~~~~~ C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp: In destructor 'ESP_8_BIT_composite::~ESP_8_BIT_composite()': C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:686:28: error: too many arguments to function 'void rtc_clk_apll_enable(bool)' 686 | rtc_clk_apll_enable(false,0x46,0x97,0x4,1); | ~~~~~^~~~~ C:\Users\Joshu\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083/esp32/include/soc/esp32/include/soc/rtc.h:242:6: note: declared here 242 | void rtc_clk_apll_enable(bool enable); | ^~~~~~~ C:\Users\Joshu\Documents\Arduino\libraries\ESP_8_BIT_Color_Composite_Video_Library\ESP_8_BIT_composite.cpp:688:28: error: too many arguments to function 'void rtc_clk_apll_enable(bool)' 688 | rtc_clk_apll_enable(false,0x04,0xA4,0x6,1); | ~~~~~^~~~~ C:\Users\Joshu\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-442a798083/esp32/include/soc/esp32/include/soc/rtc.h:242:6: note: declared here 242 | void rtc_clk_apll_enable(bool enable); | ^~~~~~~

exit status 1

Compilation error: exit status 1

RotaruAndrei23 commented 2 months ago

Same problem. Current version and 1.2.0 as well

Roger-random commented 2 months ago

Confirm I see the same compilation errors after updating to Espressif ESP32 Arduino core 3.0.0 released three days ago. (https://github.com/espressif/arduino-esp32/releases)

This error is deep within code inherited from ESP_8_BIT and it'll take time before I can make a fix. Anyone familiar with fixing Espressif's v3 breaking changes are welcome to submit a PR.

In the meantime, the workaround is to downgrade to Espressif's ESP32 Arduino core v2. (Last verified to work with 2.0.14 though 2.0.17 was last before v3.0 was released.)

Roger-random commented 2 months ago

I have updated README to reflect this problem.

tin-can-tomatoes commented 1 month ago

I've been looking at both this project and aquaticus/esp32_composite_video_lib in order to get something working in ESP-IDF 5.2.

Seems the only significant fix to get either codebase to work in IDF 5.2 is to replace calls to: void rtc_clk_apll_enable(bool enable, uint32_t sdm0, uint32_t sdm1, uint32_t sdm2, uint32_t o_div)

with

rtc_clk_apll_enable(bool enable);
rtc_clk_apll_coeff_set(uint32_t o_div, uint32_t sdm0, uint32_t sdm1, uint32_t sdm2)

Unfortunately there are still warnings about using the legacy DAC driver which is now deprecated. I looked into using the dac_continuous driver instead but couldn't figure out a way.

Roger-random commented 1 month ago

Thank you for looking! More eyes are always useful. There are enough people out there hacking on ESP32 that I'm sure some solution will eventually surface, but I haven't figured it out either.