Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

An RA4M1 with an ESP32-S3 ... as the coprocessor for WiFi and BLE? Why not just do everything on the ESP32-S3? The RA4M1 seems a little unimpressive next to it. Something like an RA6M4 at least would have been cool, though: Add QSPI flash and an Ethernet phy ... Yes please! But this? Meh.


ESP32 has several downsides I can think of:

  - Generally you have to run Espressif's FreeRTOS variant, which is a very different programming model from the standard microcontroller-with-interrupts model that prior Arduinos use.
  - ESP32 has a crappy ADC.[1]
  - ESP32 is a 3.3V part. Yes, you can level-shift, but Arduino GPIOs can be set into 4 states: low, high, pull-up resistor enabled, and hi-Z. Your standard bidirectional level shifter[2] is not sufficient here - those can can only drive low or pull up.

  1. https://www.makerfabs.cc/article/cautions-in-using-esp32-adc.html
  2. https://electronics.stackexchange.com/questions/173297/how-does-a-bidirectional-level-shifter-work


> Generally you have to run Espressif's FreeRTOS variant, which is a very different programming model from the standard microcontroller-with-interrupts model that prior Arduinos use.

I can tell you never bothered programming an ESP within Arduino IDE and its wrappers. You don't have any contact points with this, unless you want to. It's like with any other ATmega chip. And even if this wasn't the case, the argument would be the same on either side: Just replace Espressif's IDF with Renesas' FSP and each other's FreeRTOS port.

And yes, I am aware you can program Renesas chips bare metal ... just like you can do with ESPs. uBlox is doing the latter for example for their ESP-based products, including even a custom WiFi stack. Once you do a percentage more with ESPs than just toying with their IDF and Getting Started you will start doing that too and just use the IDF for reference at best.

> ESP32 has a crappy ADC.

The ADC of the ESP in question (ESP-S3) is okay, others not so much.


They've done a good job of hiding the RTOS from you and making most sketches run fine without porting, but you're still running as a task under the RTOS, yielding between loop() calls[1]. This leads to mysterious timing issues if you aren't aware of it[2]

It doesn't appear that the Arduino core for the Renesas chip is using the RTOS, at least by default -- its main loop is literally doing while (1) { loop(); }, similar to how the AVR core works. [3, 4]

  1. https://github.com/espressif/arduino-esp32/blob/72c41d09538663ebef80d29eb986cd5bc3395c2d/cores/esp32/main.cpp#L45
  2. https://www.reddit.com/r/esp32/comments/t9aqr6/what_on_earth_is_my_esp32_doing_between_loops/
  3. https://github.com/arduino/ArduinoCore-renesas/blob/149f78b6490ccbafeb420f68919c381a5bdb6e21/cores/arduino/main.cpp#L115
  4. https://github.com/arduino/ArduinoCore-avr/blob/eabd762a1edcf076877b7bec28b7f99099141473/cores/arduino/main.cpp#L46




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: