OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / driver / serial / at91 / at91uartdrv_isr.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  at91uartdrv_isr.c
5  * @brief %jp{ATMEL AT91シリーズUART用デバイスドライバ}
6  *
7  * Copyright (C) 2006-2007 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include "at91uartdrv_local.h"
13
14
15 /* 受信割り込み */
16 void At91UartDrv_Isr(VPARAM Param)
17 {
18         C_AT91UARTDRV   *self;
19         unsigned long   uwCsr;
20         int                             c;
21
22         self = (C_AT91UARTDRV *)Param;
23
24         uwCsr = AT91UART_REG_READ(self, AT91UART_US_CSR);
25         
26         /* 受信 */    
27         if ( uwCsr & 0x00000001 )
28         {
29                 do
30                 {
31                         c = AT91UART_REG_READ(self, AT91UART_US_RHR);
32                         StreamBuf_SendChar(&self->StmBufRecv, c);
33                         uwCsr = AT91UART_REG_READ(self, AT91UART_US_CSR);
34                 } while ( uwCsr & 0x00000001 );
35                 
36                 SysEvt_Set(self->hEvtRecv);
37         }
38         
39         /* 送信チェック */        
40         if ( uwCsr & 0x00000002 )
41         {
42                 AT91UART_REG_WRITE(self, AT91UART_US_IDR, 0x00000002);  /* 送信割り込み禁止 */          
43                 SysEvt_Set(self->hEvtSend);
44         }
45 }
46
47
48 /* end of file */