h8

「h8」の編集履歴(バックアップ)一覧に戻る

h8 - (2008/01/07 (月) 15:11:28) のソース

石垣 [sinnya07atgmail.com]at=@


メモ
PB0はCN1の33ピン(3069f)
3069マザーボード上のLEDのポート P4

3664
[[LED電光掲示板>http://www.humblesoft.com/j405board/index.html]]

----
3069 LANによる通信。CGIが使える。WEBサーバ。
CGIを使ったブラウザ上からマザーボード上のLEDの操作。
マザーボード上のDIPスイッチのON/OFFをブラウザ上に表示。

3664/LED電光掲示板
付属のソフトウェアによる文字列の表示。

>/*LEDをブラウザから点灯消灯するプログラム*/
>#include <h8/reg3067.h>
>#include <mes2.h>
>int main(int argc, char **argv) {
>char led[2][4];
>cgi_value(*(argv+1), "led0", led[0], 3);
>cgi_value(*(argv+1), "led1", led[1], 3);
>P4DDR = 0xc0;
>P4DR = 0;
>if(led[0][0] == 'o') P4DR |= 0x40;
>if(led[1][0] == 'o') P4DR |= 0x80;
>printf("<html><body>\r\n");
>printf("<h1>LEDテストページ</h1><hr>\r\n");
>printf("<p>argcは%dです。</p>\r\n",argc);
>printf("<p>*argvは%sです。</p>\r\n",*argv);
>printf("<p>*(argv+1)は%sです。</p>\r\n",*(argv+1));
>printf("<p>赤は%sです</p>\r\n",led[0]);
>printf("<p>緑は%sです</p>\r\n",led[1]);
>printf("<form action=\"%s\">",*argv);
>printf("led1(赤)<input type=\"checkbox\"name=\"led0\" %s>\r\n",(led[0][0]=='o') ? "checked" : "");
>printf("led2(緑)<input type=\"checkbox\"name=\"led1\" %s><br>\r\n",(led[1][0]=='o') ? "checked" : "");
>printf"<inputtype=\"submit\"value=\"submit\"><br>\r\n");
>printf("</form><hr>\r\n");
>printf("</body></html>\r\n");
>}

このプログラムによるブラウザの表示

LED点灯なし#ref(LED無.bmp)
----
12/26 冨田
昨日_ _dataの所を_dataをにしたが、___dataにした。あと、変換ができなかった理由は、数字のゼロと英語の大文字のオーと間違えて打ったため。
プログラミングはできたのだが、しっかりLEDが思ったとおりに光ってくれない。
次回は回路を見直していく。

----
12/25 冨田
前回のcrt0.sをアセンブルできなかったが、_ _dataの所を_dataにしたところできた。次にcrt0.oとbasicio.oのリンクするが失敗。原因は先ほどの _ _dataの所を_dataにしたためリンクの
ファイルも_ _dataの所を_dataに直してなかったから。
しかし最後のbasicio.coffをbasicio.motに変換するところでエラーが多数。原因はわからないのでプログラミングの中を少しずつ書き直してみる。

石垣

H8(3069)がウェブサーバ。IP:192.168.10.2 PCをクライアント。IP:192.168.10.1
H8にはウェブサーバプログラム(MESの開発者のサンプル)http.elfを搭載。
そのほか、H8のマザーボード上のLEDをクライアント側の操作で光らせるCGIプログラムbrled.elfも搭載。
サーバとクライアントはクロスLANケーブルで接続。

ターミナルでH8を操作し、http.elfを実行。
クライアントのブラウザでサーバ内のプログラムbrled.elf(http://192.168.10.2:8088/brled.elf)を実行。
クライアントのブラウザにindex.htmlが表示。
ブラウザ上のチェックボックスのデータを送信ボタンを押したときにサーバに送信。
  送信するとき、http://192.168.10.2:8088/brled.elf  (この部分にフィールド名=値1&フィールド名=値2…とエンコードされて、サーバに渡される。)
  サーバは渡された値によってマザーボード上のLEDを点灯/消灯させる。  
  
----
12/20 冨田
テスト用の書き込み失敗の原因を判明。プログラミングを書き込むときにMD2端子をGNDに接続し、FWE端子を
5Vに接続をしてなかったから。
今はポートの入出力のプログラミングを作っているが、どうしてもスタートアップルーチンがうまく起動しな
い。原因はプログラミングの.dataセクションの内容だと思われるが、どこがだめなのか分からない…

 石垣
ブラウザからマザーボード上のLEDを点灯させることに成功。(プログラムは参考にしているHPより)
IEの設定で3069と通信ができなかった。(pingは通っていた。)
RS232Cじゃなくてブラウザからなにかできるようにしようかなぁと思案中。

----
12/18 石垣
COMポートの不調はドライバのインストール後、再起動しなかったから?の模様。あの後直った。
ブラウザからマザーボード上のLEDを点灯させるつもり。
だが、うまく繋がってない。WEBサーバのプログラム(公式のとこから拾ってきたの)がちょっと違う?
要確認
----
12/17 石垣
3069へtftpによってLAN経由で自作プログラムをのせて実行することはできた。
が、USBシリアルポート変換ケーブルをつかってみたら今まで使っていたCOMポートまで動作不調に。
(COMポートは開いているが、H8(3069、3664ともに)通信できない)
自分の使っているPCが駄目みたい。
変換ケーブルか?変換ケーブルのせいか?
----
12/14 石垣
OS(以下MES)を乗せ変えたのはいいが、自作プログラムをRAMに転送させる方法がわかんない。
仮想サーバ立ち上げて、LAN経由で3069側から落とさせるらしい。
そのための設定に手間取り中。
でも、電光掲示板につかっている3664のほうもMESを使っているような感じが・・・
なので、これで通信ができれば結構簡単にいけるかも?

3069とPCはLAN(クロス)ケーブルで、直接つなぐつもり。
ルータって使っちゃいけないんですよね?

調べたところ、RS232Cケーブルをつかってもいけそう??
----
12/13 石垣
3069のOSは参考にしているHPと同じものに。
ただし、プログラムを乗せるときにLAN経由らしいのでクロスケーブルを購入予定(探したけど、研究室内にはなさそう)
これで、RS232Cでターミナルでのコマンドによる操作でなく、自作プログラムで操作ができれば
通信プログラムは間違っていないことになる。
----
12/12 石垣
3069でSCIをユーザープログラムで動作させる場合は、JP1から線を引き出してDサブ9ピンとつなげなければならない。

え?また工作するん?
3052に使っているものを拝借するか・・・というか、それが一番はやそう。
参考にしているところが新しいOSのため、3069につんでいるOSを最新のものに書き換えたほうがよさそう。

これで通信ができればwin側のプログラムは間違っていないことになる。
そうすると問題点は、
送るデータが間違っている。(形式どおりにどうコマンドを送るか?)
送信データバイト数の設定が間違っている。
に、絞ることができると思われる。
----
12/11 石垣
3069にデータを送りつけたとき、どこにはいるのか?
3069側のプログラムは?

3052は今後、入出力とできればLCD
----
12/10 石垣
winから通信ソフトを使わずに、プログラムから電光掲示板を操作する。
けど、できない。
送信データバイトの設定がおかしい?
ファームウェアへのコマンドが届いてない?

3664(電光掲示板セット)の前に3069で通信のテストをする。
これができれば、通信はできていると思われる。
そうすると問題は、3664のファームウェアに送るコマンドデータが
おかしいとわかるはず。


毎日いて、この進み具合はマズイ
----
12/6 冨田
テスト用のプログラムをCPUに書き込み。
だが失敗。色々試したが原因は不明。あとはハンダゴテでつけた所の接触不良の可能性があるから、
次回はそこの所をチェックする。

----
12/5 石垣
Cで直接3664と通信することにする。
コマンドと数値だけで直接操作できる?(ターミナルが内部で変換しているのかいないのか)
通信プログラムはみつけたので、それを解読。自分で使えるようアレンジ。

----
12/3 石垣
ハイパーターミナルをつかってコマンドによる希望座標のLEDを光らせることができる。
図形LEDで表示させる。
毎回、座標を計算してコマンドで送るのは大変なのでC言語で自動化しようとおもう。
そのためのプログラムを考える。
問題は、3664への通信。
ターミナルにコマンドと座標をおくってターミナル経由でシリアル通信する?
----
11/28 冨田

h8のテストプログラムを作成。

----
11/28 石垣

3664と電光掲示板は壊れてなかった。
電光掲示板のほうは一緒に入っていたソフトで動作確認済み。
このソフトなしで自分でC言語で組んで表示させるようにする。したい。できればいいなぁ・・・
LCDも新たに買ってきたのでこっちの表示もさせてみる。

Cで組むために、ファームウェアのコマンド解析。etc
----
11/22

h8-3664と電光掲示板の動作確認

動作テストしたあとに、3664がショート・・・
----
11/08
>/*h8マイコンテストプログラム*/
>/*ポート3を入力に設定 押しボタンスイッチ*/
>/*ポートBを出力に設定 LED*/
>/*押しボタンスイッチが押されている間LED点滅*/
>/*離したらLED消灯*/
>
>#include <h8/reg3067.h> /*h8/3069fで使用するI/Oポートを定義*/
>#include <h8/syscall.h> /*h8/OSを使う場合に必ず指定をする*/
>
>int main() {
>	int sw;
>	PBDDR = 0xff;/*PB全8ビットのポートを出力に設定する*/
>	P3DDR = 0x00;/*P3を全ビット入力に設定*/
>			
>	while(1) {
>		sw = P3DR & 0x01; 	/*スイッチ入力*/
>		if(sw == 0){	/*スイッチがONならば*/
>		PBDR = 0x0f;	/*LED出力*/
>		sleep(5);		/*0.5秒待機*/
>		PBDR = 0;		/*LED消灯*/
>		sleep(5);		/*0.5秒待機*/
>	}
>	else	/*スイッチがOFFならばLED消灯*/
>		PBDR = 0;
>	}
>}
sleepの場所をwaitでの待機にしようとしたがコンパイル時にできなかった。
/usr/h8300-hms/lib/h8300h/int32/libc.a(syswait.o): In function `wait':
syswait.c:12: undefined reference to `_wait'
collect2: ld returned 1 exit status

sw = P3DR & 0x01; 	/*スイッチ入力*/の部分
ビット0の状態を調べるために1とANDしている。
すると、ビット0以外のビットは必ず0にクリアされるため結果的にビット0だけが残る。
それを変数swにいれているのでビット0の値で処理ができる。

作成したスイッチ入力回路はスイッチがONの時に0(LOW)となるので変数swが0の時、
IF文の中の処理に向かう。
----
11/6
入力テスト終了
P3と接続したスイッチを押すとPBに接続されたLEDが消灯
----
10/29

h8/3664と電光掲示板との接続リード線の”準備”

プレゼンの準備
----
10/18

LCD死亡?
LCDは配線がどこか繋がっていなかっただけで使えた模様。
おいらの一日を返して!orz
LCD探してくる。
次回CPUボードの入力を考える。
----
10/11

LCDのテストをしたところ表示がされなかったので、マザーボードから取り外し確認してみることに。
しかし、取り外せない、まいった。
LCDはなかったことにするか??思案中
マザーボードのLEDも点灯することを確認。
----
10/04

Bポートを使い、四つのLEDを(0101)(1010)の交互に点灯させることに成功。次はスイッチを追加して、スイッチが押されたときに点灯させるようにする。
また、他のポート(つかっていい場所)でも試してみる。


----
10/03

h8/3069を通してLEDを点灯することに成功。ひゃっほーい
ただし、LEDと抵抗だけの回路なので元のものとは違う?


今までできなかったのはLEDが死んでいたのと、プログラムミス。
回路もまちがっていたかもしれない。要確認。

----

09/27

動作確認用のLED回路作成。
電子回路を誰か確認していただけるとありがたい。
完成した後、3069マザーボードにLEDがついているのを発見。これ使ってもいけそう。

h8/3069にのせるLED点灯用のプログラムは完成した。
----
ただし、include<h8/3067.h>(h8/3069のI/Oポート定義)がないといわれる。
なので、defineでポートごとに定義。
h8/OSのh8/syscall.hはあるのにおかしい。同ファイルにreg3067.hがあるのにもかかわらず認識されず。
10/2
include<h8/reg3067.h>で解決しました。
ソースが読みにいってるファイルになかっただけでした。
----

しかし、h8/3069のRAMに書き込まれた、アドレス「fff600」にアクセスできず。
やり方がおかしい?
要確認。

壊れたh8/3069よりDCジャックとDサブ9ピン(メス)を分離。
h8/3052の方で再利用予定。

LED点灯は来週末までには!!

3052のRS232C用のコードは作成完了。でも、Dサブ取れたんだからこれ使ったほうが早そう。


>/*led P4*/
>/*#include <h8/3067.h>	h8/3069fで使用するI/Oポートを定義*/
>#include <h8/syscall.h> /*h8/OSを使う場合に必ず指定をする*/
>#define P4DDR (*(volatile unsigned char*)0xfffc8) /*ポート4の定義*/
>#define P4DR (*(volatile unsigned char*)0xfffca)
>int main() {
>    P4DDR = 0x01;	  /*P4のポートを出力に設定する*/
> while(1) {
>   P4DR = 0x00;	/*P4をLにする*/
>   sleep(10);	/*1秒の時間待ち*/
>   P4DR = 0x01;	/*P4をHにする*/
>   sleep(10);	/*1秒の時間待ち*/
>  }
>}


C:\Documents and Settings\烏野\h8program>h8300-hms-gcc -O -mh -mint32 -T ram3067
.x -o led.coff -nostartfiles ramcrt0.s led.c -lc

C:\Documents and Settings\烏野\h8program>h8300-hms-objcopy -O srec led.coff led.
mot

C:\Documents and Settings\烏野\h8program>put led.mot
fff600 10 5E FF F6 06 54 70 01 00 6D F6 0F F6 01 00 6D F4
fff610 10 7A 03 00 0F FF C8 FA 01 68 BA 7A 04 00 0F FF CA
fff620 10 18 AA 68 CA 01 00 6B 22 00 00 01 3C 1A 80 88 0A
fff630 10 5D 20 FA 01 68 CA 01 00 6B 22 00 00 01 3C 1A 80
fff640 6 88 0A 5D 20 40 DA

----

09/11
サンプルプログラムの動作
ハイパータミナルからexecコマンドでサンプルプログラムを動作さ せようとすると止まる。
原因不明。
たまに、dumpでもとまる。(反応がなくなる)
CPUボード側でリセットスイッチを押すと再び反応する。

通信時に光るはずのLEDが発光せず。
不良品?

----

09/04
マザーボード作成完了
CPUボードの動作確認未

----

07/16
H8/3069F(CPUボード完成 要動作確認)
マザーボードはCPUボード動作確認後作成予定
KARAAGEに開発環境セッティング

RS232C9ピン:入手済
h8/3069FCPUボードにOSインストール 8/9:インストール完了

電源は+5V安定化電源

----

h8マイコンボードの制作目的
終了
    CPUの動作確認最優先
  なんらかの形で動作確認をする。
  候補:LEDと接続し点灯

予定
  入力と出力のテスト
  スイッチによる入力とLEDによる出力
 
 
(未)LEDとの接続
 LEDと接続し動作確認を行ったら、マザーボードの作成
 のちLCDによる文字表示など
(要)目的は?
h8/3069FはLANボードなので通信を使ってなんらかの成果を出したい。LCDがマザーボードについているので、外部からの入力に反応してなんらかの出力をする?


秋月電子 h8/3069Fのぺーじ
http://akizukidenshi.com/catalog/items2.php?q=%22K-00168%22&s=popularity&p=1&r=1&page=

参考:h8/3052
http://www.mech.tohoku-gakuin.ac.jp/rde/contents/tech/h8/h8_3052.html

----

自宅PCでコンパイルしたいなどと聞いたので
C言語用コンパイラ&エディタなど
ここを参考に
http://www.ooyashima.net/db/prog.htm#vc
BCC Developerは使えるようにしたので、インストールのサポートはできます。
ちなみに、BCC Developerは統合開発環境です。
BCC Developerのreadme.txtを読めばインストは出来るはずです。
コンパイラ本体はユーザー登録の必要あり

今まで自分の使っているものが配布終了していたので、どれがいいかは分からなくなりました。
なげっぱなしもあれなんで。
連絡用においておきますね。っ[sinnya07atgmail.com]at=@
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。