C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 84 を表示中)
■49602 / )  Re[2]: サンハヤト キースキャンボード MT−E503 出力設定
□投稿者/ tkana3 (64回)-(2010/05/11(Tue) 09:21:32)
SHO さん 774RRさん

説明不足失礼しました。
長文で申し訳ありません。

MPU h8/3694
マザーボード MB-RS10(そんなに重要ではないですが)
制御対象 キーボードスキャンのテスト
     
として、実験している段階です。16個の押しボタンキーがありますので、例えば16個の
それぞれのLEDを光らせたいと思います。

>何がいいたいのかさっぱりわからんのだが、ポート5って何?

h8マイコンの入出力を制御しているものです。h8シリーズですと大体ポート1〜8+ABポートがあり
それぞれ、8ビットで構成されています。ですから単純計算で、80個のビットの操作ができます。
兼用のものや使えないポートもありますので、この数は前後します。

ポート5はh8/3694の汎用ポートのことです。
h8/3694のポート5は8ビットあり、汎用入出力に設定可能ですので今回使用しています。

今回VPポート(仮想ポート)からh8/3694に、下記のように接続し制御しています。

VP(仮想)ポートのポート
↓   h8/3694ポート5のビット割当
↓   ↓
VP16 アウトプットイネーブル 6b 
VP15 スキャン信号ビット1   5b 
VP14 スキャン信号ビット0  4b 
VP13 LEDデコーダビット3  3b 
VP12 LEDデコードビット2  2b 
VP11 LEDデコーダビット1  1b 
VP10 LEDデコーダビット0  0b 

>この回路図が何を主張しているか読み取れて、どうアクセスすればいいか理解できているわけ?

完全に理解しているわけではないですが、4×4のマトリクス状になっており、横のラインVP10からVP13に
接続している部分は理解しています。(VPというのはポートの規格のことであまり気にしなくてもいいです。)

例えば、SW1〜4押下によってVP10がHighになります。
横のラインは、入力の設定で、押す→対応したLED光る→VP10〜VP13Highになる。で信号がとれています。

問題は縦のラインです(VP16〜14に接続されている部分です)
774RRさん指摘の通りに、ここの制御がうまく出来ていません。

> このソースから想像するに
>
> PDR5 = 0x10 とか
> PDR5 = 0x20 とか
> PDR5 = 0x30 とか
> でいいんじゃないの?

このようにすると、今回下位4ビットにスイッチ信号といわれる、VP13〜10が接続
されていますので、例えば

SW1押下で、LED1(ポート8の0ビット目に接続しているものとします)を点灯させようとすると。
*ポート8(h8/3694のポートのことです)

void main(void)
{
while(1)
{
unsigned int sw;
        PDR5 = 0x10   //←ここの部分違いますが、わかりやすいように
                // 書き換えました。
sw = PDR5;     //スイッチの値を読み込む
if(sw == 0x11)        
{
PDR8 = 0x01;  //LED1点灯
}
        PDR5 = 0x20   //←ここの部分も間違えです
sw = PDR5;     //スイッチの値を読み込む
if(sw == 0x21)
{
PDR8 = 0x02;  //LED2点灯
}
        PDR5 = 0x20   //←ここの部分も間違えです
sw = PDR5;     //スイッチの値を読み込む
if(sw == 0x31)
{
PDR8 = 0x03;  //LED3点灯
}
              :
              :
となりLEDデコーダのビット0に接続されている4つのLEDが点灯してしまうのです。

以上よろしくお願いします。
返信 編集キー/


管理者用

- Child Tree -