I am trying to use PIO0_4 as output on a LPC824, but I am missing something. There are no problems with other pins.
There is a statement in the datasheet rev 1.3 on page 10 - note 3 in Table 3, pin description - "The wake-up pin function can be disabled and the pin can be used for other purposes, if the WKT low-power oscillator is enabled for waking up the part from Deep power-down mode."
ADC11 is switched off in PINENABLE
I have tried to put value 2 in DPDCTRL, but that doesn't make any difference.
Pin seems to be input with pullup.
已解决! 转到解答。
Hi Kurt Mirdell,
Thank you for your reply.
I've used the lpcxpresso804_led_blinky demo which is from the SDK library as the template, and do a bit modification to make the PIO0_4 toggles per 1 second.
It works well, please check the attachment and give a try.
Fig 1
Fig 2
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
Hi Kurt Mirdell ,
Thank you for your interest in NXP Semiconductor products and
for the opportunity to serve you.
I think you forgot to configure the MODE bits in the PIO0_4 register.
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
Hi Kurt Mirdell,
Thanks for your reply.
Actually, you should configure the MODE bits of PIO_4 to be 0x00 instead of the 0x02.
Please give a try.
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
I have tested your suggestion, but it doesn't change anything. PIO0_4 is not working as output regardless of pull-up selections.
According to my understanding, you enable the output in the direction registers (DIR/DIRSET/DIRCLR/DIRNOT). The pull-up enabling does not affect output enabling, but it is a little stupid to have pull-ups enabled on an output.
What I am looking for is the secret, not so well documented thing that you need to do to use PIO0_4 as an output instead of the WAKEPAD function.
Hi Kurt Mirdell,
Thanks for your reply.
It seems a bit weird.
I'd like to replicate the phenomenon on my site, so whether you can share a compile-able demo, then I'll run it with the LPCXpresso 804 board for testing.
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
Hi Kurt Mirdell,
Thank you for your reply.
I've used the lpcxpresso804_led_blinky demo which is from the SDK library as the template, and do a bit modification to make the PIO0_4 toggles per 1 second.
It works well, please check the attachment and give a try.
Fig 1
Fig 2
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
Hi,
The problem was actually a software problem.
I had a statement that was
LPC_GPIO_PORT->DIRSET[0] = (1 << AVDD_ON);
AVDD_ON is equated to the port bit number.
I changed that to
LPC_GPIO_PORT->DIRSET[0] = (1 << AVDD_ON) || (1 << PIO_4);
where PIO_4 is equated to 4.
It was one bar too much. It should have been bitwise or, not logical or.
Correct statement is
LPC_GPIO_PORT->DIRSET[0] = (1 << AVDD_ON) | (1 << PIO_4);
And then it works.
Thanks for sharing.
This has happened to me before, I looked at it for hours and didn't see it.
One thing that helps, when you are sufficiently desperate, is to look at the generated assembly code.
Hi Kurt Mirdell,
Glad to hear the news.
Have a great day,
TIC
-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------
I have a fully functional software for a special hardware. I don't think it would be any good if you try that on some other hardware.
My tests has been made both by additions to my software and also by direct manipulating things in my monitoring software where I can access all memory and ports.
According to my understanding, you should do the following to set a PIO_4 to output:
Bit 24 in PINENABLE0, address 0x4000 C1C0, should be 1 but that is default on reset so it should not be necessary to change.
Enable GPIO clock (bit 6) in SYSAHBCLKCTRL, address 0x4004 8080, also default on reset.
Set port as output by writing a 1 in correct position (0x10 for PIO_4) in GPIO direction port register (DIR0, address 0xA000 2000)
Pin should now be output and should be possible to set to 0/1 by writing 0/0x10 to GPIO port pin register (PIN0, address 0xA000 2100)
I have checked actual register contents.
I think this has something to do with the wake-up pin functionality on this pin.