• メインページ
  • データ構造
  • ファイル
  • ファイル一覧
  • グローバル

OpenSSM/main.c

説明を見る。
00001 /**************************************************************************************************
00002     Project         : OpenSSM Rev.A
00003     Programmer      : Yosuke FURUSAWA.
00004     Copyright       : Copyright (C) 2007-2010 Yosuke FURUSAWA.
00005     Since           : 2008/12/10
00006 
00007     Filename        : main.c
00008     Last up date    : 2010/08/15
00009     Kanji-Code      : Shift-JIS
00010     TAB Space       : 4
00011 **************************************************************************************************/
00012 
00013 
00014 /*================================================================================================
00015 ヘッダファイルをインクルード
00016 =================================================================================================*/
00017 #include <p24FJ64GA002.h>
00018 
00019 #include "types.h"
00020 #include "table.h"
00021 #include "ssm.h"
00022 #include "extmeter.h"
00023 #include "main.h"
00024 
00025 #include "libadc.h"
00026 #include "libdac.h"
00027 #include "librtc.h"
00028 #include "libuart.h"
00029 #include "libps2.h"
00030 #include "libfontx2.h"
00031 #include "libvideo.h"
00032 
00033 
00034 /*================================================================================================
00035 コンフィグレーション
00036 =================================================================================================*/
00037 _CONFIG1(   JTAGEN_OFF &
00038             GCP_OFF &
00039             GWRP_OFF &
00040             BKBUG_OFF &
00041             WINDIS_OFF &
00042             COE_OFF &
00043             ICS_PGx1 &
00044             FWDTEN_ON &
00045             WDTPS_PS256) 
00046 
00047 _CONFIG2(   IESO_OFF &
00048             FNOSC_FRCPLL &
00049             FCKSM_CSDCMD &
00050             OSCIOFNC_ON &
00051             IOL1WAY_OFF &
00052             I2C1SEL_PRI &
00053             POSCMOD_NONE)
00054 
00055 
00056 /*=================================================================================================
00057 マクロ定義
00058 =================================================================================================*/
00059 
00060 
00061 /*=================================================================================================
00062 構造体
00063 =================================================================================================*/
00064 
00065 
00066 /*=================================================================================================
00067 グローバル変数
00068 =================================================================================================*/
00069 
00070 
00071 /* 基板情報
00072 
00073 最近の国家事情を憂慮して、表示上の年号には意図的に皇紀を用いた。
00074 
00075 フランス人やベルギー人の友人と年号の話をしたことがあったが (彼らは博士号取得者であって、決して
00076 無学の人ではない。ちなみに、彼らはとても陽気でいい人である)、彼ら(西洋人)の認識としては、キリスト
00077 誕生以前の古代としては、西洋以外にせいぜい中国が存在する程度の認識しか持っていなかった。
00078 
00079 ショックを受けるとともに、ちょっと悔しい。。。日本も西洋に負けず劣らず歴史があるんだよと
00080 暗に言いたいがために、皇紀を表記する。
00081 
00082 http://en.wikipedia.org/wiki/Japanese_era_name
00083 
00084 
00085 もうちょっと書く.
00086 
00087 当初、OpenSSMのリリース時期を Koki 2670/07月としたのは、零式艦上戦闘機が Koki 2600/07月に
00088 旧大日本帝国海軍に制式採用されたことによる。間に合わなかったので、最初のリリースを 8/15の
00089 終戦記念日とした (^^;
00090 
00091 #こんなことを書いていますが、私自身は右翼左翼でも何でもないですよ (^^;;;
00092 
00093 */
00094 
00095 const INFO_T info = {
00096     "OS10A705J00",                          /* 基板シリアル番号 */
00097 
00098     "OpenSSM Rev.A",                        /* 基板型番 */
00099     2670, 5, 12,                            /* 基板設計完了日 (製造日/ロットとは無関係) */
00100     1, 0, 0,                                /* 基板バージョン */
00101     "Yosuke FURUSAWA",                      /* 基板開発者 */
00102 
00103     "OpenSSM Firmware",                     /* ファームウェア名称 */
00104     2670,  8, 15,                           /* ファームウェア最終更新年月日 */
00105     1, 0, 0,                                /* ファームウェアバージョン */
00106     "Yosuke FURUSAWA",                      /* ファームウェア開発者 */
00107 
00108     "Project WinSSM & OpenSSM",
00109     "http://ssm.nextfoods.jp/",
00110     "g-ssm@nextfoods.jp",
00111     "(C) Koki 2667-2670 Y.FURUSAWA",
00112 };
00113 
00114 
00115 /*=================================================================================================
00116 プロトタイプ宣言
00117 =================================================================================================*/
00118 
00119 
00120 /**************************************************************************************************
00121 スタートアップ関数
00122 **************************************************************************************************/
00123 int main(void){
00124     unsigned int tick;
00125 
00126     /* Fosc = 8.96MHz, Fcy = 17.92MHz, Core 35.84MHz */
00127     CLKDIV = 0;
00128     OSCTUN = 0b0000000000011111;
00129 
00130     /* CPUの割り込みレベル設定 */
00131     SRbits.IPL = 0;
00132 
00133     /* ポートの入出力モード設定 */
00134     /*          FEDCBA9876543210 */
00135     TRISA   = 0b0000000000000011;
00136     TRISB   = 0b0000111101100001;
00137 
00138     /* 電源が安定するまで待つ */
00139     RTC_init();
00140     ADC_init();
00141     tick = rtc.tick;
00142     while(RTC_get_ticks(tick, rtc.tick) < 10000) ClrWdt();
00143 
00144     LED_OFF();
00145     KXM_ON();
00146 
00147     /* 各ドライバ/モジュール/割込関数 libxxx の初期化 */
00148     FONTX2_init();
00149     VIDEO_init();
00150     UART1_init(115200);
00151     UART2_init(  4800);
00152     DAC_init();
00153     PS2_init();
00154 
00155     /* アプリケーション層の初期化 */
00156     SSM_init();
00157     SCREEN_init();
00158     EXTMETER_init(EXTMETER_BOOST);
00159     CONFIG_init();
00160 
00161     /* WDTリセットされたとき、または加速度センサが無いときは自動ロードしない */
00162     if (RCONbits.WDTO){
00163         VIDEO_locate( 0, 0);
00164         VIDEO_putstr("WDT Error!");
00165         VIDEO_locate( 0, 1);
00166         VIDEO_putstr("Configuration do not load");
00167         while(RTC_get_ticks(tick, rtc.tick) < 50000) ClrWdt();
00168 
00169     } else if (adc.adc[0] < 20 && adc.adc[1] < 20 && adc.adc[2] < 20) {
00170         VIDEO_locate( 0, 0);
00171         VIDEO_putstr("Accelerometer do not connected.");
00172         VIDEO_locate( 0, 1);
00173         VIDEO_putstr("Configuration do not load");
00174         while(RTC_get_ticks(tick, rtc.tick) < 50000) ClrWdt();
00175 
00176 
00177     /* 環境設定の自動ロード */
00178     } else {
00179         VIDEO_locate( 0, 0);
00180         VIDEO_putstr("Configuration Auto Load...");
00181         VIDEO_locate( 0, 1);
00182         if(CONFIG_load()){
00183             VIDEO_putstr("Success");
00184             while(RTC_get_ticks(tick, rtc.tick) <  5000) ClrWdt();
00185         } else {
00186             VIDEO_putstr("Error");
00187             while(RTC_get_ticks(tick, rtc.tick) < 50000) ClrWdt();
00188         }
00189     }
00190 
00191     /* メインループ */
00192     while(1){
00193         ClrWdt();
00194         GPIO_LED = ‾GPIO_LED;
00195 
00196         /* シンプルなラウンドロビンのマルチタスク (^^; */
00197         SSM_main();
00198         SCREEN_main();
00199         PS2_main();
00200         EXTMETER_main();
00201     }
00202 
00203     /* ウォッチドックタイマによるリセットを発生させる */
00204     while(1);
00205     return(0);
00206 }
00207 
00208 

OpenSSMに対してSat Aug 14 2010 03:23:43に生成されました。  doxygen 1.7.1