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

GPIO pins don't work as expected.

Hi to everyone!

I have a custom board (based on nRF52832) with two LEDS and other GPIO ports. In some point of the code I have to activate one device by setting one port to 1. This is designed like that for power saving. But I realized this device never turns on.

Unless there is other way, I use the function nrf_gpio_cfg_output to configure the port and the functions nrf_gpio_pin_set and nrf_gpio_pin_clear to turn the device on and off, respectively.

After some tests I detected that even the LEDs (and the other GPIO ports) are not working correctly (but in nRF52832DK they worked). If I use nrf_gpio_cfg_output with one LED, then this LED lights up until I use again nrf_gpio_cfg_output with other port (for example with the other LED).

After configuring (I hope) the LEDs as output, when I use nrf_gpio_pin_clear the LEDs lights up and when I use nrf_gpio_pin_set the LEDs turn off. So the result I get is exactly the opposite I expected.

Any Ideas why this is happening?

Could be a problem with crystals or something like that?

Thanks in advance!

Parents
  • I do not saying any of the examples are not working, that is why I put the word problem between quoation marks, because in the end I thought I was missing something.

    I am saying that I do not understand why a function to turn on a led uses clear and a function to turn it off uses set, because I guess that set puts the pin in 1 (sending current) and clear puts the pin in 0 (cleaning the current). And with this current I turn on the led or I turn off the led if I remove the current. At least I thought so until I saw how are working the leds.

    And I am taking the pca10040.h file as example to develop our custom board definition header file because both the custom board and the develop board use the same SoC. That is why I asked you for the meaning of LEDS_ACTIVE_STATE variable and why it's own value has a number and is 0.

Reply
  • I do not saying any of the examples are not working, that is why I put the word problem between quoation marks, because in the end I thought I was missing something.

    I am saying that I do not understand why a function to turn on a led uses clear and a function to turn it off uses set, because I guess that set puts the pin in 1 (sending current) and clear puts the pin in 0 (cleaning the current). And with this current I turn on the led or I turn off the led if I remove the current. At least I thought so until I saw how are working the leds.

    And I am taking the pca10040.h file as example to develop our custom board definition header file because both the custom board and the develop board use the same SoC. That is why I asked you for the meaning of LEDS_ACTIVE_STATE variable and why it's own value has a number and is 0.

Children
No Data
Related