ご質問などはこちらからどうぞ
PIC16F18857のcal/return命令について
GOさん 2021年2月16日 11時34分
前回より873A からのプログラム移植中なのですが、
プログラム中call命令で移動しようとすると想定外の場所に移動するのですが、f1シリーズでは旧タイプのICと同じ考えでは移動しないのでしょうか?
プログラム領域は次の通りです。
main/サブルーチンは0~07f0迄
0800~0E66迄 ここにはI2Cプログラムが入れてあります。
電源投入後、先にi2cのプログラムを読みに行きます。
その後、アドレス0457のサブルーチンタイマーをcallするのですが、ここへも移動できない状況です。
但しcallでは指定場所にたどり着かないが、lcallの疑似命令だとたどり着くが命令数が大きくなり、現状での利用は容量上きびしい。
削除依頼
16F18857スタックレベルについて
GOさん 2021年1月20日 12時56分
たいへんお世話になります。
説明が後手になりましたが、F1シリーズ・MPLAB Xについては初めて使うのですが、(今まではIDEだけで操作していました。8**系しか使っていなかった為)
添付の画像のスタックレベルで同じラインナンバーが並んでいるのは何故なのでしょうか?
またリセット後は、スタック0ですが、1行だけプログラムを進めると、スタックレベルが15に移動しますが、この動きもよくわからないので教えて下さい。
よろしくお願い申し上げます。
*動きは添付参照
削除依頼
Re:16F18857スタックレベルについて
Bequest333 2021年1月20日 18時42分
GOさんご質問ありがとうございます。
アプリの挙動についてのご質問ですが、
私が作成、あるいは携わったアプリに関するご質問であればお答えできますが、
その他のアプリの挙動についてお答えする術を持ち合わせておりません。悪しからずご了承ください。
削除依頼
Re:16f18857スタックレベルについて
Bequest333 2021年1月18日 20時01分
Goさん質問どうもありがとうございました。
PIC16F873Aのスタックは8段、F1シリーズのスタックは16段ですので、873Aのプログラムを忠実に移植することが出来れば問題は発生しません。
スタックがオーバーフローする原因としては、
1.CALL命令(またはCALLW命令、割り込み)とRETURN命令(またはRETLW命令、RETIE命令)の回数アンマッチによるプログラム暴走
2.プログラム中でスタック値を変更したことによるプログラム暴走
3.その他のプログラム暴走
が考えられますが、IDEのシミュレータを用いてサブルーチンコールの前後でスタック段数が変わっていないか、戻り値が変わっていないかを確認する必要があります。(ネストの少ないものから)
>スタックレベルを見るとプログラムをスタートさせる前から既にスタックレベル15迄の所まで表示されます。
いいえこれで合っています。PDFファイルの3.0 MEMORY ORGANIZATIONのTABLE 3-14の表でSTKPTRの
リセット時の初期値を確認してください。リセット時はb0~b3まで"1"が立っています。
PICのスタックが16段で循環していることを理解しなければいけません。CALL命令が実行されると
次の命令のアドレス(戻り値)を保存するのですが、保存に先立ちSTKPTRの内容をインクリメントします。 STKPTRは循環しているので、内容は 15+1=16 ->0 となります。
"PICで電大版TINYBASIC 実装編その3"のページの最後にF1シリーズのハードウエアスタックの図を載せていますので合わせてお読みください。
大事なことはSTKPTR初期値は何であれ循環バッファーにより16段のスタックが保証されていることです。
削除依頼
スタックについて
GOさん 2021年1月19日 11時52分
ごれんらくたいへんありがとうごうざいます。
確認してみます。
ただ、873Aのプログラムは製品化されており市場でも問題は出ていないのですが・・・。
*添付したスタック表示欄でFinish Debugger Sessionをクリックしても消えない事が判りました。
アプリを一端閉じ、再起動させないと書き換わらないようです。
削除依頼
16f18857スタックレベルについて
GOさん 2021年1月18日 10時16分
Bequest333さんたいへんお世話になります。
F1シリーズではスタックレベルが増えたとWEB上のHPに記載があり、以前アセンブラーで書いた16F873AソフトをそのままF1シリーズに移植している最中ですが、同じアセンブラーで動かそうとすると何故かスタックレベル3(プログラム内のcall回数確認にて)でオーバーフローしてしまいます。
(873Aの時にはスタックをフルに使っていて動かしておりました。)
IDEXのスタックレベルを見るとプログラムをスタートさせる前から既にスタックレベル15迄の所まで表示されます。
アセンブラーでのスタック操作を行い、回避する方法は有るのでしょうか?
xIDEバージョン5.35;チップリビジョンのバージョンA2
それともxIDEの不具合なんでしょうか??
よろしくお願い申し上げます。
削除依頼
Re:16f18857のRA7出力について
Bequest333 2020年12月31日 4時10分
Goさん質問どうもありがとうございました。
PIC16F18857のデータシートのpdfに基づいて説明します。
①PA7の機能 (TABLE 2参照)
RA7 デジタルI/Oポート
ANA7 ADコンバータ(入力)
OSC1 水晶入力
CLKIN 外部発振器入力
IOCA7 ビン変化割込み(入力)
➁RA7をデジタル出力ポートとして設定するには
0.RA7にPPSの割りつけをしない。
1.PICを内部クロックで作動させる。--> CONFIGレジスタの設定で内部クロックを選択、セカンドオシレーター禁止
上記設定によりOSC1とCLKINが無効となる。
2.ピン変化割込みを使用する場合は、IOCA7の設定を除外する。
3.ANSELAレジスタの第7ビットをクリアしてPA7へのアナログ入力を禁止する。
ANSELAレジスタはバンク62に存在する (TABLE 3-11参照)
4,TRISAレジスタの第7ビットをクリアしてPA7を出力に設定する。
TRISAレジスタはバンク0に存在する (TABLE 3-3参照)
削除依頼
p16f18857のポート設定について
Goさん 2020年12月31日 19時16分
たいへんお世話になります。
原因がわかりました。
当方の資料が初版で、延々と確認しておりました。
最新版を(Rev,E板)に記載がありました。
CONFIG1のbit2のみ「1」にしないとI/Oとして利用できないと事が判りました。
(どうもRA6は普通にI/Oとして動くのに変だなーと悩んでおりました。)
大変ありがとうございました。
削除依頼
16f18857のRA7出力について
Goさん 2020年12月30日 20時57分
初めてご連絡致します。
現在デバック中で不明点が有り、ご連絡致しました。
RA7のビットを出力に設定しているのですが、オシロで確認するよ入力状態同じ様な状況です。
(mplabx i/oビューで確認しても変化無し)
初期Aポート設定は次の通りです
ANSEL=03h;TIRSA=1fh
他に、このチップは設定する箇所が有るのでしょうか?
以上サポートの程よろしくお願い申し上げます。
削除依頼
Re:PICKIT2での書込み方法について
bequest333 2018年1月29日 17時42分
たけさん、初めまして。
ご質問いただきどうもありがとうございます。
>PIC16(L)F183XX Memory Programming Specificationを参考にデバイスID等を変更しましたが、
>こちらに載っているシリーズであれば書込み方法は共通と思ってよろしいでしょうか?
基本的にそのとおりですが、PDFをよく読んで、デバイス毎に異なる点についてはデバイスファイルに
正しく記述する必要があります。
例えばConfigMaskの値など。
また、MicrochipのPDFは誤記が多いのでなるべくエラッタのPDFも確認することをお勧めします。
一時、デバイスIDが誤記ばかりで、大変難儀したことがあります。
<スクリプトを新たに作成する必要がある場合>
また新たな書き込み方式に変更されるとは考えにくいのですが、書き込み方式やコマンドが変更された場合
現状の書き込み方式を踏襲していても、ConfigやEEPROMのアドレスが変更された場会
Configレジスターの数が変更されたり、メモリの電気的特性が変更された場合。
<16F18857での問題点>
現在、デバイスIDを並べ替えてから入力していますが、勝手に逆順にしたためIDがダブる可能性があります。
私の実力不足が原因ですが、誰か腕の立つかたにフォローしていただけるとありがたいです。
<PICKIT2の今後>
PK2のコマンドに目をとおしてみましたが、PIC16は。使えるコマンドが少なく、PICKIT2でもっとも制約の多いデバイスです。この制約がある中で最新のデバイスの書き込みが行えましたので、上位のPICでもまだまだがんばれると私は考えています。
削除依頼
Re:PICKIT2での書込み方法について
たけ 2018年1月30日 10時36分
返答ありがとうございます。
その後、PIC16F18324の書込みに成功し動作も確認しました。
他の18XXXも使いたいので、取り寄せて確認してみます。
アドバイスありがとうございます。
PICKIT2がまだまだ使えると良いですね。
MPLABXやIPEでの書込みがもっと使いやすければいいのですが、PICKIT2での書込みの楽さに慣れているとなかなか移行が難しいです。
たくさんのPICに書込みたい場合、みなさん何で書込んでいるのでしょうか?
削除依頼
PICKIT2での書込み方法について
たけ 2018年1月29日 13時30分
初めまして。
PICKIT2でPIC16F18XXXシリーズに書込む方法を探していました。
大変貴重な情報ありがとうございます。
以前PICkit2 Device File Editorで対応PICを増やせるまでは分かっていたのですが、
書込み方法が従来と違うということであきらめておりました。
PIC16F18313を参考にPIC16F18324の読み込みまで出来ました。
質問なのですが、PIC16F183XX(ピン数違い、容量違い)であれば書込み方法は共通でしょうか?
PIC16(L)F183XX Memory Programming Specification
を参考にデバイスID等を変更しましたが、こちらに載っているシリーズであれば書込み方法は
共通と思ってよろしいでしょうか?
よろしければ教えてください。
p.s 今までPICKIT2で対応出来る古いPICを使用していましたが、新しいPICの選択肢が増えそうで嬉しく思っています。
削除依頼
AVRアセンブラの使い方
老技師 2017年7月28日 2時30分
当方AT90S2313でAVRを使い始めたばかりなのですが、
ATV Studio4の使い方がよくわからず苦労しております。
PICのアセンブラで使うGOTO $をAVRでRJMP 00(直値)を入れる方法をしりませんか?
NOP*2を1命令にする為です。
AVRは命令実行時間が速いので、ウエイトを稼ぐサブルーチンが大きくなってしまいます。
Tiny系は容量も少ないので重宝するのですが、
今はデバッグ時NOP*2を書いて、デバッグ後に”.ds 0x00,0xc0”にしています。
条件アセンブルすればよいだけなのでしょうが、テクニックがあれば参考にしたいと思います。
それにしてもAVRの命令は良く出来ていますね。
削除依頼
Re:AVRアセンブラの使い方
bequest333 2017年8月2日 10時46分
老技師さま、ご質問どうもありがとうございます。
PICの$に相当するAVRの擬似命令はPCになります。
たとえばプログラムをホールトさせたい場合
PICでは"goto $" と記載しますが、AVRでは"RJMP PC"と記載します。
2WAITのNOPの場合は、"RJMP PC+1"と記載します。
削除依頼
REREベースラインをXC8で使う
老技師 2016年10月12日 3時13分
Bequest333様ご指導ありがとうございました。Lチカ参考にさせていただきました。
お陰様でやりたいことが出来ましたが、思いのほかステップを食って10F200には向きませんでした。
次はソフトウェアスタックを実験したいと思います。
削除依頼
ベースラインをXC8で使う
老技師 2016年10月10日 7時19分
TRIS GPIOやOPTION命令をどのように表現すればいいのでしょう。
ベースラインではFSR割付ではなく専用命令なんですよね。
10F200はピン数が少ないので1本で入出力兼用の実験中です。
よろしければお付き合い下さい。
削除依頼
Re:ベースラインをXC8で使う
bequest333 2016年10月10日 23時19分
ご質問どうもありがとうございます。
XC8は使っていないのでアドバイスできませんが、以下のページで12F509を用いたLEDブリンキングのサンプルプログラムが掲載されています。
https://gist.github.com/jitomesky/6989014
削除依頼
Re:LPC810でUSB
bequest333 2015年10月15日 5時32分
Bunchan747様、ご質問どうもありがとうございます。
ご指摘の症状はクロックが12MHzから微妙に外れているときに発生します。
前の質問者SSKさんのレポートを基にソース上でクロックを補正できるように改良したものを
続LPC810でUSBのページにアップしましたのでご利用ください。
(IRC_Adjustの数値を減算または加算)
通信テストの前にDTR/RTSの出力を確認するのが早道です。
削除依頼
LPC810でUSB
bunchan747 2015年10月16日 10時42分
早速のご回答感謝します。
継続してテストしての結果、一部は動作確認ができました。
DTR_RTSは動作していて、テストアプリでの設定が反映されます
別の
232cモジュールに繋いでみたら、送信は正しく届いていましたが
受信はとりこぼしているようです。9600-57800までは
良くて、その上は文字化けしてます
コンパイルは環境を構築して試して見ます
ありがとうございました。
削除依頼
LPC810でUSB
Bunchan747 2015年10月14日 21時55分
初めましてBunchan747と申します。
貴重な資料を公開してくださり、大変勉強になります。
LPC810でUSBを参考に回路を組みました。
hexを書き込んでテストをしました。
認識はできています。HID入力装置として。
また、ループバックテストのPGでも、デバイスが認識されていると出ます。
バッファをかまして、テストしてもNGでした。
他のUSB-TTLモジュールとTXとRXをクロスしてみても、なにもかえってきません。
試しに、LPC810-USBのTXにLEDを接続してみたところ、LEDが点灯しました。
何か問題があるのか情報がありましたら、ご教授願います。
削除依頼
Re:LPC810でUSBの動作についてアドバイス
bequest333 2015年9月27日 19時19分
ssk様ご質問ありがとうございます。 ご質問に回答します。
もしかしてUSB3.0を御使用ではありませんか?
http://www.floatingfragmentz.org/archives/4810
このページなどに記載されていますが、USB3.0の端口とUSB1.1のデバイスは相性が悪いようです。
別のパソコンでも動作確認されることをまずお勧めします。
USB2.0の端口でもUSB1.1のデバイスを認識できないことがあると思われます。
その場合はUSB1.1のハブをかますと問題解決します。
USB1.0の端口でも認識されないとき
本作例はIRCを使用しているため、動作周波数が12MHzを大きく外れるとUSBデバイスと認識されません。
具体的には接続後にホストから送られるKJKJKJKKの信号をデバイスが正しく捕らえ、
デバイスからホストに送る応答信号をホスト側が正しく捕らえる必要があります。
(KJKJKJKKの信号についてはhttp://www3.hp-ez.com/hp/bequest333/page74参照)
LPC810のIRCの公称精度は12MHzに対し1%以下とのことですが、もちろん個体差が存在します。
LPC810はLPC1114と異なり、IRC周波数の補正を行うレジスタのアドレスが公開されていないため、
水晶を使用しない場合、KJKJKJKKの信号を捕らえる部分(RecepcionUSB)のNOPの量を調整してタイミングを合わせるしか手段がありません。
削除依頼
Re:LPC810でUSBの動作についてアドバイス
ssk 2015年9月29日 21時29分
ありがとうございます。
確かに指摘の通りUSB3.0を使っていました。
ただ、USB2.0でも認識されない状態です。
HIDデバイスと認識されるものの、仮想COMポートにはならなかったり、デバイス名は表示されるがやはりうまく動かないPCがあったりとUSB3.0よりはマシな状況ですが、使えないことには変わりないですね。
USB1.1のハブを使ってはとのアドバイスですが、残念ながらUSB1.1は持っておらず試せないです。
USB2.0のハブはダメでした。
個体差も考え、手持ちの他の石でも試してみましたが全滅でした。
IRCのクロックを出力するだけのプログラムを組み、調べてみると11.85~11.95MHzと少し遅めのクロックのようです。
IRC周波数の補正を行うレジスタが公開されていませんが、LPC1114のIRCCTRLレジスタと同じアドレスをいじると調整は出来るようです。(表向き無いことになっていると言うことは恐らく非推奨でしょうが)
+1~+2で12MHzに近づくので、LPC1114の調整のソースを参考にソースコードいじってみましたが、なかなかうまくいかず苦戦中です。
avrマイコンでのUSBライブラリV-USBだと信号を使って調整用レジスタの値を動的に調整するコードがあるようです。これを参考に修正できれば個体差や変動を吸収できるようになりそうです。が、まずはいろいろ勉強しないといじれないので、時間をかけてやってみます。
削除依頼
Re:Re:Re:LPC810でUSBの動作につい
bequest333 2015年9月29日 21時53分
>>HIDデバイスと認識されるものの、仮想COMポートにはならなかったり...
本作例はCDCではないため仮想COMポートにはなりません。
http://naitsuku.hatenablog.com/entry/2015/09/07/130349
この方のページをご参照ください。
HIDデバイスと認識される補正値の中間付近で安定動作すると思われます。
ただし、LPC810ではTXとRXとを直結したループバックテストが行えません。
>>IRC周波数の補正を行うレジスタが公開されていませんが、LPC1114のIRCCTRLレジスタと同じアドレスをいじると調整は出来るようです。
これは新たな発見でした。情報どうもありがとうございました。
削除依頼
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
GOさんこんにちわ
PICを習得するためにはBANKの概念だけではなくPAGEの概念の理解も必要です。
PIC16F87Xのマニュアルには以下のように記載されていますが、これはF1についてもあてはまります。
2.4 プログラムメモリページング
PIC16F87X デバイスは継続した 8K ワードブロックのプログラムメモリをアドレス指定できます。
CALL および GOTO 命令には 11 ビットのアドレス指定ができます。
この 11 ビットのアドレス範囲によって、2K のプログラムメモリのページサイズ内での分岐ができます。
CALL または GOTO 命令を実行するときは、上位 2ビットのアドレスは PCLATH<4:3> からプログラムカウンタへロードされます。
CALL または GOTO 命令の前に、ページ選択ビットを設定して、分岐先のページをアドレス指定するようにします。
CALL 命令(または割り込み)が実行されたとき、13 ビットのプログラムカウンタがスタックにプッシュします。
したがって、リターン命令(スタックからアドレスをポップする)ときは、PCLATH<4:3> ビットの操作は不必要です。
>電源投入後、先にi2cのプログラムを読みに行きます。
とのことですが、サブルーチンコールに先立ちページの指定を行う必要があります。
>その後、アドレス0457のサブルーチンタイマーをcallするのですが。
とのことですが、ここでもサブルーチンコールに先立ちページの指定を行う必要があります。
例)
pagesel i2c
call i2c
pagesel subroutine-timer
call subroutine-timer
(現在PCLATHはpage0を示している)