デビアンな生活 2012年07月

デビアンな生活

日本語コンソールベースのDebianTIPS集として始めたが、結局LXDEになってしまった。

赤外線リモコン解析

H8-3069Fを購入したのに、まずはOSから離れてしまったのには、わけがあります。
ネットで情報をあさっていて、H83069Fさんのサイト(http://www.geocities.jp/h83069f/index.html)
をみると、赤外線リモコンの回路が載っている。簡単、しかもデバイスが安い。
赤外線LEDや赤外線受信モジュールが、100円だなんて知らなかった。さっそく購入して、扇風機を動かすぞ。
赤外線リモコン受信モジュールPL-IRM1261-C438(I-04169,¥100)
赤外線LED[5mm][940nm][55mW/sr]OSI5LA5113A(10個入)(I-04311,¥100)
最終的な回路は以下の通りというか、上記のサイトとほぼ同じ。
赤外線リモコン回路図
プログラムも上記のサイトを参考にして、YAMAZANの扇風機のリモコンコードを解析してみた。
ググった情報では、赤外線リモコンのフォーマットは、基本的にNEC式、家電製品協会式、ソニー式らしいが、リーダもないし、データのコード化も合わない。スキャンに誤差があるのかと、プログラムをソフトスキャンから、irq4割り込みに変更してみたが、やはり同じデータが得られた。ソニーのリモコンを解析するとソニー方式のパターンになっている雰囲気なので、とりあえずパルス・フォーマットをべたコピーして送信したら、扇風機がちゃんと動いた。書くとあっさりしているが、ほんとに動くのか疑心暗鬼のなかで、はじめて動いたときは感激した。あとで、送信プログラムをいろいろ調整してみると、搬送波の周波数もデューティ比も結構シビアで、試行錯誤で動いたのはラッキーだったと思った。
解析というより、パルスのコピーなので、最終的に16ビットタイマのインプットキャプチャ割り込みを使って、自分的にはカッコよく書き直してみた。これが、簡単にできるMESシステムと開発環境に改めて感激。

// 赤外線リモコン解析プログラム by K Fujio 2012
// 解析には16ビットタイマー1を8分周して使用します。
// カウントはインプットキャプチャ割り込みで取り込みます。
// タイマのオーバーフロー(約26ms)か、DATASIZE/2サイクルで終了します。
// ただし、最低1回の赤外線信号がなければ終了しません。
// タイマが競合しないならMESの割り込みは止めなくてもたぶん大丈夫。
#include <mes2.h>
#include <h8/reg3067.h>

#define DATASIZE 500
static unsigned short int p_value[DATASIZE];
static unsigned short int count;

#pragma interrupt
void int_imia1(void){
load_segment(28);
if(count TISRA &= 0xfd; //IMFA1 allow
}

int main(){
unsigned short int i;

printf("IR analysis\r");
count = 0 ;
set_handler(28, int_imia1);

// int_disable();
TSTR &= 0xfd; //stop timer 1
TSNC = 0xf8;
TCR1 = 0x80 | 0x20 | 0x03; // GRA clear and x8
TIOR1 = 0x8f; // GRA input CATURE
TISRA = 0xa0; //IMFA1 allow
TISRC &= 0xdd;

TSTR |= 0x02; //start timer 1
while(count < DATASIZE){
// printf("%d-", count);
if(TISRC & 0x02) {
if (count==0) {
TISRC &= 0xfd;
} else {
p_value[count]=0;
break;
}
}
}
TSTR &= 0xfd; //stop timer 1
// int_enable();

printf("\r-DATA-\r");
for(i=0; i printf("%d\r",p_value[i]);
if(p_value[i]==0) break;
}
printf("Count=%d\r", i);
}

スポンサーサイト

AKI H8-3069F LAN

もともとOSが好きなので、「組み込みOS自作入門」を買ってしまった。
ターゲットのH8/3069Fネット対応マイコンLANボード(K-01271)が、なんと3750円。さっそく、秋月電子通商の通販で買ってしまった。
よし、OSでも作ろうかなと思ったものの、ROMの書き換え回数が100回までというのにビビってしまって、すぐには手が出せそうにない。
それに、もともとついているH8-OSが、すでにバージョンアップされてMES2となって、いろいろデバイスドライバがついていて、使いやすそう。既に開発者がH8を卒業されて、開発が終了しているのが残念だが、ネット上に再配布サイトがあったので、さっそく導入してみた。
MES2.3r18は、SDカードのドライバにバクがあるようなので、公式最終版のMES2.3r17を選択した。
大西@ソフト屋サイト(http://www.interq.or.jp/earth/atsushi/mes2/)から、
20MHz動作用のconfig.sys、shell.c、gcc23r17.exeをダウンロード。
また、本家みついわさんのサイト(http://mes.sourceforge.jp/mes26/)のサンプル例から、DHCPクライアントdhcp.h、dhcp.cをダウンロード。これは、MES23の環境でも動いたので便利。
秋月電子通商からは、ボードのほかに、ボードとPCの接続のため、USB・シリアル変換ケーブル(M-02746、¥900)、ケーブルコネクタのネジの干渉を避けるためにRS232C(Dサブ9P)延長ケーブル(C-00004、¥350)、1Mbit シリアルEEPROM(I-00187、¥270)を購入。
5VのACアダプタは手持ちを流用したが、なければこれも買っておく必要がある。
ホストPCは、windows7を使用しているので、XP modeにドライバをインストールして、変換ケーブルを接続し、COMポートを使えるようにしておく。
その後、gcc23r17をインストールし、mes23フォルダを作成して、shell.c, dhcp.h dhcp.cを配置する。
デスクトップのDevelopアイコンをクリックして、CbarLiteを起動し、ファイルメニューから、新規プロジェクトshellを作成する。設定メニューの環境設定を選び、読込ボタンから、User_H8.xmlを読み込む。ファイルメニューの追加で、Sourceにshell.cを追加。あとは、実行メニューのコンパイルでshell.elfを作成する。
同様に、新規プロジェクトdhcpを作成し、SourceとHeaderにそれぞれdhcp.cとdhcp.hをそれぞれ追加し、コンパイルして、dhcp.elfを作成する。mes23フォルダにdiskフォルダを作成し、作成したshell.elfとdhcp.elfを移動し、ダウンロードしたconfig.sysを配置する。config.sysは1MbitEEPROMを使うので、i2c0のsize=8000を20000に変更しておく。また、今後の自動実行のために、下記のautoexec.batファイルを作成しておく。
mount i2c0
/i2c0/run.bat

再びデスクトップからDisktoolを起動し、DiskLoadボタンを押して、先ほどのdiskフォルダを指定すると、4ファイルをmes2.motを含むdisk.motファイルがmes23フォルダに作成される。
H8ボードのdipスイッチをブートモードに設定して、シリアルコネクタを接続したら、電源と接続する。その後デスクトップからFlush writerを起動し、ボードの種類、comポートを選択し、57600bpsに設定したら、Writeボタンから先ほどのdisk.motファイルを選択すると、ROMに書き込みが行われる。
終了したら、H8ボードは、電源を切断し、DIPスイッチをモード5に設定する。
デスクトップのTerm(57600)でハイパーターミナルを開いた後、H8ボードに電源を入れるとMes2が起動する。
最初はEEPROMのフォーマットが終わっていないのでエラーとなるので、eject i2c0でアンマウントした後、format i2c0でフォーマットし、mount i2c0でマウントし、dfでサイズを確認する。
今後の自動処理のため、i2c0の下に下記のrun.batを作成する。
dhcp.elf ne0
ifconfig

ここまでできたら、LANケーブルを接続し、resetボタンを押して、H8ボードを再スタートする。
DHCPサーバが動いているなら、ipアドレスが無事割り当てられるはずです。
H8-3069fとmes23は終わった話なので、情報がなくなっていますが、gcc+cbarの開発環境はとっても快適です。

FC2Ad