ESP8266 Developer Zone The Official ESP8266 Forum 2018-11-27T20:21:16+08:00 https://bbs.espressif.com:443/feed.php?f=66&t=11552 2018-11-27T20:21:16+08:00 2018-11-27T20:21:16+08:00 https://bbs.espressif.com:443/viewtopic.php?t=11552&p=35655#p35655 <![CDATA[Re: Bug in uart_baudrate_detect]]>
https://github.com/espressif/ESP8266_RTOS_SDK

Statistics: Posted by Xiong Yu — Tue Nov 27, 2018 8:21 pm


]]>
2018-07-24T13:52:19+08:00 2018-07-24T13:52:19+08:00 https://bbs.espressif.com:443/viewtopic.php?t=11552&p=22188#p22188 <![CDATA[Bug in uart_baudrate_detect]]>

Code:

  unsigned long detectedBaudrate;
  while(millis() - start < 11000) {
    if(detectedBaudrate = uart_detect_baudrate(UART0)) break;
    yield();
    delay(100);
  }
  Serial.println(detectedBaudrate);
  unsigned long detectedBaudrate;
  while(millis() - start < 11000) {
    if(detectedBaudrate = uart_detect_baudrate(UART0)) break;
    yield();
    delay(100);
  }
  Serial.println(detectedBaudrate);

And

Code:

uint32_t uart_detect_baudrate(int uart_nr) {
  uint32_t divisor = uart_baudrate_detect(uart_nr, 1);
  if(!divisor) return 0;

  uint32_t baudrate = UART_CLK_FREQ / divisor;

  uint32_t default_rates[] = {300, 600, 1200, 2400, 4800, 9600, 19200,
38400, 57600, 74880, 115200, 230400, 256000, 460800, 921600, 1843200,
3686400};

  size_t i;
  for(i = 1; i < sizeof(default_rates) / sizeof(default_rates[0]) - 1;
i++) {
    if(baudrate <= default_rates[i]) {
      if(baudrate - default_rates[i - 1] < default_rates[i] - baudrate)
i--;
      break;
    }
  }

  return  default_rates[i];
}


Prints zero's after falshing, prints 9600 and 0 after hard reset.

Statistics: Posted by JeroenD — Tue Jul 24, 2018 1:52 pm


]]>