Hi
i am getting Fatal error while uploading code in my nRF52823 plz find attachment which i enclosed.
and showing break point at NRF_BREAKPOINT_COND; plz tell me what should i do ?
Thank you
Hi
i am getting Fatal error while uploading code in my nRF52823 plz find attachment which i enclosed.
and showing break point at NRF_BREAKPOINT_COND; plz tell me what should i do ?
Thank you
Try to add "DEBUG" to your preprocessor definitions, and see what the log says then.
1. Let me know if you are not sure how to define DEBUG in your preprocessor definitions.
2. The log will probably point to somewhere in your code where it says APP_ERROR_CHECK(err_code); What function call returned that err_code?
3. Your next mission is to find out why it returned that err_code.
BR,
Edvin
Thank you for replying fast
i added DEBUG in preprocessor definition as like this #define DUBUG
but i am not getting any msg in debug terminal
and one arrow (yellow color) indicating at NRF_BREAKPOINT_COND;
i dont know why this and i also attached a screenshot
Thank you
And this the code
/**
* Copyright (c) 2016 - 2019, Nordic Semiconductor ASA
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form, except as embedded into a Nordic
* Semiconductor ASA integrated circuit in a product or a software update for
* such product, must reproduce the above copyright notice, this list of
* conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* 4. This software, with or without modification, must only be used with a
* Nordic Semiconductor ASA integrated circuit.
*
* 5. Any software provided in binary form under this license must not be reverse
* engineered, decompiled, modified and/or disassembled.
*
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "app_error.h"
#include "nrf_log.h"
#include "nrf_log_ctrl.h"
#include "app_util_platform.h"
#include "nrf_strerror.h"
#define DEBUG
#if defined(SOFTDEVICE_PRESENT) && SOFTDEVICE_PRESENT
#include "nrf_sdm.h"
#endif
/*lint -save -e14 */
/**
* Function is implemented as weak so that it can be overwritten by custom application error handler
* when needed.
*/
__WEAK void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
{
__disable_irq();
NRF_LOG_FINAL_FLUSH();
#ifndef DEBUG
NRF_LOG_ERROR("Fatal error");
#else
switch (id)
{
#if defined(SOFTDEVICE_PRESENT) && SOFTDEVICE_PRESENT
case NRF_FAULT_ID_SD_ASSERT:
NRF_LOG_ERROR("SOFTDEVICE: ASSERTION FAILED");
break;
case NRF_FAULT_ID_APP_MEMACC:
NRF_LOG_ERROR("SOFTDEVICE: INVALID MEMORY ACCESS");
break;
#endif
case NRF_FAULT_ID_SDK_ASSERT:
{
assert_info_t * p_info = (assert_info_t *)info;
NRF_LOG_ERROR("ASSERTION FAILED at %s:%u",
p_info->p_file_name,
p_info->line_num);
break;
}
case NRF_FAULT_ID_SDK_ERROR:
{
error_info_t * p_info = (error_info_t *)info;
NRF_LOG_ERROR("ERROR %u [%s] at %s:%u\r\nPC at: 0x%08x",
p_info->err_code,
nrf_strerror_get(p_info->err_code),
p_info->p_file_name,
p_info->line_num,
pc);
NRF_LOG_ERROR("End of error report");
break;
}
default:
NRF_LOG_ERROR("UNKNOWN FAULT at 0x%08X", pc);
break;
}
#endif
NRF_BREAKPOINT_COND;
// On assert, the system can only recover with a reset.
#ifndef DEBUG
NRF_LOG_WARNING("System reset");
NVIC_SystemReset();
#else
app_error_save_and_stop(id, pc, info);
#endif // DEBUG
}
/*lint -restore */
It is indeed working. Try to scroll a bit to the right:
What file name does the log point to, G:\EMBEDDEDBMY\nrf528... ? is it main.c? And it should also say a line number. What is on that line in that file? And more importantly, what is right before that line?
the name of log point is
<error> app: ERROR 4 [NRF_ERROR_NO_MEM] at G:\EMBEDDEDBMY\nRF52832 new version\nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_uart\main.c:560
PC at: 0x0002EBA5
<error> app: End of error report
you can also see in screen short
Thank You
Please reply
Edvin said:What is on that line in that file? And more importantly, what is right before that line?
Please see what I wrote in the previous reply.
This is not an issue with the SDK. You have probably changed something in your project that leads to an application error. The log points to where this application error occurs.
Line 560 in your main.c file contains:
APP_ERROR_CHECK(err_code);
Where err_code = 4.
What function returned that err_code, and why? You need to debug to find out why it returned 4.
Source code in main looks like:
case APP_UART_COMMUNICATION_ERROR: APP_ERROR_HANDLER(p_event->data.error_communication); // line 560 here break;
Hold on: error_communication is just the ERRORSRC register value here. And value of 4 equals FRAMING error - which occurs when baud rate is wrong. Look at your UART signals with an oscilloscope - wrong baud rate should be obvious.
TL;DR
Your baud rate is set to a wrong value.
Source code in main looks like:
case APP_UART_COMMUNICATION_ERROR: APP_ERROR_HANDLER(p_event->data.error_communication); // line 560 here break;
Hold on: error_communication is just the ERRORSRC register value here. And value of 4 equals FRAMING error - which occurs when baud rate is wrong. Look at your UART signals with an oscilloscope - wrong baud rate should be obvious.
TL;DR
Your baud rate is set to a wrong value.
@Turbo Sir
Thank you for the reply
I observed your statements
and I Hold on error_communication
please seen in the screenshot
Yay, another screenshot that shows ABSOLUTELY NOTHING NEW OR USEFUL.
The app_error_handling stuff unfortunately contains a "naked" function which "destroys" the otherwise useable stack trace. Thus the "wrong" value for the variables shown here. Try setting a breakpoint on the line 560.
You know you can copy and paste those error messages as text, right...?
I also highly recommend taking a beginner course in C microcontroller programming, since you seem to be unable to understand the NordicSemi example C code properly. Yes they use a ton of macros, but these are not at all difficult to understand or read.