source: atk1_sh2/trunk/tools/sh2-gnu/cq7144a/sample_config.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: 6.4 KB
Line 
1/*
2 * TOPPERS/OSEK Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * OSEK Kernel
5 *
6 * Copyright (C) 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ˆË‘¶ƒ‚ƒWƒ…
43[ƒ‹iCQ7144A—pj
44 */
45
46
47#include "sample_config.h"
48#include "sh7144.h"
49
50
51/*
52 * OIL’è‹`ƒVƒ“ƒ{ƒ‹‚ÌŠO•”ŽQÆ
53 */
54DeclareCounter( SampleCnt );
55
56
57/*
58 * “à•”ŠÖ”ƒvƒƒgƒ^ƒCƒvéŒ¾
59 */
60ISR( CounterInt );
61ISR( HwCnt2Int );
62
63
64/*
65 * ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ‚[ƒh—p
66 */
67/*
68 * ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ‚[ƒhŒˆ’è—p‚̏î•ñŽæ“¾ˆ—
69 *
70 * ƒVƒXƒeƒ€‚²‚Æ‚É”CˆÓ‚Ì“ü—ÍŽè–@‚É‚æ‚èŽÀ‘•‚·‚邱‚ƁD
71 * 0,1,2‚ª”»•Ê‚Å‚«‚邱‚ƁD3‚Í2‚Æ“¯‚¶ˆµ‚¢‚É‚È‚éD
72 */
73UINT8
74GetAppModeInfo( void )
75{
76 /*
77 * –{—ˆ‚Í‚±‚±‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ‚[ƒh‚Ì”»’è‚ðs‚¤‚ׂ«‚¾‚ªA
78 * ƒ{[ƒhã‚Ƀ‚[ƒh‚ðŽæ“¾‚Å‚«‚éH/W‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚È‚¢‚½‚߁A
79 * í‚É0‚ð•Ô‚·D
80 */
81
82 return 0;
83
84} /* GetAppModeInfo */
85
86
87/*
88 * ƒTƒ“ƒvƒ‹ƒJƒEƒ“ƒ^ƒ\[ƒX—p
89 *
90 * CQ7144A‚Å‚ÍCMT1‚ÅŽÀ‘•‚·‚éD
91 */
92
93/*
94 * SignalCounterŽÀs—pŠ„ž‚ݏ‰Šú‰»ˆ—
95 *
96 * ƒ^ƒCƒ}‚Ì‹N“®‚͕ʊ֐”‚ōs‚¤D
97 */
98void
99InitCounterInt( void )
100{
101 /*
102 * CMTƒ‚ƒWƒ…
103[ƒ‹ƒXƒ^ƒ“ƒoƒC‰ðœ
104 */
105 MSTCR2 &= (UINT16)~0x1000; /* CMT—LŒø */
106
107 /*
108 * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒ^ƒCƒ}‚ð’âŽ~‚µ‚ÄŠeƒŒƒWƒXƒ^Ý’è
109 */
110 CMSTR &= (UINT16) ~0x0002; /* ƒJƒEƒ“ƒg’âŽ~ */
111
112 /*
113 * •ªŽü”ä Žü•ÓƒNƒƒbƒN 1/8, Š„‚荞‚Ý‹ÖŽ~
114 * CMCSR ‚Ì bit7 ‚ªŠ„ž‚Ý—v‹ƒtƒ‰ƒO‚Å‚ ‚èC“¯Žž‚ɃNƒŠƒA‚µ‚Ä‚¢‚éD
115 */
116 CMCSR_1 = 0x0000;
117
118 /*
119 * ƒRƒ“ƒyƒ}ƒbƒ`ƒJƒEƒ“ƒ^–Ú•W’lÝ’è
120 * ƒ^ƒCƒ}‹N“®’¼Œã‚ɃRƒ“ƒyƒAƒ}ƒbƒ`‚³‚¹‚邽‚ß
121 */
122 CMCOR_1 = (UINT16)0x0001;
123
124 /*
125 * ƒ^ƒCƒ}ƒRƒ“ƒyƒAŠ„ž‚݃Œƒxƒ‹Ý’èiÝ’背ƒxƒ‹‚̓wƒbƒ_ŽQÆj
126 */
127 IPRG = (UINT16) ((IPRG & ~0xF) | (UINT16)CFG_INTLVL_COUNTER);
128
129 /*
130 * ƒJƒEƒ“ƒ^ƒNƒŠƒA‚ÆŠ„ž‚Ý‹–‰Â
131 */
132 CMCNT_1 = 0x0000; /* ƒJƒEƒ“ƒgƒNƒŠƒA */
133 CMCSR_1 |= 0x0040; /* ƒRƒ“ƒyƒAƒ}ƒbƒ`Š„ž‚Ý‹–‰Â */
134
135} /* InitCounterInt */
136
137/*
138 * SignalCounterŽÀs—pŠ„ž‚Ý’âŽ~ˆ—
139 */
140void
141TermCounterInt( void )
142{
143 CMSTR &= (UINT16) ~0x0002; /* ƒJƒEƒ“ƒg’âŽ~ */
144 CMCSR_1 = 0x0000; /* ‹@”\‰Šú‰» */
145} /* TermCounterInt */
146
147/*
148 * SignalCounterŽÀs—pŠ„ž‚Ý‹N“®ˆ—
149 */
150void
151ActCounterInt( void )
152{
153 CMCNT_1 = (UINT16)0x0000; /* ƒJƒEƒ“ƒgƒNƒŠƒA */
154 CMSTR |= (UINT16) 0x0002; /* ƒJƒEƒ“ƒgŠJŽn */
155} /* ActCounterInt */
156
157/*
158 * SignalCounterŽÀs—pŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
159 */
160ISR( CounterInt )
161{
162 StatusType ercd;
163
164 /*
165 * 1‰ñ‚Ì‚Ý SignalCounter ŽÀs‚µ‚½‚¢‚½‚߁Cƒ^ƒCƒ}‚ð’âŽ~‚·‚éD
166 */
167 CMCSR_1 &= (UINT16)~0x0040; /* ƒRƒ“ƒyƒAƒ}ƒbƒ`Š„ž‚Ý‹ÖŽ~ */
168 CMSTR &= (UINT16) ~0x0002; /* ƒJƒEƒ“ƒg’âŽ~ */
169
170 /*
171 * Š„ž‚Ý—v‹ƒNƒŠƒA
172 */
173 CMCSR_1 &= (UINT16)~0x0080; /* Š„ž‚Ý—v‹ƒNƒŠƒA */
174
175 /*
176 * ƒJƒEƒ“ƒ^‰ÁŽZ’Ê’mˆ—ŽÀs
177 */
178 ercd = SignalCounter( SampleCnt );
179
180 /* ƒGƒ‰[ƒŠƒ^[ƒ“‚̏ꍇ‚̓Vƒƒƒbƒgƒ_ƒEƒ“ */
181 if( ercd != E_OK ){
182 ShutdownOS( ercd );
183 }
184} /* ISR( CounterInt ) */
185
186
187/*
188 * ISR1EISR2‰Ò“®Šm”F—p
189 *
190 * CQ7144A‚Å‚ÍMTUA1,B2‚ÅŽÀ‘•‚·‚éD
191 */
192/*
193 * ƒn[ƒhƒEƒFƒAƒJƒEƒ“ƒ^ƒoƒbƒtƒ@
194 */
195static UINT8 hw_cnt1;
196static UINT8 hw_cnt2;
197
198/*
199 * ISR1EISR2ƒJƒEƒ“ƒ^‰Šú‰»ˆ—
200 */
201void
202InitHwCntInt( void )
203{
204 /*
205 * ƒn[ƒhƒEƒFƒAƒJƒEƒ“ƒ^‰Šú‰»
206 */
207 hw_cnt1 = (UINT8)0;
208 hw_cnt2 = (UINT8)0;
209
210 /*
211 * MTUƒ‚ƒWƒ…
212[ƒ‹ƒXƒ^ƒ“ƒoƒC‰ðœ
213 */
214 MSTCR2 &= (UINT16)~0x2000; /* MTU—LŒø */
215
216 /*
217 * ƒ^ƒCƒ}‚ð’âŽ~‚µ‚ÄŠeƒŒƒWƒXƒ^Ý’è
218 */
219 TSTR &= (UINT8)~0x06;
220
221 /*
222 * ƒ^ƒCƒ}ƒJƒEƒ“ƒ^ƒNƒŠƒA
223 */
224 TCNT_1 = (UINT16)0x0000;
225 TCNT_2 = (UINT16)0x0000;
226
227 /*
228 * ƒ^ƒCƒ}ƒ`ƒƒƒlƒ‹1,2 ƒAƒbƒvƒGƒbƒW, 1/64•ªŽü
229 * ƒ^ƒCƒ}ƒ`ƒƒƒlƒ‹1 = TGR-A
230 * ƒ^ƒCƒ}ƒ`ƒƒƒlƒ‹2 = TGR-B
231 */
232 TCR_1 = (UINT8)0x23;
233 TCR_2 = (UINT8)0x43;
234
235 /*
236 * ƒRƒ“ƒyƒAƒ}ƒbƒ`ƒJƒEƒ“ƒ^Ý’è
237 */
238 TGRA_1 = CFG_HW_CNT1;
239 TGRB_2 = CFG_HW_CNT2;
240
241 /*
242 * ƒ^ƒCƒ}ƒRƒ“ƒyƒAŠ„ž‚݃Œƒxƒ‹Ý’èiÝ’背ƒxƒ‹‚̓wƒbƒ_ŽQÆj
243 * TSR ‚Ì bit0,1 ‚ªŠ„ž‚Ý—v‹ƒtƒ‰ƒO‚É‚æ‚èƒNƒŠƒA‚µ‚Ä‚¢‚éD
244 */
245 IPRD = (UINT16) ((IPRD & ~(0xFu << 4)) | (CFG_INTLVL_HW_CNT1 << 4));
246 IPRE = (UINT16) ((IPRE & ~(0xFu << 12)) | (CFG_INTLVL_HW_CNT2 << 12));
247 TSR_1 &= (UINT8) ~0x01;
248 TSR_2 &= (UINT8) ~0x02;
249
250 /*
251 * Š„ž‚Ý‹–‰Â A,B
252 */
253 TIER_1 |= (UINT8)0x01;
254 TIER_2 |= (UINT8)0x02;
255
256 /*
257 * ƒ^ƒCƒ}ƒJƒEƒ“ƒgŠJŽn
258 */
259 TSTR |= (UINT8)0x06;
260
261} /* InitHwCntInt */
262
263/*
264 * ISR1EISR2ƒJƒEƒ“ƒ^’âŽ~ˆ—
265 */
266void
267TermHwCntInt( void )
268{
269 TIER_1 &= (UINT8) ~0x01; /* Š„ž‚Ý‹ÖŽ~ */
270 TIER_2 &= (UINT8) ~0x02; /* Š„ž‚Ý‹ÖŽ~ */
271 TSTR &= (UINT8) ~0x06; /* ƒJƒEƒ“ƒg’âŽ~ */
272} /* TermHwCntInt */
273
274/*
275 * ISR1EISR2ƒJƒEƒ“ƒ^Žæ“¾ˆ—
276 *
277 * hw_cnt1‚Æhw_cnt2‚Ì“¯ŽžŽæ“¾‚͕ۏႵ‚È‚­‚Ä‚æ‚¢iŠ„ž‚Ý‹ÖŽ~‚Í•s—vjD
278 */
279void
280GetHwCnt( UINT8 *isr1_cnt, UINT8 *isr2_cnt )
281{
282 *isr1_cnt = hw_cnt1;
283 *isr2_cnt = hw_cnt2;
284} /* GetHwCnt */
285
286/*
287 * ISR1ƒJƒEƒ“ƒ^‰ÁŽZ—pŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
288 */
289#if defined( OMIT_ISR1_ENTRY )
290/* ISR1“ü‚èŒû–¢¶¬Žž‚Í–{ŠÖ”‚ðŠ„ž‚݊֐”Žw’è‚·‚é */
291#pragma interrupt HwCnt1Int
292#endif /* OMIT_ISR1_ENTRY */
293void HwCnt1Int( void );
294void
295HwCnt1Int( void )
296{
297 /* Š„ž‚Ý—v‹ƒNƒŠƒA */
298 TSR_1 &= (UINT8)~0x01;
299
300 hw_cnt1++;
301} /* HwCnt1Int */
302
303/*
304 * ISR2ƒJƒEƒ“ƒ^‰ÁŽZ—pŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“
305 */
306ISR( HwCnt2Int )
307{
308 /* Š„ž‚Ý—v‹ƒNƒŠƒA */
309 TSR_2 &= (UINT8)~0x02;
310
311 hw_cnt2++;
312} /* ISR( HwCnt2Int ) */
313
314
Note: See TracBrowser for help on using the repository browser.