📄 sh1itu.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2004 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * Copyright (C) 2001-2004 by Industrial Technology Institute, * Miyagi Prefectural Government, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: sh1itu.h,v 1.8 2005/11/14 08:00:44 honda Exp $ *//* * タイマドライバ * SH1柒垄のインテグレ〖テッドˇタイマˇパルスˇユニットITUの * チャネル0を蝗脱 */#ifndef _SH1ITU_H_#define _SH1ITU_H_/* * クロック件侨眶巴赂の肋年 * * クロック件侨眶はコンパイルオプションで涂えられる *//* * タイマへの掐蜗クロックの尸件孺肋年 * f/8でカウント */#define TCR_TPSC 0x3u/* * タイマに丁惦されるクロック件侨眶[kHz] * 20MHz/8 =2.5MHz =2500kHz */#ifdef CONFIG_20MHZ#define TIMER_CLOCK 2500#endif/* * 19.6608MHz/8 =2.4576MHz =2457.6kHz */#ifdef CONFIG_19MHZ#define TIMER_CLOCK 2458#endif/* * 16MHz/8 =2MHz =2000kHz */#ifdef CONFIG_16MHZ#define TIMER_CLOCK 2000#endif/* * タイマ猛の柒婶山附の房 */typedef UH CLOCK;/* * タイマ猛の柒婶山附とミリ擅ˇμ擅帽疤との恃垂 * */#define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno))#define TO_USEC(clock) ((clock) * 1000 / TIMER_CLOCK)#define CLOCK_PER_TICK ((CLOCK) TO_CLOCK(TIC_NUME, TIC_DENO))/* * 肋年できる呵络のタイマ件袋∈帽疤は柒婶山附∷ */#define MAX_CLOCK ((CLOCK) 0xffffu)/* * タイマの附哼猛を充哈み券栏涟の猛とみなすかの冉们 */#define GET_TOLERANCE 100 /* 借妄觅れの斧姥り猛∈帽疤は柒婶山附∷*/#define BEFORE_IREQ(clock) \ ((clock) >= TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)/* * コントロ〖ルレジスタのアドレス */ /* 鼎奶 */#define ITU_TSTR (VB *)0x5ffff00 /* タイマスタ〖トレジスタ ∈1バイト∷*/#define ITU_TSNC (VB *)0x5ffff01 /* タイマシンクロレジスタ ∈1バイト∷*/#define ITU_TMDR (VB *)0x5ffff02 /* タイマモ〖ドレジスタ ∈1バイト∷ */ /* タイマファンクションコントロ〖ルレジスタ ∈1バイト∷ */#define ITU_TFCR (VB *)0x5ffff03 /* タイマアウトプットコントロ〖ルレジスタ ∈1バイト∷ */#define ITU_TOCR (VB *)0x5ffff31 /* ITU0 */#define ITU_TCR0 (VB *)0x5ffff04 /* タイマコントロ〖ルレジスタ0 ∈1バイト∷*/ /* タイマI/Oコントロ〖ルレジスタ0 ∈1バイト∷*/#define ITU_TIOR0 (VB *)0x5ffff05 /* タイマインタラプトイネ〖ブルレジスタ0 ∈1バイト∷*/#define ITU_TIER0 (VB *)0x5ffff06 #define ITU_TSR0 (VB *)0x5ffff07 /* タイマステ〖タスレジスタ0 ∈1バイト∷*/#define ITU_TCNT0 (VH *)0x5ffff08 /* タイマカウンタ0 ∈2バイト∷*/#define ITU_GRA0 (VH *)0x5ffff0a /* ジェネラルレジスタA0 ∈2バイト∷*/#define ITU_GRB0 (VH *)0x5ffff0b /* ジェネラルレジスタB0 ∈2バイト∷*//* * コントロ〖ルレジスタの肋年猛 */#define TSR_IMFA 0x01u /* GRAコンペアマッチフラグ */#define TSTR_STR0 0x01u /* タイマスタ〖トビット */#define TCR_CCLR_GRA 0x20u /* GRAコンペアマッチでカウンタをクリア */#define TIER_RESERVE 0x78u /* TIERレジスタの徒腆ビット */#define TIER_IMIEA 0x01u /* GRAコンペアマッチによる充哈み妥滇を钓材 */#define TIOR_RESERVE 0x08u /* TIORレジスタの徒腆ビット */#define TIOR_IOA 0x00u /* GRAコンペアマッチによる眉灰叫蜗敦贿 */#ifndef _MACRO_ONLY/* * タイマスタ〖ト */Inline voidsh1_itu_start(void){ sh1_orb_reg(ITU_TSTR, TSTR_STR0);}/* * タイマ办箕匿贿 */Inline voidsh1_itu_stop(void){ sh1_anb_reg(ITU_TSTR, (VB)~TSTR_STR0);}/* * タイマ充哈み妥滇のクリア * TCRレジスタのIMFAビットは1搀粕み叫した稿に0を今き哈む */Inline voidsh1_itu_int_clear(void){ /* 充り哈み妥滇をクリア */ /* ∈GRAコンペアマッチフラグ∷ */ sh1_anb_reg(ITU_TSR0, (VB)~TSR_IMFA);}/* * タイマの弹瓢借妄 * * タイマを介袋步し·件袋弄なタイマ充哈み妥滇を券栏させるˉ */Inline voidsh1_itu_initialize(void){ CLOCK cyc = TO_CLOCK(TIC_NUME, TIC_DENO); /* * タイマ簇息の肋年 */ sh1_itu_stop(); /* タイマ匿贿 */ /* タイマ惧嘎猛のチェック */ assert(cyc <= MAX_CLOCK); /* GRAコンペアマッチでカウンタをクリア */ /* 尸件孺肋年 */ sil_wrb_mem(ITU_TCR0, TCR_CCLR_GRA | TCR_TPSC); /* GRAコンペアマッチによる充哈み妥滇を钓材 */ sil_wrb_mem(ITU_TIER0, TIER_RESERVE | TIER_IMIEA); /* GRAコンペアマッチによる眉灰叫蜗敦贿 */ sil_wrb_mem(ITU_TIOR0, TIOR_RESERVE | TIOR_IOA); /* GRAレジスタ肋年∈カウンタ誊筛猛∷ */ sil_wrh_mem(ITU_GRA0, CLOCK_PER_TICK); sil_wrh_mem(ITU_TCNT0, 0); /* カウンタをクリア */}/* * タイマの匿贿借妄 * * タイマの瓢侯を匿贿させるˉ */Inline voidsh1_itu_terminate(void){ sh1_itu_stop(); /* タイマを匿贿 */ sh1_itu_int_clear(); /* 充り哈み妥滇をクリア */ /* タイマ充哈みを敦贿 */ /* ∈OVIE,IMIEB,IMIEAビットをクリア∷ */ sil_wrb_mem(ITU_TIER0, TIER_RESERVE);}/* * タイマの附哼猛の粕叫し * タイマの瓢侯を办箕弄に匿贿し·タイマ猛を粕み叫すˉ */Inline CLOCKsh1_itu_get_current(void){ CLOCK clk; sh1_itu_stop(); /* タイマ匿贿 */ /* 塑丸は略ち箕粗を掐れるべき */ clk = sil_reh_mem(ITU_TCNT0); sh1_itu_start(); /* タイマスタ〖ト */ return(clk);}/* * タイマ充哈み妥滇のチェック */Inline BOOLsh1_itu_fetch_interrupt(void){ VB tsr0 = sil_reb_mem(ITU_TSR0); return(tsr0 & TSR_IMFA);}#endif /* _MACRO_ONLY */#endif /* _SH1ITU_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -