2012年10月09日
自作のヘッダなど作りました。
数か所間違いがありますので、そのまま利用しないでください。(笑)
ヒマな時修正します。
/************************************************/
/* */
/* File Name : ltdefine.h */
/* Date : 10 / 8 / 2012 */
/* Creator : Koji Segawa */
/* Description : Line Tracer Include file */
/* Available CPU : Renesas H8-300H / 3694F */
/* */
/* Copyright(C) SK Works. All Rights Reserved. */
/* */
/* */
/********************************************************************/
/*
※定義 周期T(μs) = 1/周波数f(MHz)
System Clock φ = 20 MHz = 1 / 20(μs)
(1 state = 1 clock)
*/
/* 使用可能I/O PortのPin番号 */
/* Emurator E8A : P87
P86
P85
#RESET
*/
/* Serial BUS : P22 / TXD
P21 / RXD
*/
/* LCD : P75 / TMCIV
P74 / TMRIV
P53 / WKP3
P52 / WKP2
P51 / WKP1
P50 / WKP0
*/
/* Motor Right Control : P83 / FTIOC
Left Control : P82 / FTIOB
Right Forward Roll : P53 / WKP3
Right Reverse Roll : P52 / WKP2
Left Forward Roll : P51 / WKP1
Left Reverse Roll : P50 / WKP0
*/
/* Sensor Left Outside / LED5 : P57 / SCL
Left Inside / LED4 : P56 / SDA
Right Inside / LED3 : P55 / WKP5 / ADTRG
Right Outside / LED2 : P54 / WKP4
*/
/* LED6 : P11
LED1 : P10 / TMOW
*/
/* Switch3 : P15 / IRQ1
Switch2 : P14 / IRQ0
*/
/* モジュール別 使用レジスタアドレス定義一覧 */
/* レジスタアドレス・初期値([]はリザーブビット※動作が不定になる為Write禁止)・R/W・(実行クロック数) */
/* I/O Port 1 */
#define PMR1 *((volatile unsigned char *)(0xFFE0)) /* B'(0000[1] [1]00) R/W (2 Clock) */
#define PCR1 *((volatile unsigned char *)(0xFFE4)) /* B'(0000 [-]000) W (2 Clock) */
#define PUCR1 *((volatile unsigned char *)(0xFFD0)) /* B'(0000 [1]000) R/W (2 Clock) */
#define PDR1 *((volatile unsigned char *)(0xFFD4)) /* B'(0000 [1]000) R/W (2 Clock) */
/* I/O Port 2 */
#define PCR2 *((volatile unsigned char *)(0xFFE5)) /* B'([-][-][-][-] [-]000) W (2 Clock) */
#define PDR2 *((volatile unsigned char *)(0xFFD5)) /* B'([1][1][1][1] [1]000) R/W (2 Clock) */
/* I/O Port 5 */
#define PMR5 *((volatile unsigned char *)(0xFFE1)) /* B'([0][0]00 0000) R/W (2 Clock) */
#define PCR5 *((volatile unsigned char *)(0xFFE8)) /* B'(0000 0000) W (2 Clock) */
#define PUCR5 *((volatile unsigned char *)(0xFFD1)) /* B'(0000 0000) R/W (2 Clock) */
#define PDR5 *((volatile unsigned char *)(0xFFD8)) /* B'(0000 0000) R/W (2 Clock) */
/* I/O Port 7 */
#define PCR7 *((volatile unsigned char *)(0xFFEA)) /* B'([-]000 [-][-][-][-]) W (2 Clock) */
#define PDR7 *((volatile unsigned char *)(0xFFDA)) /* B'([1][1][1][1] [1]000) R/W (2 Clock) */
/* I/O Port 8 */
#define PCR8 *((volatile unsigned char *)(0xFFEB)) /* B'(0000 0000) W (2 Clock) */
#define PDR8 *((volatile unsigned char *)(0xFFDB)) /* B'(0000 0000) R/W (2 Clock) */
/* IIC2 (Inter IC Bus Interface Controller) */
#define ICCR1 *((volatile unsigned char *)(0xF748)) /* B'(0000 0000) R/W (2 Clock) */
/* Interrupt Exception Handler */
#define IEGR1 *((volatile unsigned char *)(0xFFF2)) /* B'(0[1][1][1] 0000) R/W (2 Clock) */
#define IEGR2 *((volatile unsigned char *)(0xFFF3)) /* B'([1][1]00 0000) R/W (2 Clock) */
#define IENR1 *((volatile unsigned char *)(0xFFF4)) /* B'(000[1] 0000) R/W (2 Clock) */
#define IRR1 *((volatile unsigned char *)(0xFFF6)) /* B'(00[1][1] 0000) R/W (2 Clock) */
#define IWPR *((volatile unsigned char *)(0xFFF8)) /* B'([1][1]00 0000) R/W (2 Clock) */
/* SCI3 (Serial Bus Interface Controller) */
#define SMR *((volatile unsigned char *)(0xFFA8)) /* B'(0000 0000) R/W (3 Clock) */
#define SCR3 *((volatile unsigned char *)(0xFFAA)) /* B'(0000 0000) R/W (3 Clock) */
#define SSR *((volatile unsigned char *)(0xFFAC)) /* B'(1000 0100) R/W (3 Clock) */
#define BRR *((volatile unsigned char *)(0xFFA9)) /* B'(1111 1111) R/W (3 Clock) */
#define RDR *((volatile unsigned char *)(0xFFAD)) /* B'(0000 0000) R/W (3 Clock) */
#define TDR *((volatile unsigned char *)(0xFFFAB)) /* B'(1111 1111) R/W (3 Clock) */
/* Low Power Consumption (for Sleep Mode) */
#define SYSCR1 *((volatile unsigned char *)(0xFFF0)) /* B'(0000 0[0][0][0]) R/W (2 Clock) */
#define SYSCR2 *((volatile unsigned char *)(0xFFF1)) /* B'(0000 0000) R/W (2 Clock) */
#define MSTCR1 *((volatile unsigned char *)(0xFFF9)) /* B'([1]000 0000) R/W (2 Clock) */
/* Timer A */
#define TMA *((volatile unsigned char *)(0xFFA6)) /* B'(000[1] 0000) R/W (2 Clock) */
#define TCA *((volatile unsigned char *)(0xFFA7)) /* B'(000[1] 0000) R/W (2 Clock) */
/* Timer V */
#define TCRV0 *((volatile unsigned char *)(0xFFA0)) /* B'(0000 0000) R/W (3 Clock) */
#define TCRV1 *((volatile unsigned char *)(0xFFA5)) /* B'([1][1][1]0 00[1]0) R/W (3 Clock) */
#define TCSRV *((volatile unsigned char *)(0xFFA1)) /* B'(000[1] 0000) R/W (3 Clock) */
#define TCNTV *((volatile unsigned char *)(0xFFA4)) /* B'(0000 0000) R/W (3 Clock) */
#define TCORA *((volatile unsigned char *)(0xFFA2)) /* B'(1111 1111) R/W (3 Clock) */
#define TCORB *((volatile unsigned char *)(0xFFA3)) /* B'(1111 1111) R/W (3 Clock) */
/* Timer W */
#define TMRW *((volatile unsigned char *)(0xFF80)) /* B'(0[1]00 [1]000) R/W (2 Clock) */
#define TCRW *((volatile unsigned char *)(0xFF81)) /* B'(0000 0000) R/W (2 Clock) */
#define TCNT *((volatile unsigned char *)(0xFF86)) /* B'(0000 0000) R/W (2 Clock) */
#define TIERW *((volatile unsigned char *)(0xFF82)) /* B'(0[1][1][1][1] 0000) R/W (2 Clock) */
#define TSRW *((volatile unsigned char *)(0xFF83)) /* B'(0[1][1][1][1] 0000) R/W (2 Clock) */
#define TIOR0 *((volatile unsigned char *)(0xFF84)) /* B'([1]000 [1]000) R/W (2 Clock) */
#define TIOR1 *((volatile unsigned char *)(0xFF85)) /* B'([1]000 [1]000) R/W (2 Clock) */
#define GRA *((volatile unsigned char *)(0xFF88)) /* B'(1111 1111) R/W (2 Clock) */
#define GRB *((volatile unsigned char *)(0xFF8A)) /* B'(1111 1111) R/W (2 Clock) */
#define GRC *((volatile unsigned char *)(0xFF8C)) /* B'(1111 1111) R/W (2 Clock) */
#define GRD *((volatile unsigned char *)(0xFF8E)) /* B'(1111 1111) R/W (2 Clock) */
/* センサ受信状態遷移 ●:Hi ○:Lo */
/* 直進 */
#define STRAIGHT 0x60 /* ○●●○ */
#define CROSS_4_S 0xF0 /* ●●●● */
#define CROSS_O2S 0x90 /* ●○○● */
#define L_EXCPT 0xB0 /* ●○●● */
#define R_EXCPT 0xD0 /* ●●○● */
/* 軌道修正 */
#define L_OVER 0x80 /* ●○○○ */
#define L_OUTER 0x40 /* ○●○○ */
#define R_OUTER 0x20 /* ○○●○ */
#define R_OVER 0x10 /* ○○○● */
/* 左折確認 */
#define L_INTER 0xE0 /* ●●●○ */
#define L_DRIFT 0xA0 /* ●○●○ */
/* 右折確認 */
#define R_INTER 0x70 /* ○●●● */
#define R_DRIFT 0x50 /* ○●○● */
/* 左折(軌道修正にも使用) */
#define L_ONLY 0xC0 /* ●●○○ */
/* 右折(軌道修正にも使用) */
#define R_ONLY 0x30 /* ○○●● */
/* 後退 */
#define NO_LINE 0x00 /* ○○○○ */
/********************************************************************/
/* */
/* File Name : ltinit.c */
/* Date : 10 / 8 / 2012 */
/* Creator : Koji Segawa */
/* Description : Line Tracer Initialization Program */
/* Available CPU : Renesas H8-300H / 3694F */
/* */
/* Copyright(C) SK Works. All Rights Reserved. */
/* */
/* */
/********************************************************************/
/* Width of 2 Front Sensors = 45mm */
/* Width of 2 Rear Sensors = 25mm */
/* Length from F Sensor to R Sensor = 60mm */
/* 条件の変更、追加はmain関数内のif-else文で調整 */
#include "ltdefine.h"
extern void LT_Init(void);
extern void Wait_Time(void);
extern void WT_Init(void);
extern void Forward(void);
extern void Reverse(void);
extern void L_Curve(void);
extern void R_Curve(void);
/* Line Tracer Initialization */
void LT_Init(void) {
/* LED1,6 Initialization */
PMR1 &= ~0x03; /* P11,10 汎用Portに切り替え */
PCR1 |= 0x03; /* P11,10 汎用出力に設定 */
/* Switch2,3 Initialization */
PMR1 &= ~0x30; /* P15,14 汎用Portに切り替え */
PCR1 &= ~0x30; /* P15,14 汎用入力に設定 */
PUCR1 |= 0x30; /* Switch2,3をPull Up */
/* Sensor Initialization */
ICCR1 &= ~0xC0; /* P57,56 SCL,SDAを機能停止 Port5に切り替え */
PMR5 &= ~0x30; /* P55,54 WKP5,4を機能停止 Port5に切り替え */
PCR5 |= 0xF0; /* P57~54 汎用出力に設定 */
/* Motor Initialization */
PMR5 &= ~0x0F; /* P53~50 WKP3~0を機能停止 Port5に切り替え */
PCR5 &= ~0x0F; /* P53~50 汎用入力に設定 */
/* Timer W Initialization */
TMRW |= 0x03; /* TIOC,B PWM出力に設定 */
TCRW |= 0x86; /* TCNT φ=20MHz コンペアマッチAでクリアして1を出力 C,Bで0を出力 */
TIERW &= ~0x00; /* Timer W 割り込み要求Disabled */
/* (今回は不使用なので不定値防止の為Bitクリアしておく) */
/* ※Time W PWM出力時 TIOR1,TIOR0の設定は無効の為 今回は未設定 */
/* Interrupt Initialization */
IEGR1 &= ~0x03; /* IRQ1,0 立下りEdgeを検出する設定 */
IENR1 |= 0x03; /* IRQ1,0 割り込み要求Enabled */
/* 各モジュール初期化 */
PDR1 &= ~0x33; /* LED1,6,Switch2,3を待機状態 */
PDR5 &= ~0xFF; /* Sensor,Motor待機状態 */
TCNT = 0; /* TCNT カウンタクリア */
GRA = 50000; /* TCNTとのコンペアマッチ */
GRB = 0; /* TIOBとのコンペアマッチクリア */
GRC = 0; /* TIOCとのコンペアマッチクリア */
IRR1 &= ~0x03; /* IRQ1,0 割り込み要求フラグクリア */
return;
}
/* 割り込み時ポートレジスタ操作後のフラグクリア処理待ち時間 */
void WT_Init(void) {
volatile unsigned int wt_init;
for(wt_init=0; wt_init<200; wt_init++) {;} /* No Operation */
return;
}
/* 左右モータ正転 */
void Forward(void) {
PDR5 |= 0x0A;
GRB = (GRA * 70) / 100; /* 左モータ デューティ比 70% */
GRC = (GRA * 70) / 100; /* 右モータ デューティ比 70% */
return;
}
/* 左右モータ正転 ※Lineから右へ離れている時の軌道修正処理 */
void L_Correct(void) {
PDR5 |= 0x0A;
GRB = (GRA * 35) / 100; /* 左モータ デューティ比 35% */
GRC = (GRA * 50) / 100; /* 右モータ デューティ比 50% */
return;
}
/* 左右モータ正転 ※Lineから左へ離れている時の軌道修正処理 */
void R_Correct(void) {
PDR5 |= 0x0A;
GRB = (GRA * 50) / 100; /* 左モータ デューティ比 50% */
GRC = (GRA * 35) / 100; /* 右モータ デューティ比 35% */
return;
}
/* 左カーブ */
void L_Curve(void) {
PDR5 |= 0x0A;
GRB = (GRA * 15) / 100; /* 左モータ デューティ比 15% */
GRC = (GRA * 40) / 100; /* 右モータ デューティ比 40% */
return;
}/* 右カーブ */
void R_Curve(void) {
PDR5 |= 0x0A;
GRB = (GRA * 40) / 100; /* 左モータ デューティ比 40% */
GRC = (GRA * 15) / 100; /* 右モータ デューティ比 15% */
return;
}
/* 左右モータ逆転 初期トルクだけ与えて、Lineを認識する位置まで惰性で後退 */
void Reverse(void) {
volatile unsigned int i;
PDR5 &= ~0x00; /* モータ一時停止 */
for(i=0;i<2000;i++){;} /* 正転-逆転間の回路逆電流保護対策 1ms */
while(PDR5 != 0x05) {
PDR5 |= 0x05; /* 逆転動作開始 */
GRB = (GRA * 70) / 100; /* 左モータ デューティ比 70% */
GRC = (GRA * 70) / 100; /* 右モータ デューティ比 70% */
}
for(i=0;i<5000;i++){;} /* 慣性時間5ms */
return;
}
/********************************************************************/
/* */
/* File Name : main.c */
/* Date : 10 / 8 / 2012 */
/* Creator : Koji Segawa */
/* Description : Main Program */
/* Available CPU : Renesas H8-300H / 3694F */
/* */
/* Copyright(C) SK Works. All Rights Reserved. */
/* */
/* */
/********************************************************************/
/* Width of 2 Front Sensors = 45mm */
/* Width of 2 Rear Sensors = 25mm */
/* Length from F Sensor to R Sensor = 60mm */
/* 条件の変更、追加はmain関数内のif-else文で調整 */
#include "ltinit.c"
void Forward(void);
void L_Correct(void);
void R_Correct(void);
void L_Curve(void);
void R_Curve(void);
void Reverse(void);
/* main関数 */
void main(void) {
while(1) {
if(PDR5 == (STRAIGHT || CROSS_4_S || CROSS_O2S || L_EXCPT || R_EXCPT)) { /* Straight */
Forward();
}else if(PDR5 == (L_OVER || L_OUTER || L_ONLY)) { /* Correct to Right */
L_Correct();
}else if(PDR5 == (R_OVER || R_OUTER || R_ONLY)) { /* Correct to Left */
R_Correct();
}else if(PDR5 == (L_INTER || L_DRIFT)) { /* L_Curve */
L_Curve();
}else if(PDR5 == (R_INTER || R_DRIFT )) { /* R_Curve */
R_Curve();
}else { /* Reverse */
Reverse();
}
}
return;
}
Posted at 2012/10/09 21:08:18 | |
Enbedded Technology | ビジネス/学習
2012年05月13日
昨夜、名古屋から自宅に帰るのに国道1号線を通りました。
名古屋から東京方面に向かう途中、中京競馬場に入る前あたりから、まだ名古屋市内なのにいきなり天下の東海道が1車線になります。
休日の昼間は明らかに渋滞しますが、夜間はスムーズに走れます。
のはずが、中京競馬場を過ぎたあたりでなぜかこちらの車線だけ渋滞。
というか完全に列が動かない。
待つ事10分。正体は、このせまい1車線での多重衝突事故。
ミニバン3台が絡んで、真ん中のクルマは前後ともにバンパーが剥がれるくらい重度の故障。
警察が交通整理をしてたんだね。
道路上にはめっちゃ広範囲にわたって、3台分のいろんな外装パーツの破片が。。。
こんな格好のクルマだけど、ゆっくり安全運転で帰ろうと気を引き締め後にしました。
と思った矢先、大阪ナンバーのおそらくGF−BJ5W、銀のファミリアSワゴンが後ろから猛スピードで近づいてきます。
ここからは2車線なので抜かされても問題ないんですが、明らかに周りと違う荒々しさ。
走行車線、追い越し車線関係なく、クルマの間をぬって走っています。
誰に追われているんだろうか。。。このおっちゃん。
全くの完全ノーマルでしたが、私のクルマのスピードから察すると、軽く100km/h以上は出ていました。
絡むのが面倒でしたので道をゆずってあげましたが、この辺はレーダーがしゃべりまくるくらいオービスやネズミ取り多いんだけどな。
しかも愛知県現在ワースト1なので、愛知県内だけ特別警戒態勢で、休日は覆面も含め総動員でパトカーが警らしてます。
ああいうおっちゃんはなにか事故を起こす前に早く捕まって欲しいものです。
Posted at 2012/05/13 23:59:21 | |
トラックバック(0) | 日記
2012年04月28日
一度純正サイズに戻しましたが、イカツイ外見に対してとても頼りない。。。
ここ数日、各ホイール、タイヤメーカーサイト、各種関連サイト等を見回って、
タイヤの選び方がやっと自分の中で納得できました。
まず目的をはっきりさせる。
街乗りなのか、サーキット用なのか、サーキットでもジムカーナか、レースか、どのカテゴリか。
ここが僕の中で曖昧だったので、Sドライブという選択でいままで来てたのでしょう。
先日のオプションキャラバンで皆さんのクルマのタイヤをみて、街乗りでもやっぱりチューンに合わせたハイグリップタイヤを履いている事に気づきました。
そこで、僕の場合このクルマをどう使いたいのかと考えましたが、JAFやFIAの競技規定を見て、
ファミリアをベースにすると、プライベーターとしては維持費が掛かり過ぎ、パーツや消耗品を考えても
デメリットがあまりに多いので、クローズドカテゴリでジムカーナコースやフリー走行を楽しむ程度に止めようと決めました。
でもこのクルマは10万kmオーバーまでずっと乗るつもりなので、次の車検に向けて、ブレーキ、足回りを中心にメンテして行く事にしました。
結構エンジンルームいじっちゃってますので、タイヤもそれに見合うものにします。
今ははじめから付いてたクムホのコンフォートで、2速で60km/hくらいでスキール音がするくらいパワーが上がってましたので、ハイグリップタイヤを検討します。
で、一度は否定した17インチにすることに。
サイズは205/45R17。
このサイズはどのメーカーもハイエンドモデルにラインナップがあり、外径616mmで幅208〜215mm、
7.0Jのホイールサイズにマッチします。
外径が15mm増えるんですが、今の保安基準では、速度計の実測誤差が −22%〜+6%となっており、
以前の基準より外径が増す事に関しては少し許容範囲が広がりました。
外径が増すという事は、1回転するのにそれだけ距離が伸び、クルマの速度計の原理ではより実測値より速い数値を示します。
逆にいうと、メーターが60キロでも実際はそれより遅く走っているということです。
最近は車種によってかなり正しい数値で表示されるメーターもありますが、ファミリアのようないわゆる大衆車は、スピード超過と事故防止の為に、メーカーが自主規制の意味で5〜10キロくらい高い数値を示すようになっています。
今までの経験上、このくらいの外径増で車検が通らなかった事はなく、あとはタイヤハウス、フェンダーとの干渉に気をつければいいです。
車検ごとに交換するつもりで、ハイグリップタイヤを買う事にします。
多分アドバンのAD08かダンロップのZⅡかと。
まずはお金を貯めます。。。(笑)
Posted at 2012/04/28 19:52:06 | |
トラックバック(0) | 日記
2012年04月26日

本日発売の雑誌「オプション」6月号に、3月に行ったミーティングの特集が掲載されていました。
以前、雑誌の取材を受けたというのは、じつはこの事でした。
自分が話した内容がそのまま掲載されていて、その日の事がとても鮮明によみがえってきました。
ギリギリカラーで掲載されていて良かったです。
ただ、本名、年齢から顔まで、ファミリアでムチャしてる奴って全国に知れ渡ってしまいました。。。
雪の振る中、笑顔でポーズとってと言われ、かなり顔が引きつっています。(笑)
それでも、少しは、古くてもこんな良いクルマもあるんだぞというのを広報出来て嬉しいです。
オプション編集部の方、お世話になりました。
Posted at 2012/04/26 23:39:29 | |
トラックバック(0) |
マイカー | 日記
2012年04月26日

間違いなく、今後いろんなサーキットでエヴァレーシング並みの展開をするんだろう。。。
結構キャラや設定もしっかりしてるし。
パーツメーカーというか、日本のモータースポーツはこの方向で進むことになりそうな予感。
どうなんだ。。。?
Posted at 2012/04/26 14:13:48 | |
トラックバック(0) | 日記