結局、PICkit3は直らなかった [PICkit3]
(2018.08.19)
起動するとStatus LEDが 赤色点灯する3台のPICkit3にFirmwareを書き込みました。
全て、”Programming/Verify complete”と表示されたので、書き込みそのものは成功したと思います。起動するとStatusは 消灯するように成りましたが、相変わらずConnection Failedとなる件は改善されません。
PICkit3が接続できなくなったのは、親族SNS管理人の取り扱いが悪かったせいだと思っていました。しかし、多くの方の報告にもあるように、PICkit3がFirmwareの更新に失敗して、その結果起きる不具合のようです。先日不具合になったPICkit3も、PIC16F1788の開発に使っていたときは問題無かったのに、PIC24FJ256GB106のHexファイルを書き込むためMPLABX-IPEを起動してFirmwareのアップデートが始まり、Download Failを起こして・・・Connection Failedに成りました。orz
厄介なのは、時折この症状から回復するPICkit3があるということです。
何故、PICkit3がFirmwareの更新に失敗するのか?
何故、Connection Failedを表示して接続できなくなるのか?
何故、時折この不具合から回復するのか?
そして、どうしたらこの状態から抜け出せるのか?
数千円の安い開発ツールだと思って諦めていました。しかし、今回ケースの中を見て妥当な価格は¥2500程度では無いか?と感じました。それを¥5000~¥6000で売っているのですからMicrochip社は不具合対策をきちんと行って欲しいと思います。(怒)
まぁ、コンパイラとかMPLAB-X IDEとか無償の開発ツールを使わせてもらっているので、あまり大声で文句を言う訳には行かないのですが・・・
(お粗末)
起動するとStatus LEDが 赤色点灯する3台のPICkit3にFirmwareを書き込みました。
全て、”Programming/Verify complete”と表示されたので、書き込みそのものは成功したと思います。起動するとStatusは 消灯するように成りましたが、相変わらずConnection Failedとなる件は改善されません。
PICkit3が接続できなくなったのは、親族SNS管理人の取り扱いが悪かったせいだと思っていました。しかし、多くの方の報告にもあるように、PICkit3がFirmwareの更新に失敗して、その結果起きる不具合のようです。先日不具合になったPICkit3も、PIC16F1788の開発に使っていたときは問題無かったのに、PIC24FJ256GB106のHexファイルを書き込むためMPLABX-IPEを起動してFirmwareのアップデートが始まり、Download Failを起こして・・・Connection Failedに成りました。orz
厄介なのは、時折この症状から回復するPICkit3があるということです。
何故、PICkit3がFirmwareの更新に失敗するのか?
何故、Connection Failedを表示して接続できなくなるのか?
何故、時折この不具合から回復するのか?
そして、どうしたらこの状態から抜け出せるのか?
数千円の安い開発ツールだと思って諦めていました。しかし、今回ケースの中を見て妥当な価格は¥2500程度では無いか?と感じました。それを¥5000~¥6000で売っているのですからMicrochip社は不具合対策をきちんと行って欲しいと思います。(怒)
まぁ、コンパイラとかMPLAB-X IDEとか無償の開発ツールを使わせてもらっているので、あまり大声で文句を言う訳には行かないのですが・・・
(お粗末)
頼みのPICkit3が壊れた [PICkit3]
(2018.08.12)
動かなくなったPICkit3を救済するため、こちら(↓)のサイトを参考にしてプログラムを書き込むことにしました。
http://koibo.blog.fc2.com/blog-entry-40.html
準備を整え、MPLAB IPEを起動したところ、Firmwareの書き換えに失敗しました。
PICkit3は、MPLAB-X IDE<==>MPLAB IPEの切り替え時には必ずFirmWareを書き換えるのです。これまでにもFirmwareの書き換えに失敗することは何度かありました。しかし、書き換えを再度行うと書き換えは成功していたのですが、今回は何度繰り返しても、Connection Failになってしまいます。
動かなくなったPICkit3を修理しようとして、もう一台動かないPICkit3を作ってしまいました。orz
秋月電子にPICkit4(↓)を注文しようとしたら、8/15までお盆休みだとか・・・
http://akizukidenshi.com/catalog/g/gM-13337/
もう踏んだり蹴ったりです。暑さが一段と堪える!
動かなくなったPICkit3を救済するため、こちら(↓)のサイトを参考にしてプログラムを書き込むことにしました。
http://koibo.blog.fc2.com/blog-entry-40.html
準備を整え、MPLAB IPEを起動したところ、Firmwareの書き換えに失敗しました。
PICkit3は、MPLAB-X IDE<==>MPLAB IPEの切り替え時には必ずFirmWareを書き換えるのです。これまでにもFirmwareの書き換えに失敗することは何度かありました。しかし、書き換えを再度行うと書き換えは成功していたのですが、今回は何度繰り返しても、Connection Failになってしまいます。
動かなくなったPICkit3を修理しようとして、もう一台動かないPICkit3を作ってしまいました。orz
秋月電子にPICkit4(↓)を注文しようとしたら、8/15までお盆休みだとか・・・
http://akizukidenshi.com/catalog/g/gM-13337/
もう踏んだり蹴ったりです。暑さが一段と堪える!
MPLAB IPEの操作 [PICkit3]
”PICkit3がConnection Failedを表示してPCと接続できない状態からIPEを使って脱出した”と記しましたが、『MPLAB IPEなんて使ったことがない』という方も多い(<==親族SNS管理人も初めて使った)と思うので、もう少し詳しく、MPLAB IPEの操作を説明してみようと思います。
MPLAB-X IDEをインストールしたとき、デスクトップに二つのショートカット・アイコンが作成されたと思います。親族SNS管理人は、MPLAB IPEのアイコンはbackupフォルダーに放り込んでデスクトップから取り除いてしまいます。<==ゴミ箱に捨てないで良かった。(^_^;)
左がMPLAB IPE
試した結果、PICkit3をターゲットから外してUSBケーブルも抜いた状態から始めるのが、良いようです。
その状態でMPLAB IPEのアイコンをクリックするとこんな画面が表示され、Family にMid-Range・・・、DeviceにPIC16F1938を設定しました。PICkit3が繋がっていないのでToolは空欄のままです。
IPE起動画面
そこで、USBケーブルを接続すると・・・
PICkit3が表示された
接続したPICkit3が自動認識されてTool欄に表示されました。
PICkit3をターゲット(<==ターゲット側から5V電源が供給されている)に接続し、Connectボタンをクリックすると・・・
中央のボタン群が有効になった
Outputウィンドウに以下の文字が表示されました。
Target detected
Device ID Revision = 1 <==Revisionによって別の数字(例えば2)が表示されます
無事、ターゲットと接続できたようです。(パチパチパチ~)
---------------------------------
<補足> 先日の記事では、”MPLAB IPEではターゲットと接続できない”と記しましたが、今日お示しした手順だと上手く行くようです。
---------------------------------
ここで↑Raedボタンをクリックすると、ターゲット・メモリの内容を読み出しましたが、何故かファイルに書き出せません。orz
そこでSettings ==>Advanced Settingsと操作すると、ウィンドウがポップアップしてPassword入力が促されます。
Advanced Settingsに変更
デフォールトのパスワード”microchip”を入力して、ようやくターゲットから読み出したデータをExport(HEXファイル)できるようになりました。
Exportできるようになった
今回はターゲットから電源供給しましたが、PICkit3から電源供給することもできるようです。
PICデバイスにプログラムを書き込むだけなら、MPLAB IPEを使う方が簡便なのかもしれません。
MPLAB IPEの使いこなしを(もう少し)勉強してみようと思います。
MPLAB-X IDEをインストールしたとき、デスクトップに二つのショートカット・アイコンが作成されたと思います。親族SNS管理人は、MPLAB IPEのアイコンはbackupフォルダーに放り込んでデスクトップから取り除いてしまいます。<==ゴミ箱に捨てないで良かった。(^_^;)
左がMPLAB IPE
試した結果、PICkit3をターゲットから外してUSBケーブルも抜いた状態から始めるのが、良いようです。
その状態でMPLAB IPEのアイコンをクリックするとこんな画面が表示され、Family にMid-Range・・・、DeviceにPIC16F1938を設定しました。PICkit3が繋がっていないのでToolは空欄のままです。
IPE起動画面
そこで、USBケーブルを接続すると・・・
PICkit3が表示された
接続したPICkit3が自動認識されてTool欄に表示されました。
PICkit3をターゲット(<==ターゲット側から5V電源が供給されている)に接続し、Connectボタンをクリックすると・・・
中央のボタン群が有効になった
Outputウィンドウに以下の文字が表示されました。
Target detected
Device ID Revision = 1 <==Revisionによって別の数字(例えば2)が表示されます
無事、ターゲットと接続できたようです。(パチパチパチ~)
---------------------------------
<補足> 先日の記事では、”MPLAB IPEではターゲットと接続できない”と記しましたが、今日お示しした手順だと上手く行くようです。
---------------------------------
ここで↑Raedボタンをクリックすると、ターゲット・メモリの内容を読み出しましたが、何故かファイルに書き出せません。orz
そこでSettings ==>Advanced Settingsと操作すると、ウィンドウがポップアップしてPassword入力が促されます。
Advanced Settingsに変更
デフォールトのパスワード”microchip”を入力して、ようやくターゲットから読み出したデータをExport(HEXファイル)できるようになりました。
Exportできるようになった
今回はターゲットから電源供給しましたが、PICkit3から電源供給することもできるようです。
PICデバイスにプログラムを書き込むだけなら、MPLAB IPEを使う方が簡便なのかもしれません。
MPLAB IPEの使いこなしを(もう少し)勉強してみようと思います。
PICkit3が繋がらなくなった [PICkit3]
使用中のPICkit3が突然、繋がらなくなりました。
以下の表示から先に進みません
*************************
PICkit3 connected
*************************
USBケーブルを接続し直し、やり直すと今度は『Connection Failed.』の表示です。orz
『PICkit3のボタンを押しながらUSBケーブルを接続し直すと良い』と書かれていたので試しました・・・
ここに書いてあった(↓)
http://www.picfun.com/mplabx/mpxlab05.html
が、駄目です、状況に変化ありません。
更に調べると、『MPLAB IPEを使ったら直った』という記述(これです)が見つかったので試してみると・・・
繋がった?
これは・・・PCとPICkit3は接続できたけれど、Target Deviceとの接続に失敗した?
一歩前進です。で、試しにMPLAB-Xに戻って、デバッガを接続してみると・・・
ターゲットを認識した!
ビンゴ~
再びデバッグできるようになりました!
(パチパチパチ~)
*********************************************************************
実はPICkit3を3台(2台は購入、1台はプレゼント)持っていて、全て同じ症状に陥ったので焦りました。メカニズムは分かりませんが、PICkit3のファームウェア(Version 01.50.04)のバグを疑っています。
以下の表示から先に進みません
*************************
PICkit3 connected
*************************
USBケーブルを接続し直し、やり直すと今度は『Connection Failed.』の表示です。orz
『PICkit3のボタンを押しながらUSBケーブルを接続し直すと良い』と書かれていたので試しました・・・
ここに書いてあった(↓)
http://www.picfun.com/mplabx/mpxlab05.html
が、駄目です、状況に変化ありません。
更に調べると、『MPLAB IPEを使ったら直った』という記述(これです)が見つかったので試してみると・・・
繋がった?
これは・・・PCとPICkit3は接続できたけれど、Target Deviceとの接続に失敗した?
一歩前進です。で、試しにMPLAB-Xに戻って、デバッガを接続してみると・・・
ターゲットを認識した!
ビンゴ~
再びデバッグできるようになりました!
(パチパチパチ~)
*********************************************************************
実はPICkit3を3台(2台は購入、1台はプレゼント)持っていて、全て同じ症状に陥ったので焦りました。メカニズムは分かりませんが、PICkit3のファームウェア(Version 01.50.04)のバグを疑っています。
お試しでPIC24FJ64GA002を動かしてみた [PICkit3]
(2012.11.22)
随分前のことですが、プログラム・メモリとデータ・メモリの大きさに惹かれて、PIC24FJ64GA002を一個だけで購入しました。何を作るという目的があった訳でも無く、単なる”お試し”のつもりでした。
先日、”SDカードを使ったFAT16フォーマットのファイル入出力機能”の実験を思い立ち、PIC24FJ64GA002を部品箱の底から引っ張り出してきました。プログラムは”後閑さん”の所から頂いてきた『これ』を使います。
元のソースを一部(PIC24FJ32GA002用だったり、ICD2用だったりするところを)書き換えて、PICkit3のデバッグ環境に合わせました。コンパイル/リンクまで通ったので、ブレッド・ボードに取り付けたPIC24FJ64GA002にPICkit3を接続して、プログラムを書き込みました。
ここまで順調に進んできたのですが、いざ実行してみるとどうも様子がおかしいのです。設定したブレーク・ポイントで止まってくれません。STOPすると”プログラム・カウンタが読み取れない”とか、”デバイスのコンフィギュレーションを見直せ”などと、デバッガのエラーが頻発します。プログラムの書き込みも、予めFLASHメモリをクリアしておかないと、プログラミング・エラーになってしまいました。
『あれ~、PICkit3じゃ上手くデバッグできないとか?』(<==自分がミスしたと思っていない)
訳が判らないままWEB検索を掛けて、こちらの方のページを見つけました。
『ん!Vcap?DISVREG?』
あわてて、マニュアルを見直し、”23.2 On-Chip Voltage Regulator”の記述に気付きました。実は、マニュアルにちゃんと目を通さず、実験を開始していたのです。(コンフィグ設定も”後閑さん”のコードをそのままパクッた)
マニュアル通り、Vcapに10μFのセラコンを付け、DISVREGをVssに接続すると、PICkit3でちゃんとデバッグできるようになったのでした。
お粗末・・・
随分前のことですが、プログラム・メモリとデータ・メモリの大きさに惹かれて、PIC24FJ64GA002を一個だけで購入しました。何を作るという目的があった訳でも無く、単なる”お試し”のつもりでした。
先日、”SDカードを使ったFAT16フォーマットのファイル入出力機能”の実験を思い立ち、PIC24FJ64GA002を部品箱の底から引っ張り出してきました。プログラムは”後閑さん”の所から頂いてきた『これ』を使います。
元のソースを一部(PIC24FJ32GA002用だったり、ICD2用だったりするところを)書き換えて、PICkit3のデバッグ環境に合わせました。コンパイル/リンクまで通ったので、ブレッド・ボードに取り付けたPIC24FJ64GA002にPICkit3を接続して、プログラムを書き込みました。
ここまで順調に進んできたのですが、いざ実行してみるとどうも様子がおかしいのです。設定したブレーク・ポイントで止まってくれません。STOPすると”プログラム・カウンタが読み取れない”とか、”デバイスのコンフィギュレーションを見直せ”などと、デバッガのエラーが頻発します。プログラムの書き込みも、予めFLASHメモリをクリアしておかないと、プログラミング・エラーになってしまいました。
『あれ~、PICkit3じゃ上手くデバッグできないとか?』(<==自分がミスしたと思っていない)
訳が判らないままWEB検索を掛けて、こちらの方のページを見つけました。
『ん!Vcap?DISVREG?』
あわてて、マニュアルを見直し、”23.2 On-Chip Voltage Regulator”の記述に気付きました。実は、マニュアルにちゃんと目を通さず、実験を開始していたのです。(コンフィグ設定も”後閑さん”のコードをそのままパクッた)
マニュアル通り、Vcapに10μFのセラコンを付け、DISVREGをVssに接続すると、PICkit3でちゃんとデバッグできるようになったのでした。
お粗末・・・
|
|
|
RB7(PGD)とRB6(PGC)を入力ポートとして使うのはNG [PICkit3]
(2012.02.29)
これまでPGDやPGCはポートとして使用することを避けてきましたが、今回製作したUSB_ControlerではRB7(PGD)とRB6(PGC)をSW入力に使いました。
PGDとPGCを入力ポートとして使った
タクトSWがオフならPICkit3の動作に問題は生じない筈です。そして、マニュアルにある以下の記述も『まぁ、当然のこと』と考えていました。
”All other pin functions are disabled when ICSP. or ICD operation is enabled.”
問題は”ICSP operation is enabledになるのは何時か”ということです。プログラミング中とデバッガでhaltしたときは、PICkit3とターゲット間の通信が発生するので当然”ICSP operation is enabled”だろうと思いましたが、それ以外はPGDやPGCがHi-Zになり入力ポートとして使えるのではないかと思ったのです。
結果は”駄目”でした。Programmerで書き込み後、”Release From Reset”してもPGD,PGCは1.0V位の電圧を示し、Hi-Zにはなりません。つまりPICkit3を外さないとRB7とRB6を入力ポートとして使えないのです。orz
幸いこのSW機能を省いてもUSB_Controlerの動作に支障はないのですが、RB7(PGD)とRB6(PGC)を入力ポートとして使うのはNGです。(追記をご参照下さい)
-----------------------------------------------------------------------------------------
(2012.05.14)
『PICkit3側についているプルダウン抵抗の問題だ』というご指摘を頂き、早速ユーザース・ガイドでPICkit3の出力回路を調べてみました。
4.7kでプルダウンしている
”weak pull_upは20kΩ程度のプルアップ抵抗に相当する”と考えるのが良いようで、"PICkit3側でプルダウンされるピン(PGDとかPGCとか)は3.3k以下の外付け抵抗でプルアップするか、もしくはプルダウン型(SWオンでHiになる)にしなければならない”と言うことのようです。ご指摘頂き、有難うございました。
-----------------------------------------------------------------------------------------
これまでPGDやPGCはポートとして使用することを避けてきましたが、今回製作したUSB_ControlerではRB7(PGD)とRB6(PGC)をSW入力に使いました。
PGDとPGCを入力ポートとして使った
タクトSWがオフならPICkit3の動作に問題は生じない筈です。そして、マニュアルにある以下の記述も『まぁ、当然のこと』と考えていました。
”All other pin functions are disabled when ICSP. or ICD operation is enabled.”
問題は”ICSP operation is enabledになるのは何時か”ということです。プログラミング中とデバッガでhaltしたときは、PICkit3とターゲット間の通信が発生するので当然”ICSP operation is enabled”だろうと思いましたが、それ以外はPGDやPGCがHi-Zになり入力ポートとして使えるのではないかと思ったのです。
結果は”駄目”でした。Programmerで書き込み後、”Release From Reset”してもPGD,PGCは1.0V位の電圧を示し、Hi-Zにはなりません。つまりPICkit3を外さないとRB7とRB6を入力ポートとして使えないのです。orz
幸いこのSW機能を省いてもUSB_Controlerの動作に支障はないのですが、RB7(PGD)とRB6(PGC)を入力ポートとして使うのは
-----------------------------------------------------------------------------------------
(2012.05.14)
『PICkit3側についているプルダウン抵抗の問題だ』というご指摘を頂き、早速ユーザース・ガイドでPICkit3の出力回路を調べてみました。
4.7kでプルダウンしている
”weak pull_upは20kΩ程度のプルアップ抵抗に相当する”と考えるのが良いようで、"PICkit3側でプルダウンされるピン(PGDとかPGCとか)は3.3k以下の外付け抵抗でプルアップするか、もしくはプルダウン型(SWオンでHiになる)にしなければならない”と言うことのようです。ご指摘頂き、有難うございました。
-----------------------------------------------------------------------------------------
|
|
|
要素試作がほぼ終わりました [PICkit3]
USB_Controler(PIC18F2550)とPIC10F322のシリアル通信が実機レベルで動くようになりました。
(パチパチパチ~)
MPLAB SIMを使ってロジックを入念にテストしましたが、”実機テストが一発で通る”という訳には参りませんでした。割り込み処理と割り込みタイミングの関係が思っていたよりも厳しく、割り込み処理の順番を見直し、TMR2割り込みのタイミングを見直して、ようやくステータス・コマンド(PIC18F2550==>PIC10F322)とステータス・レスポンス(PIC10F322==>PIC18F255)の送受が出来るようになりました。
シリアル通信ライン
タイミング・マージンがどれくらい確保できているか見極められていませんが、要素試作はほぼ終了しました。いよいよ、コンテストに応募する回路の試作に取り掛かろうと思います。
割り込みハンドラに組み込まれた(by HITECH-C)レジスタの退避復帰処理
上に示したレジスタの退避復帰処理に凡そ10μS掛かります。PIC10F322の割り込みにはプライオリティ制御が無いので、NCO割り込み(現時点では動いていない)が入るとTMR2やIOCの割り込み処理タイミングが10μS以上遅れる場合が出てきます。これをカバーするだけのタイミング・マージンは無さそうなので、さらに一工夫する必要がありそうです。
(パチパチパチ~)
MPLAB SIMを使ってロジックを入念にテストしましたが、”実機テストが一発で通る”という訳には参りませんでした。割り込み処理と割り込みタイミングの関係が思っていたよりも厳しく、割り込み処理の順番を見直し、TMR2割り込みのタイミングを見直して、ようやくステータス・コマンド(PIC18F2550==>PIC10F322)とステータス・レスポンス(PIC10F322==>PIC18F255)の送受が出来るようになりました。
シリアル通信ライン
タイミング・マージンがどれくらい確保できているか見極められていませんが、要素試作はほぼ終了しました。いよいよ、コンテストに応募する回路の試作に取り掛かろうと思います。
割り込みハンドラに組み込まれた(by HITECH-C)レジスタの退避復帰処理
interrupt_function: movwf saved_w swapf status,w movwf (??_intsrv+0) movf fsr0,w movwf (??_intsrv+1) movf pclath,w movwf (??_intsrv+2) movf btemp+1,w movwf (??_intsrv+3) ljmp _intsrv (ここにユーザが定義した処理が入る) movf (??_intsrv+3),w movwf btemp+1 movf (??_intsrv+2),w movwf pclath movf (??_intsrv+1),w movwf fsr0 swapf (??_intsrv+0)^00h,w movwf status swapf saved_w,f swapf saved_w,w retfie
上に示したレジスタの退避復帰処理に凡そ10μS掛かります。PIC10F322の割り込みにはプライオリティ制御が無いので、NCO割り込み(現時点では動いていない)が入るとTMR2やIOCの割り込み処理タイミングが10μS以上遅れる場合が出てきます。これをカバーするだけのタイミング・マージンは無さそうなので、さらに一工夫する必要がありそうです。
|
|
|
USB_Controlerのプログラム(on PIC18F2550) [PICkit3]
USB_Controlerのデバッグ(on MPLAB SIM) [PICkit3]
MPLAB SIMでUSB_Controlerのデバッグを開始しました。デバッガも使える(USB_ControlerにはPIC18F2550を使っている)のですが、以下に示すメリットがあるため、”MPLAB SIM+Stimulus”でロジックのデバッグを行うことにしました。
<MPLAB SIM+Stimulusのメリット>
(1)設定できるBreakPoint数に制限が無い。
(2)アプリケーションで使っていないAD割り込みを使い、適当なタイミングを狙ってBreakが掛けられる。
(3)一度Stimulusファイルを作成すれば、Reset & Runでデバッグしたい状況を再現できる。
実機デバッグの場合、デバッグしたい状況を再現するために、一連のシーケンスを辿るのは結構大変(右ボタンを長押し、左ボタンを3回短押してから、右ボタンを2回長押し・・・)です。
あり難いことにPIC18F2550のMPLAB SIMはTMR2割り込みもIOC割り込みも、割り込みハンドラが正しく呼び出され(それが当然と言えばそうですが)、TMR0とTMR2のクロック・レートも設定どおりに動いています。
何はともあれUSB_Controlerもまじめにテスト仕様を書いて、きちんと動作を確認しようと思います。(実機テストが一発で通ることを期待して・・・)
<MPLAB SIM+Stimulusのメリット>
(1)設定できるBreakPoint数に制限が無い。
(2)アプリケーションで使っていないAD割り込みを使い、適当なタイミングを狙ってBreakが掛けられる。
(3)一度Stimulusファイルを作成すれば、Reset & Runでデバッグしたい状況を再現できる。
実機デバッグの場合、デバッグしたい状況を再現するために、一連のシーケンスを辿るのは結構大変(右ボタンを長押し、左ボタンを3回短押してから、右ボタンを2回長押し・・・)です。
あり難いことにPIC18F2550のMPLAB SIMはTMR2割り込みもIOC割り込みも、割り込みハンドラが正しく呼び出され(それが当然と言えばそうですが)、TMR0とTMR2のクロック・レートも設定どおりに動いています。
何はともあれUSB_Controlerもまじめにテスト仕様を書いて、きちんと動作を確認しようと思います。(実機テストが一発で通ることを期待して・・・)
|
|
|
PIC10F322のデバッグ(on MPLAB SIM)終了 [PICkit3]
(2012.01.31)
MPLAB SIMを使ったPIC10F322のデバッグが終了しました。”TMR2、IOC、NCO割り込みが入らない”とか”TMR0割り込みとStimulusの時刻が一致しない”とか、色々不都合な点もありましたが、無理やり押さえ込んで(詳細はこちら)、ロジックに誤りが無いことを確認しました。
テスト仕様はこんな感じです。
1.初期状態(sync_sequence = IDLE_CHECKで起動する)
Break on Initialize@main()
Reset & Run
Break at Initialize
Step Over
==> sync_sequence = 0
==> T2CON = 0x04
==> PR2 = 0xC7
==> INTCON = 0xE8
==> PIE1 = 0x12
2.アイドル状態検出(sync_sequence = IDLE_CHECKでSERIAL_IN = 1が3cycle以上継続するとsync_sequence = START_BIT_SYNCになる)
Read stim2.sbs
Stimulus Set High RA2 fired
Break on TMR2IF
Break on check_idle_common
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 0
==> PORTA = 0x04
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 1
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 2
Run
break at check_idle_common
==> sync_sequence = 0
==> idle_count = 3
Step Over
==> sync_sequence = 1
==> idle_count = 3
==> INTCONbits.IOCIF = 0;
==> INTCONbits.IOCIE = 1;
==> T2CONbits.TMR2ON = 0;
==> PIR1bits.TMR2IF = 0;
同様に以下の項目について、確認手順と確認項目を記してテストを実施しました。
3.STARTビット検出
4.受信
5.コマンド処理
6.送信準備
7.送信
次はコントローラ側のデバッグですが、予定よりかなり遅れているのが心配です。
MPLAB SIMを使ったPIC10F322のデバッグが終了しました。”TMR2、IOC、NCO割り込みが入らない”とか”TMR0割り込みとStimulusの時刻が一致しない”とか、色々不都合な点もありましたが、無理やり押さえ込んで(詳細はこちら)、ロジックに誤りが無いことを確認しました。
テスト仕様はこんな感じです。
1.初期状態(sync_sequence = IDLE_CHECKで起動する)
Break on Initialize@main()
Reset & Run
Break at Initialize
Step Over
==> sync_sequence = 0
==> T2CON = 0x04
==> PR2 = 0xC7
==> INTCON = 0xE8
==> PIE1 = 0x12
2.アイドル状態検出(sync_sequence = IDLE_CHECKでSERIAL_IN = 1が3cycle以上継続するとsync_sequence = START_BIT_SYNCになる)
Read stim2.sbs
Stimulus Set High RA2 fired
Break on TMR2IF
Break on check_idle_common
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 0
==> PORTA = 0x04
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 1
Run
break at TMR2IF
==> sync_sequence = 0
==> idle_count = 2
Run
break at check_idle_common
==> sync_sequence = 0
==> idle_count = 3
Step Over
==> sync_sequence = 1
==> idle_count = 3
==> INTCONbits.IOCIF = 0;
==> INTCONbits.IOCIE = 1;
==> T2CONbits.TMR2ON = 0;
==> PIR1bits.TMR2IF = 0;
同様に以下の項目について、確認手順と確認項目を記してテストを実施しました。
3.STARTビット検出
4.受信
5.コマンド処理
6.送信準備
7.送信
次はコントローラ側のデバッグですが、予定よりかなり遅れているのが心配です。
|
|
|