source: atk1_sh2/trunk/syslib/sh2-gnu/cq7144a/hw_serial.c@ 4

Last change on this file since 4 was 4, checked in by msugi, 14 years ago

Interface誌2006年8月号添付のTOPPERS/OSEK用SH2をTOPPERS/ATK1に対応させました.多少のバグフィックスも行っています.

File size: 4.3 KB
Line 
1/*
2 * TOPPERS/OSEK Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * OSEK Kernel
5 *
6 * Copyright (C) 2004-2006 by Witz Corporation, JAPAN
7 *
8 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚©CFree Software Foundation
9 * ‚É‚æ‚Á‚ÄŒö•\‚³‚ê‚Ä‚¢‚é GNU General Public License ‚Ì Version 2 ‚É‹L
10 * q‚³‚ê‚Ä‚¢‚éðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒFƒAi–{ƒ\ƒtƒgƒEƒFƒA
11 * ‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏEÄ”z•ziˆÈ‰ºC
12 * —˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
13 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
14 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
15 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
16 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
17 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
18ƒƒ“ƒgi—˜—p
19 * ŽÒƒ}ƒjƒ…
20ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
21 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
22 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
23 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
24 * ‚ƁD
25 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
26ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
27ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
28 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
29 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
30 * •ñ‚·‚邱‚ƁD
31 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
32 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
33 *
34 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
35 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC‚»‚Ì“K—p‰Â”\«‚à
36 * ŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼
37 * Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚𕉂í‚È‚¢D
38 *
39 */
40
41/*
42 * ƒTƒ“ƒvƒ‹Œü‚¯ƒ^[ƒQƒbƒgˆË‘¶ƒVƒŠƒAƒ‹IOƒ‚ƒWƒ…
43[ƒ‹iCQ7144A—pj
44 */
45
46/*
47 * –{Šî”‚ÍUART1‚ðAISP(In system programming)‚ƃVƒŠƒAƒ‹’ʐM‚ÅŒ“—p‚·‚éD
48 * ‚±‚Ì‚½‚߁A–{ƒ‚ƒWƒ…
49[ƒ‹‚ɂ‚¢‚Ä‚àUART1‚ðƒVƒŠƒAƒ‹IO‚ÉŽg—p‚·‚éD
50 */
51
52#include "hw_serial.h"
53#include "sh7144.h"
54
55
56/*
57 * ƒVƒŠƒAƒ‹IOƒ‚ƒWƒ…
58[ƒ‹‰Šú‰»ˆ—
59 *
60 * Š„ž‚Ý‹ÖŽ~ó‘ԂŌďo‚·‚±‚ƁD
61 */
62void
63InitHwSerial( void )
64{
65 /*
66 * SCI1ƒ‚ƒWƒ…
67[ƒ‹ƒXƒ^ƒ“ƒoƒC‰ðœ
68 */
69 MSTCR1 &= (UINT16)~0x0002; /* SCI_1—LŒø */
70
71 /*
72 * ‘—ŽóM‚ð‹ÖŽ~‚µ‚ÄŠeƒŒƒWƒXƒ^Ý’è
73 */
74 SCR1 = (UINT8)0x00; /* ‘—ŽóM‹ÖŽ~(SCK’[Žq0,1‚Æ‚à–³Ž‹) */
75
76 /*
77 * “à•”ƒNƒƒbƒNŽg—p, ’²•à“¯Šú’ʐM, 8ƒrƒbƒgƒf[ƒ^, 1ƒXƒgƒbƒvƒrƒbƒg,
78 * ƒpƒŠƒeƒB‚È‚µ, ƒ}ƒ‹ƒ`ƒvƒƒZƒbƒT–³Œø, ‚P•ªŽüƒNƒƒbƒN
79 */
80 SMR1 = (UINT8)0x00;
81
82 /*
83 * ƒ{[ƒŒ[ƒgÝ’èiÝ’è’l‚̓wƒbƒ_ŽQÆj
84 */
85 BRR1 = CFG_BRR_SERIAL;
86
87 /*
88 * ŽóMŠ„ž‚݃Œƒxƒ‹Ý’èiÝ’背ƒxƒ‹‚̓wƒbƒ_ŽQÆj
89 * SSR ‚Ì RDRF ‚ªŠ„ž‚Ý—v‹ƒtƒ‰ƒO‚¾‚ªA‰Šú’l0‚Ì‚½‚ß‘€ì‚µ‚È‚¢D
90 *
91 * ‘—MŠ„ž‚Ý‚ÍŽg—p‚µ‚È‚¢D
92 */
93 IPRF = (UINT16) ((IPRF & ~0xF) | CFG_INTLVL_SERIAL_RX1);
94 SCR1 |= (UINT8)0x40;
95
96 /*
97 * IOƒ|[ƒg‚ðƒVƒŠƒAƒ‹ƒ|[ƒg‚ɕύX
98 */
99 PACRL2 |= (UINT16)0x0140; /* PA4‚ð TXD1 o—Í‚É, PA3‚ð RXD “ü—Í‚É */
100
101 /*
102 * ‘—ŽóM‚ð‹–‰Â
103 */
104 SCR1 |= (UINT8)0x30; /* ‘—ŽóM‹–‰Â */
105
106} /* InitHwSerial */
107
108
109/*
110 * ƒVƒŠƒAƒ‹IOƒ‚ƒWƒ…
111[ƒ‹’âŽ~ˆ—
112 *
113 * Š„ž‚Ý‹ÖŽ~ó‘ԂŌďo‚·‚±‚ƁD
114 * ãˆÊ‚ŏo—Í‚ªŠ®—¹‚µ‚Ä‚¢‚邱‚Æ‚ð•Ûá‚·‚邱‚ƁD
115 */
116void
117TermHwSerial( void )
118{
119 /*
120 * ‘—ŽóM‚¨‚æ‚Ñ‘—ŽóMŠ„ž‚Ý‹ÖŽ~
121 */
122 SCR1 = (UINT8)0x0; /* ‘—ŽóM‹ÖŽ~(SCK’[Žq0,1‚Æ‚à–³Ž‹) */
123 SSR1 = (UINT8)0x0; /* ƒXƒe[ƒ^ƒX‰Šú‰» */
124
125 /*
126 * ƒVƒŠƒAƒ‹Š„ž‚݃Œƒxƒ‹Å’ቻ
127 */
128 IPRF &= (UINT16)(~(0xF << 12));
129
130 /*
131 * SCI1ƒ‚ƒWƒ…
132[ƒ‹ƒXƒ^ƒ“ƒoƒC
133 */
134 MSTCR1 &= (UINT16)~0x0002; /* SCI_1–³Œø */
135
136} /* TermHwSerial */
137
138
139/*
140 * ƒVƒŠƒAƒ‹IOƒ‚ƒWƒ…
141[ƒ‹ŽóMƒGƒ‰[Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
142 */
143#if defined( OMIT_ISR1_ENTRY )
144/* ISR1“ü‚èŒû–¢¶¬Žž‚Í–{ŠÖ”‚ðŠ„ž‚݊֐”Žw’è‚·‚é */
145#pragma interrupt ErrHwSerialInt
146#endif /* OMIT_ISR1_ENTRY */
147void ErrHwSerialInt( void );
148void ErrHwSerialInt( void )
149{
150 SSR1 &= (UINT8)~0x38;
151}
152
153
154/*
155 * ƒVƒŠƒAƒ‹IOƒ‚ƒWƒ…
156[ƒ‹ŽóMŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
157 */
158#if defined( OMIT_ISR1_ENTRY )
159/* ISR1“ü‚èŒû–¢¶¬Žž‚Í–{ŠÖ”‚ðŠ„ž‚݊֐”Žw’è‚·‚é */
160#pragma interrupt RxHwSerialInt
161#endif /* OMIT_ISR1_ENTRY */
162void RxHwSerialInt( void );
163void RxHwSerialInt( void )
164{
165 UINT8 rx_data; /* ƒf[ƒ^ŽóMƒoƒbƒtƒ@ */
166
167 /*
168 * ƒI[ƒoƒ‰ƒ“–hŽ~‚Ì‚½‚ß‚Ü‚¸“Ǎž‚Þ
169 */
170 rx_data = RDR1;
171
172 /*
173 * Š„ž‚Ý—v‹‚ðƒNƒŠƒA
174 */
175 SSR1 &= ~0x40;
176
177 /*
178 * ³íŽóMŽž‚̓R[ƒ‹ƒoƒbƒNŽÀs
179 * ƒGƒ‰[Žž‚̓Gƒ‰[•œ‹Aˆ—
180 */
181 if( ( SSR1 & (UINT8)0x38 ) == 0x0 ){
182 RxSerialInt( rx_data );
183 }
184 else{
185 SSR1 &= (UINT8)~0x38;
186 }
187
188} /* RxHwSerialInt */
189
190
Note: See TracBrowser for help on using the repository browser.