2015-05-31 00:34 | カテゴリ:コンピュータ
先日から、

PICの16F876のEEPROMが壊れていて、デバッグでてこずりました。

PICに接続してソフトのテストをするLCDキャラクタディスプレイが、壊れていました。

リビングで使用しているノートPCのマウスパッド部分が不調になりました。

家庭で使用しているLAN接続のHDD3台のうち、一番古いHDDが故障しました。

LAN.jpg

世の中には、何か自然法則があって、ひとたび何かが起こると、連鎖反応をしめすのでしょうか?

特にPCのアプリケーションソフトが不具合になったとき、何がしかの対策を実施すると、それが次の問題を生じさせ、更に深みにはまる事は良くあります。
その対策を採ると、更に一段深刻な問題を生じ、ますますどつぼに。。。

幸い、別のLAN接続HDDに毎週一回の頻度で自動バックアップを取るように設定してありましたので、実害はほとんどありません。

しかし、昨日やっと完成した、XC8言語のLCDディスプレイ表示テストプログラムは、この壊れたHDDに入っていました。

もう一度製作しなおしです。

今度は、RAIDでミラーのHDDにして、リアルタイムでバックアップが取れるようにしたいと思います。
2015-05-29 18:01 | カテゴリ:PIC応用回路
やっほー!

LCD表示が出来るようになりました。

WEBなどで調べたXC8のプログラムの仕様が合わないので、自分の製作したアセンブラプログラムをXC8に置き換える作業をしていました。
アセンブラのプログラムでは、Wレジスタを経由して、パラメータの一部をやり取りする使用でした。
また、i2cのアドレスやレジスターは、変数にセットして、書き込みや読み取りをするプログラムです。

XC8でこれを置き換えましたが、なにせC言語初心者ですので、関数への引数パラメータの渡し方と、結果の受け取り方など、わかりません。
しかし、先日購入した参考書が非常に分かりやすく、丁寧に解説してあり、それを元に、関数を設計しました。
また、変数にも悩みました。

変数を定義する場所で、その変数が有効となるスコープが異なるので、同じ変数名でも、値が異なると言う問題にも悩みましたが、とりあえず、LCDの初期化とサンプル文字の表示まで出来るようになりました。

ちなみに、CMではありませんが、購入した参考書は、
「新・明解C言語 入門編(柴田望洋 著)」
です。(多謝!)

このLCDパネルが付いた基板は、温度、湿度センサーのデータをi2c通信で読み取って、LCDに表示するものです。
アセンブラで組んであり、今回のXC8のプログラムテストに使用しました。

LCD1.jpg

LCD2.jpg

PICのソケットに、ゼロプレッシャーのソケットを延長ケーブルで取り付けて、書き込みしたPICのテストが簡単に出来るようにしたものです。


LCD3.jpg


今回製作したプログラムで、文字を表示しました。


とりあえずLCDを操作する基本部分の動作が確認できましたので、今後は、もう少し簡単に必要な文字を表示できる関数に仕上げていく予定です。

2015-05-27 10:54 | カテゴリ:PIC応用回路
PICXC8言語の勉強は、一進一退です

初めに製作しようとした。液晶のキャラクター表示パネルが、どうも調子が悪く、別のi2C制御の小型LCDパネルをテストケースとして採用することにしました。
WEBをググッてみると、先人たちがPICを使用したXC8言語で色々なプログラムを発表されています。
大変参考になります。

一方、こちらのPICですが、昔のPICであるため、先人の方々が使用しているPICとは違い、かなり古いモデルのようで、直接的にコピペして、プログラムを勉強することが出来ないようで、コンパイル時に結構なエラーのオンパレードになりました。
仕方が無いので、自分で製作した、アセンブラのプログラムをPICXC8に置き換える形で、C言語でプログラミングしつつ勉強しようと、進めています。

C言語は、まったくの素人で、プログラムを書き始めて、いつまでもエラーが消えないと思ったら、

main()

を記述していませんでした。(汗)

と言うわけで、色々なエラーを乗り越えつつ、とりあえず、LEDピカピカ、まで到達できました!!

やれやれ。


2015-05-26 11:34 | カテゴリ:マイカー遍歴:いろいろ乗りました
ナビバージョンアップしてきました!
納車が2014年3月だったので、早々に実施対象になった様です。
まだ、Dからの帰宅くらいしか、使用していませんが、感想を。

* エンジン始動後、GPS認識までの時間は1分ほどで、従来のように、変な場所をうるうろする事はいまのところありません。

* 地図の配色は、昼間、夜間、それぞれ色調を選択できますが、地図の表示内容は、かなりシンプルです。ほとんど道だけの表示です。(都市部以外は)ただ、従来表示が少なかった、施設名は時々表示されます。神社の鳥居があちこちに表示されました!(笑)

* 地図は、オリジナルの配色と比較すると、「さっぱり」の印象です。地図上の道路の幅の表示が、あまり変化ない印象で、住宅地内の細い道も片道1車線の道も、あまり差が無く表示されます。川の川原などが、道のように表示されました。

* 交差点名称ですが、画面の右上に直近のものが表示されます。 前はもっと表示されたように記憶していますが。

* 目的地案内の道表示で、曲がる交差点毎に四角いドットが地図上に表示されて、ちょっと邪魔です。

* 従来は、「戻る」ボタンで、ナビの直前に表示していた「燃費グラフ」に戻れたのですが、それが出来なくなりました。(戻るボタンが効かない)

* 未知の場所への案内は未だテストしていません。高速の乗り降りなども今後チェックします。

自車位置を間違えなければ、まし、ということですかねぇ
ところで、今回のナビは日本のメーカーが製作してとのことです。そのせいか、地図には今まで表示されなかった、お寺や神社のマーク(卍や鳥居マーク)があちこちに表示されています。(笑)
あ、こんなところに神社があったんだ、と気づかされます。

そうそう、良いこともありました。

パワートレインモジュールのSWも改良されたと書いてあったので、なにかなぁ?と思っていました。
それは、あの、走行中にアクセルを離して、2秒くらい経過すると、エンジンブレーキ(オルタネータの発電だと思いますが)ぐぐーっとかかる、非常に運転しにくい、気になる仕様がありましたが、それが無くなって、アクセルを離すと、すーっと滑らかに慣性走行しつつ、減速していきます。
これまでは、アクセルを離すと、減速が急に始まるので、またアクセルを踏む動作をしなければならない場合が多くありましたが、これが無くなり、アクセルワークの点から、運転しやすくなりました。
【ジャンル】:車・バイク 【テーマ】:新車・ニューモデル
コメント(0)
2015-05-21 20:59 | カテゴリ:PIC応用回路
やっとLEDピカピカのプログラムが動作したところで、開発環境は整った事が確認できましたので、WEBをチェックして見つけた、LCDキャラクタ表示器の制御を勉強することにしました。

いろいろ探しましたが、既にアセンブラで製作していた、赤外線リモコンの送信コードを解明(16進表示)する装置を応用するために、PICのポートがそのまま活かせることが条件でしたので、ソフトもそのあたりが簡単に修正できるものを選定しました。
WEBに親切に説明されているもので、それをそのままコンパイルすれば簡単!
というわけで、コピペでMAINやHEADERファイル、ライブラリなどを組み入れたのですが、Cの初心者の悲しさ、どんなファイルをどこのDIRECTORYにセットしたらよいかも分からず、悪戦苦闘の2日間でした。

なんどコンパイルしても、ERRORのオンパレード。

ERROR.jpg

ERRORメッセージを見ると、INCLUDEファイルを認識していないみたいで、いろいろWEBを調べても、良く分かりません。
暗礁に乗り上げていましたが、結局、WEBに掲載されていた、MAINファイルとライブラリ、HEADERファイルをSOURCEファイルのDIRECTORYに読み込んでコンパイルしたら、ERRORがほとんど消えました。
やったー!
で、残ったERRORは、MAIN中に「;」が抜けている、と言うものでした。
どうみても、ちゃんとセミコロンがあります。
おかしい。
それで、一度その部分を消して、改めて記述したらOKでした。
どうやら、製作主の方が、コメントを入れた際に、全角のスペースが間にはいっていたようです。

で、めでたく、コンパイルエラー無く、HEXファイルがビルドできました。

BUILD_OK.jpg


動作確認のために、LEDを点滅させて、OKでした。
あとは、手持ちのLCDディスプレイの規格に合わせて、ソフトを修正していけばよさそうです。

アセンブラで製作したソースファイルがあるので、これを参考にCのプログラムを変更していけばよさそうです。

2015-05-20 10:02 | カテゴリ:PIC応用回路
動作が期待したとおりにならない問題が一向に解決しません。
ビジターの方からもご丁寧なアドバイスを頂き、あれこれとプログラムをいじっていました。
どうもDelay()が期待通りに動作していなくて、次のステップにプログラムが移動してしまっている印象です。
もちろん、シミュレータ上は、ちゃんと動いています。

うーん。困った。

悩んでいると、先日の悪夢を思い出しました。
PIC16F877のEEPROMの件です。
ひょっとして、PICが壊れかかっているのでは??

手持ちにあった、もう一つのPIC16F84Aを出してきて、書き込んでみると、、、、
おー!
ちゃんと動作するではないですか!!
印象としては、Bポートの入出力回路が不安定で、隣のポートの信号に引っ張られて誤動作しているようでした。
もう、PICなんて、大嫌いだ!!



と言うわけで、お騒がせしました、LED簡単点滅プログラムも動作して、開発環境が整いました。
アドバイスをありがとうございました。

PS LEDの輝度も、なんだか明るく点灯しているようです。

2015-05-19 17:15 | カテゴリ:PIC応用回路
単純な、LEDを順番に点滅するだけのCのプログラムです。

これがどうして、まともに動きません。
予定では、順番に点灯->消灯、次が点灯->消灯、と繰り返すつもりでしたが、なぜか、消灯する前に次が点灯したり、変な動きです。
原因は不明です。
Delayルーチンが終了する前に、次のプログラムを実行しているように見えます。

プリグラムはこちら

//テストプログラム

#include
#define _XTAL_FREQ 20000000 //外部発振子が20MHzの場合
#pragma config CP = 0x03ff , WDTE = 0, PWRTE = 0 , FOSC = 0x2

static void InitPortIOReg(void);

int main(int argc, char** argv) {

int i = 0;
InitPortIOReg();
while(1){

__delay_ms(100);
PORTBbits.RB0 ^=1;
__delay_ms(100);
PORTBbits.RB1 ^=1;
__delay_ms(100);
PORTBbits.RB2 ^=1;
}
}

static void InitPortIOReg(){

TRISBbits.TRISB0 = 0;
TRISBbits.TRISB1 = 0;
TRISBbits.TRISB2 = 0;
}


//-------------------------


実際の動作びでおがこちら




素人には良く分かりません。



2015-05-18 18:27 | カテゴリ:PIC応用回路
C言語の作法が良く分からないので、WEBの初心者サイトを巡回しても良く分かりません。

「ちょっと待って、ちょっと待って、お兄さん! ヘッダーファイルって何ですねん?」
てな、具合で。

ようやく、BUILDが出来て、HEXファイルを秋月のPICライターに読み込んで、ふと気づきました。
HEXファイルの中身が全部FFになっているではないですか!
ちゃんとBUILDが成功しているのにです。
ここで、数回、試行錯誤しましたが、解決しません。

AKI1.jpg

PICライターに表示されるHEXファイルにデータが書き込まれていないなんて、おかしい、と表示を下にスクロールしていくと、最後の2行にそれらしきデータが書いてありました。

aki2.jpg

どうやら、C言語のHEXファイルの出力は、なぜか、アドレスの最後の方に書き込まれているようです。
アセンブラのときは、ORG命令で、メモリーの最初に方に書き出していましたので、Cでもそうかと思っていました。

というわけで、メモリーの初めのところには、JUMP命令があって、最後の方へ飛んでいるだけだと分かりました。
ちゃんとHEXファイルが出来ていたわけです。

これをPICライターで書き込んで、動作確認、動きました。
よかった!

やっとのことで、C言語(とアセンブラ)の開発環境が整いました。
さぁ、勉強勉強!
2015-05-17 23:31 | カテゴリ:PIC応用回路
PICはかれこれ10年近く付き合っています。
初めて出会ったときは、かなり面白いCPUだと感じて、そうとう勉強しました。
プログラム言語は、アセンブラです。

慣れると、アセンブラでもかなりのことが出来、また、実行速度が速いのと、メモリーサイズに制限があるPICでは、プログラムサイズを小さく出来ることで、めりっとはありました。

しかし、時代の流れもあるのと、複雑な処理をアセンブラで組み上げる大変さ、特にデバッグは、半端ありません。
そこで、一念発起して、PICのC言語を勉強することにしました。

C言語は、昨年、MicrosoftのC#をPCにインストールして、PICをRS-232で通信し、かんたんなデータ処理をするところまでかじりましたが、ちょっと壁に当たっていました。
今回、PICのCを勉強して、何とかC言語を物に出来ればと思います。

で、とりあえず、MPLABXの最新版と、FREEのC言語のXC8をインストールしました。
リビングで使っている、NOTEパソコンにトライアルでインストールして、問題なければ、自室のデスクトップPCにインストールする予定で、開始しました。
NOTE PCには問題なく、MPLABXXC8もインストールでき、開発環境が整いました。

MPLABX1.png


それで、自室のPCにもインストールしようとしたら、MPLABXは出来ましたが、XC8をインストール中にとまってしまい、進みません。
何度やっても、バージョンを変えてもだめ。
さんざん、悩んで、WEBで色々調べたら、WINDOWSのディスプレイの設定で、「画面上の文字の大きさの設定」を100%にしないと、インストールが出来ないと言う問題があることが分かりました。
そこを対応して、OKでした。
インストール後に、設定をもどしても問題なし。

と言うことで、何とか開発環境が整いました。

WEBから、LEDピカピカのサンプルプログラムをコピペして、動作確認を、、、、
と、ここでまた、問題が。

MPLABX2.png

BUILDするところで、ERRORになります。

前途多難な出発です。
2015-05-12 19:44 | カテゴリ:PIC応用回路
疲れがドット!

前回のバグ取りで、基本部分が完成し、あとはEEPROMの読み出しだけだと、高をくくっていましたが、落とし穴がありました。
EEPROMの読み出しに関しては、参考文献もあって、それを元に、読み出しルーチンを作成しました。

MPLABに内蔵のシミュレータで正しく動作することを確認して、実際の基板にPICを組み込んでテストすると、上手くありません。
文字にならないデータがスクロールしていきます。
EEPROMの読み出しが出来ていないと、再度シミュレータで動作確認しますが、ちゃんと文字データが読み出されています。
散々悩んで、別のPICに交換したら、正しく動作しました。
どうらや、EEPROMの読み出しに問題があるPICだったようです。
しかし、秋月のPICライターでは、EEPROMに正しく書き込まれて、読み出しチェックもOKだったのですが。

というわけで、今日一日、なんやかんやで、これに費やしてしまいました。

それで、完成動作ビデオがこれです。