2009/8/23
PIC18F14K50 PICProg4U
Writer509 では、パソコン側ソフトやファームウェアの変更なしで PIC18F14K50 にうまく書き込めました(3.3Vコアにあわせて電源や信号の電圧を調節するかんたんなアダプタが必要です)。
これは、高電圧書き込みです。
つぎは、低電圧書き込みです。
FTLVPを使った PIC18F14K50 への書き込みは、うまくいきませんでした。
プログラムメモリ、ユーザーID、データEEPROMへの書き込みは正常におこなわれますが、コンフィグワードの書き込みがうまくいきません。
そのため、次回から低電圧書き込みモードを実行することができなくなり、すべてのメモリの内容が‘0’として読まれます(プログラミングモードに入れないのですから、当然です。また、プログラミングモードに入れたとしてもコードプロテクトビットも‘0’ですから)。
なぜ、次回からプログラミングモードに入れなくなるかといいますと、コンフィギュレーションワードの書き込みに失敗するため、LVPビットも‘0’が書き込まれ、低電圧プログラミングモードが禁止されるからです。
LVPビットを‘1’に戻す方法は、高電圧プログラミングを用いるほかありません。
低電圧プログラミングモードでLVPビットが‘0’に変更できるというのは、矛盾したことではあります。
さて、PIC18F系列は共通の手順で済ませることができたとおもったのですが、PIC18F14K50 のコンフィギュレーションワードの低電圧書き込みのためのコードを別に用意する必要がありそうです……。
追記(2009-08-23 01:35)
さっそく、PIC18F14K50 のためのコンフィギュレーションワードの書き込み手順を用意しました。といっても、特別なことをしたわけではありません。PIC18F14K50 のプログラミング仕様書 DS41342D-page 22 の TABLE 4-9: SET ADDRESS POINTER TO CONFIGURATION LOCATION のとおりにしただけです(他の機種のマルチパネル書き込みの手法とおなじ?)。
これで FTLVP のような低電圧書き込み専用プログラマでもうまく書き込めるようになりました。ばんざ~い
1
これは、高電圧書き込みです。
つぎは、低電圧書き込みです。
FTLVPを使った PIC18F14K50 への書き込みは、うまくいきませんでした。
プログラムメモリ、ユーザーID、データEEPROMへの書き込みは正常におこなわれますが、コンフィグワードの書き込みがうまくいきません。
そのため、次回から低電圧書き込みモードを実行することができなくなり、すべてのメモリの内容が‘0’として読まれます(プログラミングモードに入れないのですから、当然です。また、プログラミングモードに入れたとしてもコードプロテクトビットも‘0’ですから)。
なぜ、次回からプログラミングモードに入れなくなるかといいますと、コンフィギュレーションワードの書き込みに失敗するため、LVPビットも‘0’が書き込まれ、低電圧プログラミングモードが禁止されるからです。
LVPビットを‘1’に戻す方法は、高電圧プログラミングを用いるほかありません。
低電圧プログラミングモードでLVPビットが‘0’に変更できるというのは、矛盾したことではあります。
さて、PIC18F系列は共通の手順で済ませることができたとおもったのですが、PIC18F14K50 のコンフィギュレーションワードの低電圧書き込みのためのコードを別に用意する必要がありそうです……。
追記(2009-08-23 01:35)
さっそく、PIC18F14K50 のためのコンフィギュレーションワードの書き込み手順を用意しました。といっても、特別なことをしたわけではありません。PIC18F14K50 のプログラミング仕様書 DS41342D-page 22 の TABLE 4-9: SET ADDRESS POINTER TO CONFIGURATION LOCATION のとおりにしただけです(他の機種のマルチパネル書き込みの手法とおなじ?)。
これで FTLVP のような低電圧書き込み専用プログラマでもうまく書き込めるようになりました。ばんざ~い
2010/3/17 22:41
投稿者:重松
2010/3/17 17:09
投稿者:重松
再三、投稿して御免なさい。
やっと解決したようです。
「Use VPP First Program Entry」を有効になおかつ、プログラム電源をpicKIT2から供給する様にして、解決しました。
言い訳になりますが、以前使用しましたpic製品は、外部電源を使用して、プログラミングしていましたので、
その方式を使用したいのですが、18F14K50では、無理な様ですね?
貴重なコメントを頂、本当に有難うございました。
今後の投稿についても宜しくお願いします。
追加質問
Q1)私の場合は、LVP=ONで外部電源を使用して、プログラミングを行う方式を取りたいと思います(RC3pinはvcc接続として)。
この場合、PIKkit2で低電圧書き込みが出来ますか?
詰まり、PICkit2に低電圧書込みを行うという設定の必要はありませんか?
PICkIT2は、CONFIG情報とRC3をみて、自動的に低電圧書込みを行うのでしょうか?
コメントいただけますと、大変助かります。
重松
やっと解決したようです。
「Use VPP First Program Entry」を有効になおかつ、プログラム電源をpicKIT2から供給する様にして、解決しました。
言い訳になりますが、以前使用しましたpic製品は、外部電源を使用して、プログラミングしていましたので、
その方式を使用したいのですが、18F14K50では、無理な様ですね?
貴重なコメントを頂、本当に有難うございました。
今後の投稿についても宜しくお願いします。
追加質問
Q1)私の場合は、LVP=ONで外部電源を使用して、プログラミングを行う方式を取りたいと思います(RC3pinはvcc接続として)。
この場合、PIKkit2で低電圧書き込みが出来ますか?
詰まり、PICkit2に低電圧書込みを行うという設定の必要はありませんか?
PICkIT2は、CONFIG情報とRC3をみて、自動的に低電圧書込みを行うのでしょうか?
コメントいただけますと、大変助かります。
重松
2010/3/17 16:40
投稿者:重松
毎度お世話になります。
貴方のコメントを参考に、再度トライして見ましたが、LVP=ONでは、必ず、CONFIGURATIONの書込みに失敗するようです。
何か、コメント頂けますとありがたいです。
ーーーーーーーーーーーーーーーーーーー
LVP = OFF にできないということは、デバイスが高電圧書き込みモードではなくて低電圧(単電源・LVP)書き込みモードでプログラミングに入っているのかもしれません。
<---その通りだと思います。
RC3/PGM(#7ピン)の接続はどうなっていますか? このピンがHighあるいは不定の状態にあると、プログラム書き込みに失敗したり、通常の動作モードとプログラム書き込みモードが衝突したりします。
<---このピンは使用していませんので、
オープンですから、不安定です。
しかし、testの為にこのピンに変化させています。
VDDがデバイスに供給された時点でLVPビットがオンになっていてRC3/PGMがHighになっているとLVPモードとなります。
RC3/PGMをI/Oとして使用する場合は、LVP = OFF にする必要があります。
<--I/Oとして、使用予定に付き、LVPをOFFとして使用したいと思います。
PICkit2の「Tool」で「Use VPP First Program Entry」を有効にすると、VDDよりさきにVPPが適用されるので、ひょっとするとうまくいくかもしれません。
<---その設定にしても、failedのエラーなくなりませんでした。
ーーーーーーーーーーーーーーーーーー
貴方のコメントを参考に、再度トライして見ましたが、LVP=ONでは、必ず、CONFIGURATIONの書込みに失敗するようです。
何か、コメント頂けますとありがたいです。
ーーーーーーーーーーーーーーーーーーー
LVP = OFF にできないということは、デバイスが高電圧書き込みモードではなくて低電圧(単電源・LVP)書き込みモードでプログラミングに入っているのかもしれません。
<---その通りだと思います。
RC3/PGM(#7ピン)の接続はどうなっていますか? このピンがHighあるいは不定の状態にあると、プログラム書き込みに失敗したり、通常の動作モードとプログラム書き込みモードが衝突したりします。
<---このピンは使用していませんので、
オープンですから、不安定です。
しかし、testの為にこのピンに変化させています。
VDDがデバイスに供給された時点でLVPビットがオンになっていてRC3/PGMがHighになっているとLVPモードとなります。
RC3/PGMをI/Oとして使用する場合は、LVP = OFF にする必要があります。
<--I/Oとして、使用予定に付き、LVPをOFFとして使用したいと思います。
PICkit2の「Tool」で「Use VPP First Program Entry」を有効にすると、VDDよりさきにVPPが適用されるので、ひょっとするとうまくいくかもしれません。
<---その設定にしても、failedのエラーなくなりませんでした。
ーーーーーーーーーーーーーーーーーー
2010/3/17 15:39
投稿者:重松
毎度お世話になります。
下記のCONFIGで一応、正常に働くようになりました(感謝!!)。
しかし、まだ、RC3 pinに問題が残っています。
詰まり、オシロで各pin(RAx, RCx, RBx)を
全て観測していますが、RC3pinにプローブを
当てますと、発振が停止してしまいます。
貴方が、指摘してくださった『「Use VPP First Program Entry』をやって見ます。
昨日の夜より、大分進歩して、やっと少し安心できました。LVPの問題を、これから解決し、本来のプログラムDebuggを開始する予定です。
ーーーーーーーーーーーーーーーーー
CONFIG IESO = OFF
CONFIG PLLEN = ON
;OFF-->no PLL, ON-->PLL
CONFIG CPUDIV = CLKDIV2
;CLKDIV4-->1/4, CLKDIV2-->1/2
CONFIG USBDIV = OFF ;
CONFIG FOSC = HS
;XT:ng
CONFIG FCMEN = OFF
CONFIG PWRTEN = ON
;ON,OFF: both ok
CONFIG BOREN = OFF
CONFIG WDTEN = OFF
CONFIG MCLRE = ON
;off:ok ON:RA3 pinはPower_ON resetとして働く
CONFIG LVP = ON
;if OFF, Verification of CONFIGURATION failed
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CPD = OFF
CONFIG CPB = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRTD = OFF
CONFIG WRTB = OFF
CONFIG WRTC = OFF
ーーーーーーーーーーーーーーーー
下記のCONFIGで一応、正常に働くようになりました(感謝!!)。
しかし、まだ、RC3 pinに問題が残っています。
詰まり、オシロで各pin(RAx, RCx, RBx)を
全て観測していますが、RC3pinにプローブを
当てますと、発振が停止してしまいます。
貴方が、指摘してくださった『「Use VPP First Program Entry』をやって見ます。
昨日の夜より、大分進歩して、やっと少し安心できました。LVPの問題を、これから解決し、本来のプログラムDebuggを開始する予定です。
ーーーーーーーーーーーーーーーーー
CONFIG IESO = OFF
CONFIG PLLEN = ON
;OFF-->no PLL, ON-->PLL
CONFIG CPUDIV = CLKDIV2
;CLKDIV4-->1/4, CLKDIV2-->1/2
CONFIG USBDIV = OFF ;
CONFIG FOSC = HS
;XT:ng
CONFIG FCMEN = OFF
CONFIG PWRTEN = ON
;ON,OFF: both ok
CONFIG BOREN = OFF
CONFIG WDTEN = OFF
CONFIG MCLRE = ON
;off:ok ON:RA3 pinはPower_ON resetとして働く
CONFIG LVP = ON
;if OFF, Verification of CONFIGURATION failed
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CPD = OFF
CONFIG CPB = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRTD = OFF
CONFIG WRTB = OFF
CONFIG WRTC = OFF
ーーーーーーーーーーーーーーーー
2010/3/17 12:07
投稿者:FENG3
LVP = OFF にできないということは、デバイスが高電圧書き込みモードではなくて低電圧(単電源・LVP)書き込みモードでプログラミングに入っているのかもしれません。
RC3/PGM(#7ピン)の接続はどうなっていますか? このピンがHighあるいは不定の状態にあると、プログラム書き込みに失敗したり、通常の動作モードとプログラム書き込みモードが衝突したりします。
VDDがデバイスに供給された時点でLVPビットがオンになっていてRC3/PGMがHighになっているとLVPモードとなります。
RC3/PGMをI/Oとして使用する場合は、LVP = OFF にする必要があります。
PICkit2の「Tool」で「Use VPP First Program Entry」を有効にすると、VDDよりさきにVPPが適用されるので、ひょっとするとうまくいくかもしれません。
RC3/PGM(#7ピン)の接続はどうなっていますか? このピンがHighあるいは不定の状態にあると、プログラム書き込みに失敗したり、通常の動作モードとプログラム書き込みモードが衝突したりします。
VDDがデバイスに供給された時点でLVPビットがオンになっていてRC3/PGMがHighになっているとLVPモードとなります。
RC3/PGMをI/Oとして使用する場合は、LVP = OFF にする必要があります。
PICkit2の「Tool」で「Use VPP First Program Entry」を有効にすると、VDDよりさきにVPPが適用されるので、ひょっとするとうまくいくかもしれません。
2010/3/17 10:09
投稿者:重松
お早うございます。
毎度、お世話になっています。
ご指摘の項1,2,3,4を確認しましたが、問題ないようです。
下記のconfigで書込み、ベリファイできます。
気に掛かるのは、『CONFIG LVP = ON』としないと、書込み時に、『congig書込みエラー』となります。
PICが差動していないと思われる現象は、
1)水晶振動子が発振しないことと、
2)PORTのビットがプログラムでON,OFF出来 ない事です(SIMでは制御出来ています)。
コメント頂けますと、ありがたいです。
--------------------------------------
#include<p18f14k50.inc>
CONFIG IESO = OFF
CONFIG FOSC = HS
CONFIG FCMEN = OFF
CONFIG PWRTEN = ON
CONFIG BOREN = OFF
CONFIG WDTEN = OFF
CONFIG MCLRE = OFF
CONFIG LVP = ON ;if OFF, CONFIG error
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CPD = OFF
CONFIG CPB = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRTD = OFF
CONFIG WRTB = OFF
CONFIG WRTC = OFF
----------------------------------
毎度、お世話になっています。
ご指摘の項1,2,3,4を確認しましたが、問題ないようです。
下記のconfigで書込み、ベリファイできます。
気に掛かるのは、『CONFIG LVP = ON』としないと、書込み時に、『congig書込みエラー』となります。
PICが差動していないと思われる現象は、
1)水晶振動子が発振しないことと、
2)PORTのビットがプログラムでON,OFF出来 ない事です(SIMでは制御出来ています)。
コメント頂けますと、ありがたいです。
--------------------------------------
#include<p18f14k50.inc>
CONFIG IESO = OFF
CONFIG FOSC = HS
CONFIG FCMEN = OFF
CONFIG PWRTEN = ON
CONFIG BOREN = OFF
CONFIG WDTEN = OFF
CONFIG MCLRE = OFF
CONFIG LVP = ON ;if OFF, CONFIG error
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CPD = OFF
CONFIG CPB = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRTD = OFF
CONFIG WRTB = OFF
CONFIG WRTC = OFF
----------------------------------
2010/3/17 2:26
投稿者:FENG3
1、MCLRピンが浮いている
2、プログラム中で使用しないのにウォッチドッグタイマを有効にしている
3、ブラウンアウトリセットが有効になっていて、BORVで設定した低電圧が検出されている
4、3.3VがVUSBに供給されていない
……
2、プログラム中で使用しないのにウォッチドッグタイマを有効にしている
3、ブラウンアウトリセットが有効になっていて、BORVで設定した低電圧が検出されている
4、3.3VがVUSBに供給されていない
……
2010/3/17 0:33
投稿者:重松
今晩は
PIC18F14K50にPICkit V2.55で書込みを行い
べりファイをOKでしたが、正常に動作しません。
水晶振動子の発振が、途中で中断しフローティング状態になるようです。
Q1)最初、5V電源を印加した状態で、書込みを行おうとしましたが、PICkitが書込みを拒否しましたので、PICKITの電源を使用して書き込みが出来ましたが、前記の如く、水晶信号子の発振が正常でないようです。
ICの破損は、考えにくいですね?
何かコメント頂けますとありがたいです。
重松
PIC18F14K50にPICkit V2.55で書込みを行い
べりファイをOKでしたが、正常に動作しません。
水晶振動子の発振が、途中で中断しフローティング状態になるようです。
Q1)最初、5V電源を印加した状態で、書込みを行おうとしましたが、PICkitが書込みを拒否しましたので、PICKITの電源を使用して書き込みが出来ましたが、前記の如く、水晶信号子の発振が正常でないようです。
ICの破損は、考えにくいですね?
何かコメント頂けますとありがたいです。
重松
2010/3/16 23:25
投稿者:FENG3
こんばんは。
PIC18F14K50は電圧レギュレータを内蔵しているので5V駆動可能で、PIC18LF14K50は3.3V駆動です。
どちらもプログラミングやUSBのための信号は3.3Vですので、5Vの電源電圧で書き込むばあいは信号のレベル変換が必要になります。
なお、PICkit2はPIC18F14K50にたいして自動的にVppの電圧を8V~9Vに調節して高電圧書き込みをおこないますが、ICD2の場合はVppの電圧を調節するためのアダプタが必要になります。Writer509の場合はアダプタを自作します。
PIC18F14K50は電圧レギュレータを内蔵しているので5V駆動可能で、PIC18LF14K50は3.3V駆動です。
どちらもプログラミングやUSBのための信号は3.3Vですので、5Vの電源電圧で書き込むばあいは信号のレベル変換が必要になります。
なお、PICkit2はPIC18F14K50にたいして自動的にVppの電圧を8V~9Vに調節して高電圧書き込みをおこないますが、ICD2の場合はVppの電圧を調節するためのアダプタが必要になります。Writer509の場合はアダプタを自作します。
2010/3/16 22:39
投稿者:重松
今晩は!
PIC18F14k50は外部電源の5Vでプログラミングが出来ると思い、何回も確認しましたが、出来ませんでした。
PIKkitの電源自動的に3.3Vで、書き込みが出来ました。
不思議に思い、関連記事を探しておりましたところ、貴方のHPがあり、私の疑問点が解消できました。
初心者ですので、今後とも宜しくお願いします。
よって、電源電圧5.0Vではなく、3.3Vで使用するようにします。
PIC18F14k50は外部電源の5Vでプログラミングが出来ると思い、何回も確認しましたが、出来ませんでした。
PIKkitの電源自動的に3.3Vで、書き込みが出来ました。
不思議に思い、関連記事を探しておりましたところ、貴方のHPがあり、私の疑問点が解消できました。
初心者ですので、今後とも宜しくお願いします。
よって、電源電圧5.0Vではなく、3.3Vで使用するようにします。
先の投稿質問のQ1)に関して、一応結論が出ました。大変初歩的な質問をして、御免なさい。
ーーーーーーーーーーーーーー
追加質問
Q1)私の場合は、LVP=ONで外部電源を使用して、プログラミングを行う方式を取りたいと思います(RC3pinはvcc接続として)。
この場合、PIKkit2で低電圧書き込みが出来ますか?
詰まり、PICkit2に低電圧書込みを行うという設定の必要はありませんか?
PICkIT2は、CONFIG情報とRC3をみて、自動的に低電圧書込みを行うのでしょうか?
(本日の結論)
<---RC3をPULLアップして、CONFIG LVP = ONに設定して、低電圧書込みが出来たようです。PICKkit2は、常に接続した状態でDebugが出来るようになりました。
但し、PICkitのResetによる再起動は、何故か機能しませんが?
貴重なコメントを頂、感謝しております。
重松