3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2000-2003 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
11 * ¾åµÃøºî¸¢¼Ô¤Ï¡¤°Ê²¼¤Î (1)¡Á(4) ¤Î¾ò·ï¤«¡¤Free Software Foundation
12 * ¤Ë¤è¤Ã¤Æ¸øɽ¤µ¤ì¤Æ¤¤¤ë GNU General Public License ¤Î Version 2 ¤Ëµ
13 * ½Ò¤µ¤ì¤Æ¤¤¤ë¾ò·ï¤òËþ¤¿¤¹¾ì¹ç¤Ë¸Â¤ê¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¡ÊËÜ¥½¥Õ¥È¥¦¥§¥¢
14 * ¤ò²þÊѤ·¤¿¤â¤Î¤ò´Þ¤à¡¥°Ê²¼Æ±¤¸¡Ë¤ò»ÈÍÑ¡¦Ê£À½¡¦²þÊÑ¡¦ºÆÇÛÉۡʰʲ¼¡¤
15 * ÍøÍѤȸƤ֡ˤ¹¤ë¤³¤È¤ò̵½þ¤ÇµöÂú¤¹¤ë¡¥
16 * (1) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¥½¡¼¥¹¥³¡¼¥É¤Î·Á¤ÇÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¤¾åµ¤ÎÃøºî
17 * ¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ¤Î̵Êݾڵ¬Ä꤬¡¤¤½¤Î¤Þ¤Þ¤Î·Á¤Ç¥½¡¼
18 * ¥¹¥³¡¼¥ÉÃæ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¡¥
19 * (2) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¡¤¥é¥¤¥Ö¥é¥ê·Á¼°¤Ê¤É¡¤Â¾¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Ë»È
20 * ÍѤǤ¤ë·Á¤ÇºÆÇÛÉÛ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¤ºÆÇÛÉÛ¤Ëȼ¤¦¥É¥¥å¥á¥ó¥È¡ÊÍøÍÑ
21 * ¼Ô¥Þ¥Ë¥å¥¢¥ë¤Ê¤É¡Ë¤Ë¡¤¾åµ¤ÎÃøºî¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ
22 * ¤Î̵Êݾڵ¬Äê¤ò·ÇºÜ¤¹¤ë¤³¤È¡¥
23 * (3) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ò¡¤µ¡´ï¤ËÁȤ߹þ¤à¤Ê¤É¡¤Â¾¤Î¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Ë»È
24 * ÍѤǤ¤Ê¤¤·Á¤ÇºÆÇÛÉÛ¤¹¤ë¾ì¹ç¤Ë¤Ï¡¤¼¡¤Î¤¤¤º¤ì¤«¤Î¾ò·ï¤òËþ¤¿¤¹¤³
26 * (a) ºÆÇÛÉÛ¤Ëȼ¤¦¥É¥¥å¥á¥ó¥È¡ÊÍøÍѼԥޥ˥奢¥ë¤Ê¤É¡Ë¤Ë¡¤¾åµ¤ÎÃø
27 * ºî¸¢É½¼¨¡¤¤³¤ÎÍøÍѾò·ï¤ª¤è¤Ó²¼µ¤Î̵Êݾڵ¬Äê¤ò·ÇºÜ¤¹¤ë¤³¤È¡¥
28 * (b) ºÆÇÛÉۤηÁÂÖ¤ò¡¤Ê̤ËÄê¤á¤ëÊýË¡¤Ë¤è¤Ã¤Æ¡¤TOPPERS¥×¥í¥¸¥§¥¯¥È¤Ë
30 * (4) ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ÎÍøÍѤˤè¤êľÀÜŪ¤Þ¤¿¤Ï´ÖÀÜŪ¤ËÀ¸¤¸¤ë¤¤¤«¤Ê¤ë»
31 * ³²¤«¤é¤â¡¤¾åµÃøºî¸¢¼Ô¤ª¤è¤ÓTOPPERS¥×¥í¥¸¥§¥¯¥È¤òÌÈÀÕ¤¹¤ë¤³¤È¡¥
33 * ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ï¡¤ÌµÊݾڤÇÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡¥¾åµÃøºî¸¢¼Ô¤ª
34 * ¤è¤ÓTOPPERS¥×¥í¥¸¥§¥¯¥È¤Ï¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¤Ë´Ø¤·¤Æ¡¤¤½¤ÎŬÍѲÄǽÀ¤â
35 * ´Þ¤á¤Æ¡¤¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤ï¤Ê¤¤¡¥¤Þ¤¿¡¤ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ÎÍøÍѤˤè¤êľ
36 * ÀÜŪ¤Þ¤¿¤Ï´ÖÀÜŪ¤ËÀ¸¤¸¤¿¤¤¤«¤Ê¤ë»³²¤Ë´Ø¤·¤Æ¤â¡¤¤½¤ÎÀÕǤ¤òÉé¤ï¤Ê¤¤¡¥
40 #ifndef _TL16PIR552_H_
41 #define _TL16PIR552_H_
43 #include <s_services.h> /* ¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥ÐÍÑɸ½à¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë */
46 * ¥·¥ê¥¢¥ë¡¿¥Ñ¥é¥ì¥ë I/O TL16PIR552(TI) ´ØÏ¢¤ÎÄêµÁ
48 /* TL16PIR552¤Î¥ì¥¸¥¹¥¿¤Î¥¢¥É¥ì¥¹ */
49 #define RBR 0x00 /* Receiver Buffer (Æɤ߽Ф·) */
50 #define THR 0x00 /* Transmitter Holding Register (½ñ¤½Ð¤·) */
51 #define DLL 0x00 /* Divisor Latch (LSB) */
52 #define IER 0x10 /* Interrupt-Enable Register */
53 #define DLM 0x10 /* Divisor Latch (MSB) */
54 #define IIR 0x20 /* Interrupt-Ident Register (Æɤ߽Ф·) */
55 #define FCR 0x20 /* FIFO Control Register (½ñ¤½Ð¤·) */
56 #define LCR 0x30 /* Line-Control Register */
57 #define MCR 0x40 /* Modem-Control Register */
58 #define LSR 0x50 /* Line-Status Register */
59 #define MSR 0x60 /* Modem-Status Register */
60 #define SCR 0x70 /* Scratch Register */
63 #define WORD_LENGTH_8 (BIT1 | BIT0)
64 #define STOP_BITS_1 0u /* BIT2 */
65 #define PARITY_NON 0u /* BIT3, 4 */
67 #define DIVISOR_LATCH_ACC BIT7
71 #define RECEIVE_DATA_AVAILABLE BIT0
72 #define TRANS_REG_EMPTY BIT1
73 #define RECEIVE_LINE_STATUS BIT2
74 #define MODEM_STATUS BIT3
79 #define ENABLE_EXT_INT BIT3
80 #define AUTOFLOW_CONTROL BIT5
83 #define FIFO_ENABLE BIT0
84 #define RECEIVE_FIFO_RESET BIT1
85 #define TRANS_FIFO_RESET BIT2
86 #define RECEIVE_TRIG_1_BYTE 0u /* BIT6, 7 */
87 #define RECEIVE_TRIG_4_BYTE BIT6
88 #define RECEIVE_TRIG_8_BYTE BIT7
89 #define RECEIVE_TRIG_14_BYTE (BIT6 | BIT7)
93 #define INT_RECEIVE_DATA BIT2
94 #define INT_CHAR_TIME_OUT (BIT3 | BIT2)
95 #define INT_TRANS_EMPTY BIT1
101 /* ¥Ü¡¼¥ì¡¼¥ÈÄêµÁ´Ø·¸ */
102 #define PRE_DIVISOR 4
103 #define DIVISOR XIN_CLOCK / (8 * DEVIDE_RATIO * PRE_DIVISOR)
108 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È´ÉÍý¥Ö¥í¥Ã¥¯¤ÎÄêµÁ
110 typedef struct sio_port_control_block SIOPCB;
112 #endif /* _MACRO_ONLY */
115 * SIOÍÑ¥·¥¹¥Æ¥à¥¤¥ó¥¿¥Õ¥§¡¼¥¹¥ì¥¤¥ä¡¼
117 /* x : ¥Ý¡¼¥È¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹¡¢y : ¥ì¥¸¥¹¥¿¥ª¥Õ¥»¥Ã¥È¡¢z : ¥ì¥¸¥¹¥¿ÃÍ */
118 #define tl16pir552_wrb( x, y, z ) sil_wrb_mem( (VP)(x + y), z )
119 #define tl16pir552_reb( x, y ) sil_reb_mem( (VP)(x + y) )
122 * ¥³¡¼¥ë¥Ð¥Ã¥¯¥ë¡¼¥Á¥ó¤Î¼±ÊÌÈÖ¹æ
124 #define SIO_ERDY_SND 1u /* Á÷¿®²Äǽ¥³¡¼¥ë¥Ð¥Ã¥¯ */
125 #define SIO_ERDY_RCV 2u /* ¼õ¿®ÄÌÃÎ¥³¡¼¥ë¥Ð¥Ã¥¯ */
130 * SIO¥É¥é¥¤¥Ð¤Î½é´ü²½¥ë¡¼¥Á¥ó
132 extern void tl16pir552_initialize(void);
135 * ¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Ý¡¼¥È¤¬¤¢¤ë¤«¡©
137 extern BOOL tl16pir552_openflag(void);
140 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Î¥ª¡¼¥×¥ó
142 extern SIOPCB *tl16pir552_opn_por(ID siopid, VP_INT exinf);
145 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Î¥¯¥í¡¼¥º
147 extern void tl16pir552_cls_por(SIOPCB *siopcb);
150 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Ø¤Îʸ»úÁ÷¿®
152 extern BOOL tl16pir552_snd_chr(SIOPCB *siopcb, char c);
155 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Îʸ»ú¼õ¿®
157 extern INT tl16pir552_rcv_chr(SIOPCB *siopcb);
160 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Îµö²Ä
162 extern void tl16pir552_ena_cbr(SIOPCB *siopcb, UINT cbrtn);
165 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Î¶Ø»ß
167 extern void tl16pir552_dis_cbr(SIOPCB *siopcb, UINT cbrtn);
170 * SIO¤Î³ä¹þ¤ß¥µ¡¼¥Ó¥¹¥ë¡¼¥Á¥ó
172 extern void tl16pir552_uart0_isr(void);
173 extern void tl16pir552_uart1_isr(void);
176 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤ÎÁ÷¿®²Äǽ¥³¡¼¥ë¥Ð¥Ã¥¯
178 extern void tl16pir552_ierdy_snd(VP_INT exinf);
181 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤«¤é¤Î¼õ¿®ÄÌÃÎ¥³¡¼¥ë¥Ð¥Ã¥¯
183 extern void tl16pir552_ierdy_rcv(VP_INT exinf);
186 * ¥«¡¼¥Í¥ëµ¯Æ°»þÍѤνé´ü²½ (sys_putc¤ÇÍøÍÑ)
188 extern void tl16pir552_init(void);
191 * ¥·¥ê¥¢¥ëI/O¥Ý¡¼¥È¤Ø¤Îʸ»úÁ÷¿®¡Ê¥Ý¡¼¥ê¥ó¥°¡Ë
193 extern void tl16pir552_putchar_pol(char c);
195 #endif /* _MACRO_ONLY */
196 #endif /* _TL16PIR552_H_ */