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

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [sw/] [example/] [demo_wdt/] [main.c] - Diff between revs 44 and 47

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

Rev 44 Rev 47
Line 73... Line 73...
 
 
  // capture all exceptions and give debug info via UART
  // capture all exceptions and give debug info via UART
  // this is not required, but keeps us safe
  // this is not required, but keeps us safe
  neorv32_rte_setup();
  neorv32_rte_setup();
 
 
 
 
  // init UART at default baud rate, no parity bits, no rx interrupt, no tx interrupt
  // init UART at default baud rate, no parity bits, no rx interrupt, no tx interrupt
  neorv32_uart_setup(BAUD_RATE, 0b00, 0, 0);
  neorv32_uart_setup(BAUD_RATE, 0b00, 0, 0);
 
 
  // check available hardware extensions and compare with compiler flags
  // check available hardware extensions and compare with compiler flags
  neorv32_rte_check_isa(0); // silent = 0 -> show message if isa mismatch
  neorv32_rte_check_isa(0); // silent = 0 -> show message if isa mismatch
Line 88... Line 87...
 
 
  // show the cause of the last processor reset
  // show the cause of the last processor reset
  neorv32_uart_print("Cause of last processor reset: ");
  neorv32_uart_print("Cause of last processor reset: ");
  uint8_t wdt_cause = neorv32_wdt_get_cause();
  uint8_t wdt_cause = neorv32_wdt_get_cause();
 
 
  if (wdt_cause == 1) {
  if (wdt_cause == 0) {
    neorv32_uart_print("External reset\n");
    neorv32_uart_print("External reset\n");
  }
  }
  else if (wdt_cause == 2) {
  else if (wdt_cause == 1) {
    neorv32_uart_print("Watchdog timeout\n");
    neorv32_uart_print("Watchdog\n");
  }
 
  else if (wdt_cause == 3) {
 
    neorv32_uart_print("Watchdog access fault\n");
 
  }
  }
  else {
  else {
    neorv32_uart_print("Undefined\n");
    neorv32_uart_print("Undefined\n");
  }
  }
 
 
 
 
  // the watchod has a 20-bit counter, which trigger either an interrupt or a system reset
  // the watchod has a 20-bit counter, which triggers either an interrupt or a system reset
  // when overflowing
  // when overflowing
 
 
  // init watchdog (watchdog timer increment = cpu_clock/64, trigger reset on overflow)
  // init watchdog (watchdog timer increment = cpu_clock/64, trigger reset on overflow, lock
  neorv32_wdt_setup(CLK_PRSC_64, 1);
  // access so nobody can alter the configuration until next reset)
 
  neorv32_wdt_setup(CLK_PRSC_64, 1, 1);
 
 
 
 
 
 
  neorv32_uart_print("\n\nWill reset WDT 64 times.\n"
  neorv32_uart_print("\n\nWill reset WDT 64 times.\n"
                     "A system reset will be executed in the following time out.\n"
                     "A system reset will be executed in the following time out.\n"

powered by: WebSVN 2.1.0

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