This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf51822 not working in non-Debug mode

I have nrf51822 controlling 2 I2C devices:

  1. OLED display - SSD1306
  2. Capacitive touch sensor - CAP1203

When in debug mode I get images on display, however when i disconnect debugger I dont get any output on the screen. Why would it work differently in a non-debug mode?

Second problem is that CAP1203 generates interrupt by pulling IRQ line low and then I need to issue I2C command to clear the register so that the IRQ line would be released. In debug step-by-step mode if I do it step by step I get GPIO interrupt, process it send I2C command and it works. In debug mode but without step-by-step the first time I receive interrupt correctly and then IRQ line doesnt get released. Any idea what could be wrong?

Thanks!

Parents
  • It sounds like it could be a timing issue with the configurations of the various parts. It could be that some part of the initialization is going too fast for the display/sensor to handle it in normal mode, but when you step through in debug mode t works. Also, make sure that the 16 MHz is running as expected, in debug mode this is forced on, and that could be the potential difference that makes this work in debug mode, but not in normal mode.

  • How are you forcing the HFCLK on? Are you able to verify by for example an oscilloscope that the external 16 MHz is actually running? Have you tried adding some delays in the initialization? Did that have any effect? Try initializing the peripherals and timers with the softdevice safe sd_ commands after you have started up the stack/softdevice. Is it asserting or is it still running once you enable the softdevice?

Reply
  • How are you forcing the HFCLK on? Are you able to verify by for example an oscilloscope that the external 16 MHz is actually running? Have you tried adding some delays in the initialization? Did that have any effect? Try initializing the peripherals and timers with the softdevice safe sd_ commands after you have started up the stack/softdevice. Is it asserting or is it still running once you enable the softdevice?

Children
No Data
Related