2015年7月16日

1.簡単なOSを作成する~LED点灯~

今回はLED点灯について学習します。

git clone:
$ git clone https://github.com/satoshishimizu/mae_h8_3069f.git  
 
src/02/bootloaderソースをベースに変更していきます。

まず最初にLED1/LED2を点灯させる為に回路図を確認。


 H8-3069FマイコンとCN2との接続は作成中ですが、下記接続であることを確認。

LED1<->21port (LCD-LED-DIP)22port<-> 11port (CN2A) <->11port (CN2) <->25port D6/P46 (H8-03069)

LED2<->23port (LCD-LED-DIP)24port<-> 12port (CN2A) <->12port (CN2) <->26port D7/P47 (H8-03069)

次にD6/P46とD7/P47はポート4に含まれるので、付属のCD-ROM内の入っている「H8/3069 ハードウェアマニュアル」の8.5 ポート4  のレジスタ構成を参照する。


ポート4 レジスタ構成

Address Name 略称 R/W init
H'EE003 ポート4データディレクションレジスタ P4DDR W H'00
H'FFFD3 ポート4データレジスタ P4DR R/W H'00
H'EE03E ポート4入力プルアップMOSコントロールレジスタ P4PCR R/W H'00

P4DDR:(ポート4データディレクションレジスタ)
 ポート4端子の入出力をビットごとに指定することができるようです。
   P40~P47の8portに対して入出力をport毎に設定できる。

P4DDR register input output
value 0 1

P4DR:(ポート4データレジスタ)
 8bit のR/Wレジスタ。P4DRはリセット、またはハードウェアスタンバイモード時にH'00に初期化される。ソフトウェアスタンバイモード時には、直前の状態を保持するようです。

P4PCR:(ポート4入力プルアップMOSコントロールレジスタ)
H8マイコンには、プルアップ回路が内蔵されている。各端子毎にプルアップをON/OFFできる。

つまり、P4DDR = 1100 0000 = 0xC0 / P4DR = 1100 0000 = 0xC0に設定
7bit 6bit 5bit 4bit 3bit 2bit 1bit 0bit
Port P47
(LED2) 緑
P46
(LED1) 赤
P45 P44 P43 P42 P41 P40
P4DDR register value 1 1 0 0 0 0 0 0
P4DR register value 1 1 0 0 0 0 0 0

ソース:
int main(void)
{
    serial_init(SERIAL_DEFAULT_DEVICE);

    puts("-----------------Led1 and 2 is Light start!!\n");
  
    unsigned char *p4ddr = (unsigned char *)0xfee003;
    unsigned char *p4dr  = (unsigned char *)0xffffd3;
  
    puts("*p4ddr=");    putxval(*p4ddr, 0);       puts("\n");
    puts("*p4dr=");      putxval(*p4dr, 0);          puts("\n");
    puts("----------------------------------------------\n");

    /* p4ddr(P46 and P47) output setting 0x0c = 1100 0000  */
    /* p4dr (P46 and P47) output          0x0c = 1100 0000  */

    *p4ddr = 0xc0;
    *p4dr  = 0xc0;

    puts("----------------------------------------------\n");  
    puts("*p4ddr=");     putxval(*p4ddr, 0);      puts("\n");
    puts("*p4dr=");        putxval(*p4dr, 0);         puts("\n");

    puts("-----------------end\n");

  return 0;
}



実行結果(シリアル通信):

p4ddrの値が0xC0を書き込んでいるつもりが、0xffとなり書き変わっていない??なぜ??
p4drはP47/46に該当するbitが1出力されている。

-----------------Led1 and 2 is Light start!!
*p4ddr=ff
*p4dr=0
----------------------------------------------
----------------------------------------------
*p4ddr=ff
*p4dr=c0
-----------------end



p4ddr出力設定、p4dr該当bit出力されいるので、LED1/2点灯しました。

















次回は、LED点灯ができたので、LED点滅をさせてみたいと思う。
タイマー割り込みを使い一定時間点灯、消灯を繰り返し点滅制御に進んでみよう。
 
でも、なぜp4ddrが書き変わらないのか?
初期値0のはずだが、なぜ0xffなのかについてもちょこちょこ調べていく予定。

この時点のソースをpushしておく。こんな感じでできました。

git cmd:
sto@sto-PC ~/src
$ git add 02-1/

sto@sto-PC ~/src
$ ll
合計 0
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 01/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 02/
drwxr-xr-x+ 1 Administrators None 0 7月   5 21:35 02-1/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 03/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 04/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 05/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 06/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 07/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 08/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 09/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 10/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 11/
drwxr-xr-x+ 1 Administrators None 0 6月  28 11:39 12/
drwxr-xr-x+ 1 Administrators None 0 7月   5 17:31 tools/

sto@sto-PC ~/src
$ git commit -m "LED1 and LED2 Ligth"
[master 4f11c2d] LED1 and LED2 Ligth
 12 files changed, 553 insertions(+)
 create mode 100755 02-1/bootload/KL-01
 create mode 100755 02-1/bootload/LICENSE
 create mode 100755 02-1/bootload/Makefile
 create mode 100755 02-1/bootload/defines.h
 create mode 100755 02-1/bootload/ld.scr
 create mode 100755 02-1/bootload/lib.c
 create mode 100755 02-1/bootload/lib.h
 create mode 100755 02-1/bootload/main.c
 create mode 100755 02-1/bootload/serial.c
 create mode 100755 02-1/bootload/serial.h
 create mode 100755 02-1/bootload/startup.s
 create mode 100755 02-1/bootload/vector.c

sto@sto-PC ~/src
$ git log
commit 4f11c2d201b65123890158d589353dac7c4eff9d
Author: xxxxxxxxxxxxx
Date:   Fri Jul 17 00:14:41 2015 +0900

    LED1 and LED2 Ligth

commit 6305a7cff719f64a2f9f28316f9be6d7ac49b72b
Author: xxxxxxxxxxxx
Date:   Tue Jun 30 23:17:07 2015 +0900

    test

sto@sto-PC ~/src
$ git push origin master:master

ソース:
https://github.com/satoshishimizu/mae_h8_3069f.git


0 件のコメント: