<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic WAKEUP inverted (newbie question) in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/WAKEUP-inverted-newbie-question/m-p/562999#M16592</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by abb on Mon Feb 03 09:26:17 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to get an interrupt on USB bus attach/detach events. For this I connect WAKEUP pin to VUSB (P2_5 pin on MCB4357) and to the ground via 22K resistor. It works fine, except the fact that it works up-side-down. I mean, as far as I can tell, when in EVRT_SRC_ACTIVE_HIGH_LEVEL configuration the system generates an IRQ when input level is low, and other way around.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My code is below. I know I must be doing something wrong, but can't figure out what. Any help is appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PS. I have surrounded my code with code-tag, but somehow it still looses identation...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Alex&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "board.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint32_t systicks = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void SysTick_Handler(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;systicks++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define VUSB_WAKEUP_SRC EVRT_SRC_WAKEUP1&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint8_t attached_to_host;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint32_t nwakeups; // for debugging only&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EVRT_IRQHandler(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (Chip_EVRT_IsSourceInterrupting(VUSB_WAKEUP_SRC)) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ClrPendIntSrc(VUSB_WAKEUP_SRC);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (attached_to_host == 0) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_LOW_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} else {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_HIGH_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nwakeups++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// DEBUGOUT("* attached_to_host=%d, nwakeups=%d\r\n", attached_to_host, nwakeups);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void evrt_init(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_Init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_SetUpIntSrc(VUSB_WAKEUP_SRC, ENABLE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_SetPriority(EVENTROUTER_IRQn, ((0x01 &amp;lt;&amp;lt; 3) | 0x01)); // preemption = 1, sub-priority = 1 FIXME&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_HIGH_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nwakeups = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_EnableIRQ(EVENTROUTER_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int main(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SystemCoreClockUpdate();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Board_Init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DEBUGOUT("\r\nstarted\r\n");&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SysTick_Config(SystemCoreClock/1000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;evrt_init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for(;;) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(systicks=0; systicks&amp;lt;1000; ) {}; // 1s delay&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DEBUGOUT("attached_to_host=%d, nwakeups=%d\r\n", attached_to_host, nwakeups);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:46:44 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:46:44Z</dc:date>
    <item>
      <title>WAKEUP inverted (newbie question)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/WAKEUP-inverted-newbie-question/m-p/562999#M16592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by abb on Mon Feb 03 09:26:17 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to get an interrupt on USB bus attach/detach events. For this I connect WAKEUP pin to VUSB (P2_5 pin on MCB4357) and to the ground via 22K resistor. It works fine, except the fact that it works up-side-down. I mean, as far as I can tell, when in EVRT_SRC_ACTIVE_HIGH_LEVEL configuration the system generates an IRQ when input level is low, and other way around.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My code is below. I know I must be doing something wrong, but can't figure out what. Any help is appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PS. I have surrounded my code with code-tag, but somehow it still looses identation...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Alex&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "board.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint32_t systicks = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void SysTick_Handler(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;systicks++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define VUSB_WAKEUP_SRC EVRT_SRC_WAKEUP1&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint8_t attached_to_host;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;static volatile uint32_t nwakeups; // for debugging only&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EVRT_IRQHandler(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (Chip_EVRT_IsSourceInterrupting(VUSB_WAKEUP_SRC)) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ClrPendIntSrc(VUSB_WAKEUP_SRC);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if (attached_to_host == 0) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_LOW_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;} else {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_HIGH_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nwakeups++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// DEBUGOUT("* attached_to_host=%d, nwakeups=%d\r\n", attached_to_host, nwakeups);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void evrt_init(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_Init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_SetUpIntSrc(VUSB_WAKEUP_SRC, ENABLE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_SetPriority(EVENTROUTER_IRQn, ((0x01 &amp;lt;&amp;lt; 3) | 0x01)); // preemption = 1, sub-priority = 1 FIXME&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Chip_EVRT_ConfigIntSrcActiveType(VUSB_WAKEUP_SRC, EVRT_SRC_ACTIVE_HIGH_LEVEL);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;attached_to_host = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;nwakeups = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NVIC_EnableIRQ(EVENTROUTER_IRQn);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int main(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SystemCoreClockUpdate();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Board_Init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DEBUGOUT("\r\nstarted\r\n");&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SysTick_Config(SystemCoreClock/1000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;evrt_init();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for(;;) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(systicks=0; systicks&amp;lt;1000; ) {}; // 1s delay&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DEBUGOUT("attached_to_host=%d, nwakeups=%d\r\n", attached_to_host, nwakeups);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:46:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/WAKEUP-inverted-newbie-question/m-p/562999#M16592</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:46:44Z</dc:date>
    </item>
  </channel>
</rss>

