カブのブレーキワイヤーを調整する
カブに乗り始めてしばらくたちましたが、ブレーキワイヤーのあそびが大きくなってきたので 調整してみました。 ブレーキワイヤーの調整は、オイル交換等と比べてもかなり簡単なので、誰でもメンテ可能です(オイル交換も慣れれば結構簡単ですが…)。 ブレーキワイヤー調整方法(前輪) 前輪のブレーキは右手のハンドルですが、ブレーキの適正な”あそび”の幅は、1~2cm程度です。ハンドルを引いて、抵抗を感じるまでの幅が2cmを超える場合は、調整が必要です。 前輪が傾いていると、ブレーキワイヤーの引っ張られ具合が変わるので、まずタイヤをまっすぐにします。 その後、アジャスタを回し…
続きを読む
PICkit3のファームを手動でアップデートする
MPLABでPICkit3を使用している場合、通常は初回接続時に自動でファームアップデート処理が走ります。 正常にプログラムが書き込めない等、PICkit3の動作が安定しない場合は、手動でファームを更新させると上手くいく場合があります。 ファームの手動アップデートは、以下の手順で行う事が出来ます。 メニューバーのProgrammer->Settingsを選択します。 Configrationタブを選択し、Manual Downloadボタンをクリックします。 ※MPLABをデフォルトの場所にインストールした場合、PICkit3のファームは以下の場所にあります。 C:\Program Files…
続きを読む
[パタヘネ:読書メモ]第5章 容量と速度の両立:記憶階層の利用 その2
5.3 キャッシュの性能の測定と改善 キャッシュの性能の測定を行うためには、CPUの使用時間の式を再定義する必要がある。 メモリアクセスを考慮したCPU使用時間は、以下の式で表すことができる。 CPU時間 = (CPU実行クロック数 + メモリストールクロック数 ) * クロックサイクル数 メモリストールクロック数 = 読出メモリストールクロック数 + 書込メモリストールクロック数 読出メモリストールクロック数 = 読出件数 * 読出ミス率 * 読出ミスペナルティ 書込メモリストールクロック数 = 書込件数 * 書込ミス率 * 書込ミスペナルティ + …
続きを読む
[PIC]TMRモジュールを使用する(タイマー割り込み)
PICにはTimer0モジュールというものがあり、このモジュールはカウンタやタイマー処理として使用できます。 今回はPI15F84におけるタイマー処理について説明します。 Timer0モジュールの仕組み Timer0モジュールは、カウンタ又はタイマーのどちらか一方として使用することが出来ます。 どちらのモードとして使うかはオプションレジスタ(0x81:OPTION_REG)の5ビット目にあるT0CSビットで指定することが可能で、このビットは以下の意味を持ちます。 OPTION_REG.T0CS(bit5) 1:RA4/T0CKI -> カウンタモード 0:内部クロック -&…
続きを読む
[gcc]値を2進数で表記する
C言語のプログラムでは”0x”の接頭語で16進数の値を指定可能ですが、gccでは”0b”の接頭語を付けることで2進表記を行うことができます。 プログラム printf( "%d\n", 0x6f ); printf( "%d\n", 0b01101111 );printf( "%d\n", 0x6f ); printf( "%d\n", 0b01101111 ); 実行結果 111 111111 111 ただしこの表記はgccで使用可能…
続きを読む
vimで複数ファイルを編集する
vimでは、複数のファイルを同時に編集することが出来ます。 vimではないviでも複数ファイル編集は出来るけど、ウィンドウ分割させて複数のファイルを”同時に”表示させる事は出来ません。 まずは1つファイルを開く vi test1.cvi test1.c vi上で以下のコマンドを打つと、2つ目のファイルが開く。 viでは複数ファイルを開いている場合、オープンしている各ファイルのことをバッファと呼びます。 :e test2.c:e test2.c オープンしている全バッファを確認する :ls:ls :lsの出力結果は以下のような感じになる。:filesでも同じだけどlsのほ…
続きを読む
[パタヘネ:読書メモ]第5章 容量と速度の両立:記憶階層の利用
まず基本原則として、コスト的な制約により記憶域には”少量の高速な記憶域”か”大量の低速な記憶域”のどちらかしかない。これは、たとえ十分な資金を用意できたとしても、”より大量”の情報をアーカイブしておく保存領域が欲しくなるので、結局上記の状況になる。 一方、プログラム側としては、大量の記憶域へ高速へアクセスしたいという要望が出てくる。 その結果として、データのキャッシュを行う必要があるけど、キャッシュがなぜ有効かというと、それは以下の原則によっている。 局所性の法則 時間的局所性(temporal locality) 最近使…
続きを読む
[PIC]内蔵EEPROMへアクセスする
PICには電源を切ってもデータを保存して置ける領域としてEEPROM(Electrically Erasable Programmable ROM)が用意されています。 PIC16F84Aの場合EEPROMのサイズは、データ長8bitのものが64個で計64byteの領域が存在します。 このEEPROMですが、その特性上書き込み回数の上限値が決まっており、仕様上は1000万回までの書き換えが保証されています。一見すると1000万回なんて到達しなさそうですが、PICの動作速度が速い為、頻繁に書き換えると、意外とすぐに上限に達してしまいます。 計算してみると、1回の書き込みは10msec程度で終わる…
続きを読む
[PIC16シリーズ]ピン数別の機能・評価一覧
PICはシリーズが多すぎて各チップの機能が分かりづらいのが難点ですが、価格と特徴を上手く整理してくれているものがあったので備忘録としてメモっときます。 PIC16ではなく18シリーズについて知りたい場合は、下記の記事を参考にして下さい。 [PIC18シリーズ]ピン数別の機能・評価一覧 【Pickit3】PIC専用のスレPart21【速度3倍?】 http://uni.2ch.net/test/read.cgi/denki/1228312753 より ——————————&#…
続きを読む
PICkit3を使用時,PICを認識できない時にチェックすべき事(PK3Err0045エラー)
MPLABより、PICkit3を使用してPICに書き込みを行おうとした際、OutputウィンドウにPK3Err0045のエラーが表示する事があります。 PICkit 3 detectedConnecting to PICkit 3… Running self test… Self test completed Firmware Suite Version…… 01.27.15 Firmware type………………….Midrange PICkit 3 Connected. PK3Err0045: You must connect to…
続きを読む
MPLABでPICkit3を使用してのデバッグが出来ない理由Top10
PICkit3のユーザガイドで、デバッグが上手く行えないときにチェックすべき点が掲載されていました。 日本語の情報が見当たらなかったので、訳したものを置いときます。 (ざっくりな意訳なので、おかしな所があったら指摘してくださると幸いです) 1.オシレータが正しく動作していない。 オシレータに関するコンフィグレーションビットの定義もチェックしてみてください。 2.デバッグ対象の回路に電源が供給されていない。 電源ケーブルの接続確認と、テスタで電圧チェックしてください。 3.デバッガが物理的にPC(もしくは回路側)とつながっていない。 ケーブルの接続を確認してください。 4.PICでコードプ…
続きを読む
[MPLAB]エディタのフォントサイズを変更する
PICの開発環境としてスタンダードなMPLABですが、インストール直後の環境だとエディタのフォントサイズが微妙に大きく、ソース全体が見渡し辛いので可読性がちょっと劣ります。 このフォントサイズですが、以下の手順で変更することが可能です。 エディタを表示させ、右クリックし、メニューの一番下にある”Properties…”を選択します。 Textタブにある”Select Font”ボタンをクリックします。 見慣れたWindow標準のフォント選択ダイアログが表示されるので、お好みのフォントに変更してください。 MSゴシックの9ptあたりにす…
続きを読む
PICアセンブラにおける分岐/ループ処理の組み立て方(基本編)
C言語では、if,switchによる分岐や、for,whileによる繰り返し命令を持っています。 一方、PICのアセンブラはどうかというと、当然ながらそんな便利な制御機能は持っていません。 というか、PICに限らずほぼ全てのCPUは、機械語レベルで上記のような繰り返し処理を持っていません。 それでは、アセンブラレベルでどうやって制御構造を組み立てていくかというと、条件付分岐命令というものを利用していきます。 PICのアセンブリにおいて、条件付き分岐を行える命令は以下の4つです BTFSC ; bit test file-reg skip if clear BTFSS ; bit test fi…
続きを読む
VMware上でPICkit3は使用できるか?
MPLABをインストールした環境をVMwareで構築しているのですが、 PICkit3を接続してみたところ、問題なく使用することが出来ました。 以下、証拠画面です(クリックで拡大します)。 動作を確認した環境は以下の通りです。 ホストOS Windows7 SP1 ゲストOS WindowsXP SP3 App VMware Player 3.1.4ホストOS Windows7 SP1 ゲストOS WindowsXP SP3 App VMware Player 3.1.4 注意すべき事はVMにUSBポートを追加するぐらいで、特にハマリどころもなく動作しました。 USBポートの追加…
続きを読む
MPLABでPICkit3使用時,PICkit3から電源を供給する
MPLABでPICへのプログラム書き込みにPICkit3を使用している場合、PICkit3から回路へ電源を供給することが出来ます。 電源供給はMPLABで設定を行います。 MPLABを起動し、Programmer->Settingをクリックします。 Powerタブをクリック後、”Power target circuit from PICkit3″にチェックを入れるとPICkit3側からPIC回路へ電源を供給することができます。 供給する電圧は、画面よりある程度指定可能です。 スライドバーを操作することで、2.75V~5.5Vを選択可能です。 電流については30mAが上限…
続きを読む
PICkit3を使ってMPLABからプログラムを焼く方法
前回MPLABを使ってプログラムを作成する方法を確認したので、今回は作成したプログラムを実際にPICへ焼いてみました。 今回の書き込みを行ったのはPIC16F84Aです。 PICへの書き込みにはライタが必要なので、まずは以下のハードを用意します。 用意する道具一覧 PICkit3 今回、ROMの書き込みにはPICkit3を使用しました(PICkit2でも書き込み可能です)。 楽天だと2021年7月現在、Debug Express付きのものが1万円ほどで販売されているようです。 プログラムの書き込みだけならDebug Expressは不要です。PICkit3単体だと4000円程度で入手できます。…
続きを読む