X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Farm%2Fdrv%2Fser_at91.c;h=19f36df859cc2e6f7e38070f2af318888004a713;hb=f8d7da88791854c7ec53a42543f55678c3a57db6;hp=74cca47bffdbdfd47949e0e9f60f95890d09d79a;hpb=345f93de1963f49bdb194d2b06c8c5d7ba0a3e5f;p=bertos.git diff --git a/bertos/cpu/arm/drv/ser_at91.c b/bertos/cpu/arm/drv/ser_at91.c index 74cca47b..19f36df8 100644 --- a/bertos/cpu/arm/drv/ser_at91.c +++ b/bertos/cpu/arm/drv/ser_at91.c @@ -287,8 +287,8 @@ static void uart0_init( US0_IDR = 0xFFFFFFFF; /* Set the vector. */ AIC_SVR(US0_ID) = uart0_irq_dispatcher; - /* Initialize to edge triggered with defined priority. */ - AIC_SMR(US0_ID) = AIC_SRCTYPE_INT_EDGE_TRIGGERED | SERIRQ_PRIORITY; + /* Initialize to level sensitive with defined priority. */ + AIC_SMR(US0_ID) = AIC_SRCTYPE_INT_LEVEL_SENSITIVE | SERIRQ_PRIORITY; PMC_PCER = BV(US0_ID); /* @@ -382,8 +382,8 @@ static void uart1_init( US1_IDR = 0xFFFFFFFF; /* Set the vector. */ AIC_SVR(US1_ID) = uart1_irq_dispatcher; - /* Initialize to edge triggered with defined priority. */ - AIC_SMR(US1_ID) = AIC_SRCTYPE_INT_EDGE_TRIGGERED | SERIRQ_PRIORITY; + /* Initialize to level sensitive with defined priority. */ + AIC_SMR(US1_ID) = AIC_SRCTYPE_INT_LEVEL_SENSITIVE | SERIRQ_PRIORITY; PMC_PCER = BV(US1_ID); /* @@ -792,6 +792,7 @@ static void uart0_irq_rx(void) /* Should be read before US_CRS */ ser_uart0->status |= US0_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR); + US0_CR = BV(US_RSTSTA); char c = US0_RHR; struct FIFOBuffer * const rxfifo = &ser_uart0->rxfifo; @@ -856,6 +857,7 @@ static void uart1_irq_rx(void) /* Should be read before US_CRS */ ser_uart1->status |= US1_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR); + US1_CR = BV(US_RSTSTA); char c = US1_RHR; struct FIFOBuffer * const rxfifo = &ser_uart1->rxfifo;