Mark Chen / NU480_UART_9BIT
Revision:
9:bd6af3d4c651
Parent:
8:716d4274f7b7
Child:
10:89f383af0885
diff -r 716d4274f7b7 -r bd6af3d4c651 UART9BIT.CPP
--- a/UART9BIT.CPP	Mon Aug 26 13:33:10 2019 +0800
+++ b/UART9BIT.CPP	Tue Aug 27 10:48:12 2019 +0800
@@ -36,20 +36,43 @@
 
 void UART9BIT::interrupt_handler_asynch(void)
 {
+  
     int event;    
-    int rx_event = event & SERIAL_EVENT_RX_MASK;
-   
+    int rx_event;
+
+     
+
     if(Enable9Bit)
+    {
     event=serial_irq_handler_asynch9bit(&_serial);
+    
+    sprintf(uart9debug,"Uart9 serial_irq_handler_asynch9bit event=%04x\r\n",event);  uartdebug=true;
+
+    }
     else
+    {
     event=serial_irq_handler_asynch(&_serial);
+    //sprintf(uart9debug,"Uart9 serial_irq_handler_asynch \r\n");
+     //        uartdebug=true;
+    }
+
+    rx_event = event & SERIAL_EVENT_RX_MASK;
 
 
+   // sprintf(uart9debug,"Uart9 serial_irq  _rx_asynch_set=%d rx_event=%04x event=%04x  SERIAL_EVENT_RX_MASK=%04x\r\n",_rx_asynch_set,rx_event,event,SERIAL_EVENT_RX_MASK);    
+    //      uartdebug=true;
+
     if (_rx_asynch_set && rx_event) {
+        
+
         event_callback_t cb = _rx_callback;
         _rx_asynch_set = false;
         _rx_callback = NULL;
+
         if (cb) {
+             sprintf(uart9debug,"Uart9 run cb \r\n");
+         uartdebug=true;
+            
             cb.call(rx_event);
         }
         sleep_manager_unlock_deep_sleep();
@@ -117,8 +140,7 @@
 
     if(Enable9Bit)
     {
-    serial_rx_asynch9bit(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, char_match, _rx_usage);
-    printf("serial_rx_asynch9bit \r\n");
+    serial_rx_asynch9bit(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, char_match, _rx_usage);   
     }
     else
     {    
@@ -132,6 +154,11 @@
   return serial_getc_9bit(&_serial);
 }
 
+void UART9BIT::putu16(uint16_t data)
+{
+  return serial_putc_9bit(&_serial,data);
+}
+
 int UART9BIT::read(uint16_t *buffer, int length, const event_callback_t &callback, int event, unsigned char char_match)
 {
     int result = 0;