blogPICプログラミングやPCの操作で感じた日々の由無し事を綴りますこの広告は、90日以上更新していないブログに表示しています。2018-09-04デバッグ作業が勉強になったプロジェクトPic-coloおしなべてデバッグ作業は辛いものですが、勉強になることも多々あります。『自動機能の組み込み』では数日間のデバッグ作業を強いられましたが、不具合原因を探して調査を進めていていくつか判ったことがあります。PIC_coloコンソールからリセット・コマンドを送ると、PIC_coloデバッガはソフトウェア・リセットを実行します。自動機能のデバッグでは何度もリセットを繰り返しました。リセットSWを使うハードウェア・リセットより色々都合が良いのですが、動作に少し動作に違いがあります。TMR1を制御するT1CONレジスタですが、ソフトウェア・リセットでは初期化されません。(↓のR/W-0/uの表示がそれを示している)そして、これ(↓)はMCCが生成したTMR1の初期化処理です。TMR1の停止が前提のコードになっています。(1)TMR1HとTMR1Lからtimer1ReloadValを生成している(2)TMR1割り込みを有効にしてから割り込みハンドラを設定している(先頭のT1COM=0は後から追加したコードです。)これをバグと呼ぶのは酷かもしれません。PICにソフトウェア・リセット機能がある以上、それを考慮した初期化コードを生成して欲しい(T1CON=0を先頭に入れる)と思います。一つ問題なのは、割り込みハンドラを登録する関数(↓)です。割り込み許可の状態でハンドラを書き換えています。割り込みを許可する前に割り込みハンドラを登録するのが普通でしょうから、これもバグ扱いするのは酷かもしれません。PIC_coloがユーザ・プログラムを起動するときには、タイマが既に動いているかもしれないし、RUNコマンドで起動するためにはUARTの割り込みも許可されていなければなりません。パワーオン・リセットからの起動を前提とするMCCの生成する初期化コードに対して何らかの処置は必要です。これ(↑)をPIC_coloのユーザ・プログラムの『お作法』にしようと思います。少なくともハンドラを登録する前(もしくは登録している最中)に割り込みが発生することは防げます。制御レジスタを0クリアする等の処置は、個別に注意を喚起することにします。12:34デバッグ作業が勉強になったTweet広告を非表示にする関連記事2018-09-03ちょっとズルをしたようやくPIC_coloの自動起動を実現することが出来ました。PIC_...2018-08-29PIC_colo_Update2を作ったPIC_colo_Updateは割り込み禁止の状態でPIC_coloデバッガ相当の...2018-08-20PIC_colo_miniがようやく動いたPIC16F1829を使ったPIC_colo_miniがようやく動きました。シールドが動いたデバッグ作業が勉強になったちょっとズルをしたPIC_coloデバッガに新機能を組み込んだ月別アーカイブ参加グループテクノロジープログラミングはてなブログをはじめよう!denshikoboさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。