OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [lib/] [source/] [neorv32_uart.c] - Diff between revs 65 and 66

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 65 Rev 66
Line 254... Line 254...
  uint32_t clock = NEORV32_SYSINFO.CLK;
  uint32_t clock = NEORV32_SYSINFO.CLK;
  uint16_t i = 0; // BAUD rate divisor
  uint16_t i = 0; // BAUD rate divisor
  uint8_t p = 0; // initial prsc = CLK/2
  uint8_t p = 0; // initial prsc = CLK/2
 
 
  // raw clock prescaler
  // raw clock prescaler
#ifdef __riscv_div
#ifndef make_bootloader
  // use div instructions
 
  i = (uint16_t)(clock / (2*baudrate));
  i = (uint16_t)(clock / (2*baudrate));
#else
#else
  // division via repeated subtraction
  // division via repeated subtraction (minimal size, only for bootloader)
  while (clock >= 2*baudrate) {
  while (clock >= 2*baudrate) {
    clock -= 2*baudrate;
    clock -= 2*baudrate;
    i++;
    i++;
  }
  }
#endif
#endif
Line 624... Line 623...
  uint32_t clock = NEORV32_SYSINFO.CLK;
  uint32_t clock = NEORV32_SYSINFO.CLK;
  uint16_t i = 0; // BAUD rate divisor
  uint16_t i = 0; // BAUD rate divisor
  uint8_t p = 0; // initial prsc = CLK/2
  uint8_t p = 0; // initial prsc = CLK/2
 
 
  // raw clock prescaler
  // raw clock prescaler
#ifdef __riscv_div
#ifdef make_bootloader
  // use div instructions
  // use div instructions
  i = (uint16_t)(clock / (2*baudrate));
  i = (uint16_t)(clock / (2*baudrate));
#else
#else
  // division via repeated subtraction
  // division via repeated subtraction (minimal size, only for bootloader)
  while (clock >= 2*baudrate) {
  while (clock >= 2*baudrate) {
    clock -= 2*baudrate;
    clock -= 2*baudrate;
    i++;
    i++;
  }
  }
#endif
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.