PIC自作プログラムライタのRead機能追加について

このQ&Aのポイント
  • PIC16F877を使用した自作プログラムライタにRead機能を追加しようとしています。
  • しかし、読み込んだ結果、コンフィグレーションビットが元の書き込んだHexファイルと異なる値が返ってきます。
  • ブートコードの仕様書によれば、ブートコードからコンフィグレーションレジスタにはアクセスできないようです。正しいビット列は何ですか?
回答を見る
  • ベストアンサー

PIC 自作プログラムライタ Read機能追加

PIC16F877を使用しています ブートローダをPICライタ(市販)で書込み、 現在自作のプログラムライタに装着し、 PC側のプログラム(自作)からユーザコードを書き込めるところまで完成しました。 現在 ユーザコードをReadする機能を追加しようとしているのですが、 読み込んだところ、コンフィグレーションビットが元の書き込んだHexファイルとは 違う数値が返ってきてしまいます。 ブートコードの仕様書を見たところ、 「ブートコードからコンフィグレーションレジスタにはアクセスできません」 と書いてありました。 もし、この場合 Readしようとしたら どんなビット列が返ってくるのが正しいのでしょうか? どなたかご教示いただけませんでしょうか、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

>「ブートコードからコンフィグレーションレジスタにはアクセスできません」 とある以上正解は無いと考えたほうが間違いありません(要は不定)

new-ton
質問者

お礼

さっそくの回答ありがとうございます。 やはり、そうですよね。 ここのコンフィグレーションビットは無視して 他に進みたいと思います。 ありがとうございました。

関連するQ&A

  • PIC12F683でコンフィグレーションビット設定プログラムを入れると、動作できなくなる。

    現在PIC12F683マイコンをC言語でCCSコンパイラを使ってプログラムをやっています。 数個マイコンにコンパイラしたプログラムの実行ファイルを書き込んでいくとき、書き込み機にコンフィグレーションビット設定をいちいち撃ち込んでいくのが面倒くさくて、ぐぐっていたら、プログラム上にコンフィグレーションビット設定のプログラムというのがあったので、作業を省略してくれるとのことでやってみたのですが、コンパイルして実行ファイルを書き込むとマイコンが全く動かなくなってしまいました。 /* configuration bits */ #fuses INTRC_IO // _INTRC_IO #fuses WDT // WDT_ON #fuses PUT // Power_UP_TIMER_ON #fuses NOMCLR // MCLR_NO #fuses NOPROTECT // PROTECT_NO #fuses NOCPD // CPD_OFF #fuses BROWNOUT // BROUWOUT_ON #fuses NOIESO // IESO_NO #fuses FCMEN // Monitor clock fail-safe_ON こんプログラムを入れてみたのですが、なぜ、マイコンが全く動かなくなってしまうのでしょうか? 一応main関数の永久ループに行く前に、デバッグとしてprintf文をいれてUART出力で0xFFという文字を出力させているのですが、このコンフィグレーションビット設定プログラムの実行ファイルではこのprintfも出力されていません。

  • picマイコンのプログラムについて

    上位4bitと下位4bitを取り出してそれぞれを足して出力するプログラム #include<pic.h> void main(){ int x,y,z; TRISA=0x00; TRISB=0xFF; for(;;){ x=(0b11110000 & PORTB)>>4; y=(0b00001111 & PORTB)>>0; z=x+y; PORTA=z; } } pulseを読み取り、カウントするプログラム portaの第0bitからpulseを読み込んで信号が変化したとき、数を数えて、現在のカウントをportbに出力する #include <pic.h> main() { unsigned char before,after; TRISA=0xFF; TRISB=0x00; before=PORTA&1; PORTB=0; for(;;) { after=(PORTA &8)>>3; if(before==0&&after==1) { PORTB=1; } else { PORTB=0; } before=after; } } どのように変更・付け加えをしたらいいでしょうか?どなたかわかる方はお願いします。

  • プログラムについて pic

    第3bit目がマスクし取り出した信号で、この信号を第0bit目に移す場合 x=(0b00001000)〉〉3 これで合っていますか? pulseを読み取り、カウントするプログラム portaの第0bitからpulseを読み込んで信号が変化したとき、数を数えて、現在のカウントをportbに出力する #include <pic.h> main() { unsigned char before,after; TRISA=0xFF; TRISB=0x00; before=PORTA&1; PORTB=0; for(;;) { after=(PORTA &8)>>3; if(before==0&&after==1) { PORTB=1; } else { PORTB=0; } before=after; } } どのように変更・付け加えをしたらいいでしょうか?どなたかわかる方はお願いします。

  • PICのプログラムがアセンブルできない

    MPLAB X(v3.05)とPICkit3とPIC16F84Aによりアセンブラプログラムを勉強を始めました初心者です。下記のプログラムがビルドエラーが出てhexファイルを生成できません。 8個のLEDを一つおきに点灯するだけのものですがエラーが出て、しかもその意味が分からない状態で悩んでおります。マニュアルを見ても糸口すら掴めないでおります。どなたか解決策をご教授いただけると幸いです。アセンブラはMPLAB X(v3.05)組み込みのMPASM、関係あるかわかりませんがPCのOSはXP(SP3)です。 どうかよろしくお願いいたします。 プログラム list p=16F84A #include "p16F84A.inc" __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_ON & _CP_OFF ;************************************** LEDD EQU 0x55 ;************************************** ORG 0x00 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 CLRF PORTB MOVLW LEDD MOVWF PORTB WAIT GOTO WAIT END 以下エラー内容です。 make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory 'C:/PIC_prog/test1.X' make -f nbproject/Makefile-default.mk dist/default/production/test1.X.production.hex make[2]: Entering directory 'C:/PIC_prog/test1.X' "C:\Program Files\Microchip\MPLABX\v3.05\mpasmx\mplink.exe" -p16f84a -w -m"dist/default/production/test1.X.production.map" -z__MPLAB_BUILD=1 -odist/default/production/test1.X.production.cof build/default/production/5_1_1.o build/default/production/16F84ATEMP.o MPLINK 5.08, LINKER Device Database Version 1.25 Copyright (c) 1998-2011 Microchip Technology Inc. Error - Configuration settings have been specified for address 0x00002007 in more than one object module. Found in './build/default/production/16F84ATEMP.o', previously found in './build/default/production/5_1_1.o' Errors : 1 make[2]: *** [dist/default/production/test1.X.production.hex] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 nbproject/Makefile-default.mk:128: recipe for target 'dist/default/production/test1.X.production.hex' failed make[2]: Leaving directory 'C:/PIC_prog/test1.X' nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed make[1]: Leaving directory 'C:/PIC_prog/test1.X' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed BUILD FAILED (exit value 2, total time: 94ms)

  • PICでのA/D変換

    現在PICについて勉強しています。 そこで基本的な質問なんですが、USARTを用いて非同期でデータを送る場合、スタートビットとストップビットは自動的につくのでしょうか?? またデータを送信する際、送信できるかどうかを判断するプログラムはどのようにしたらいいのでしょうか??TSRレジスタやTXREGレジスタのところがよくわかりません。 めちゃくちゃな質問かもしれませんが、もしよかったら回答のほうよろしくおねがいします。PICの言語はアセンブラでやってます。

  • PIC C言語でコード開始アドレスを指定する方法

    PIC18F2550用にMPLAB-IDEでC18コンパイラを使って、作ったファイルをUSB経由でブートしようとしています。下位番地にはブートローダが入っているため、プログラムの開始アドレスを800番地以降におきたいのですが、例えばアセンブラ言語のORG命令のようにコードの開始番地を指定することはできないでしょうか?

  • PICKit3でのコンフィグレーションビット操作をするときに出てくるエラーメッセージの内容。

    現在、PIC12F683という8端子の小さなマイコンを使ったプログラミングを行っていて、プログラムをMPLABとCCSコンパイラを使って作成、コンパイルしてHEX実行ファイルを作成して、それをPICKit3という書き込み器を使って書き込みを行っています。 PICKit3 http://www.youtube.com/watch?gl=JP&hl=ja&v=FBbcIV1-bZw PIC12F683のコンフィグレーションビットで、初期値は外部オシレータを使う設定にしているので、それを内部オシレータに切り替えたり、リセット端子のMCLR端子はI/Oポートで使いたいので、その設定をするためにコンフィグレーションビットの設定をするときがあるのですが、そのときに必ず ”Settings in this configuration Bits view will override settings in code until you rebuild your project” このようなメッセージが出てきます。 このエラーメッセージはどのような意味なのでしょうか? ご存じの方いらっしゃいましたらご教授よろしくお願いいたします。

  • PICマイコンのプログラムカウンタの操作法は?(C言語)

    HI-TechのPICC PRO 9.65を使ってPIC16F877Aのプログラミングをしています。 しかし、最近マイコンの動作が不安定になり、突然プログラムが暴走したりするので、プログラムカウンタに問題があると疑っています。 昔、アセンブラでプログラムしていた頃はPCLATHに書き込んでからPCLに書き込んだり、ORG命令などで対処していましたが、今回初めてPICCを導入したので対処の仕方がわかりません。 またCコンパイラによっては自動でPCLATHを繰り上げてくれるようなのですが、PICCの場合はどうなのでしょうか。 hexを除いてみると0x0800のあたりもびっしりコードでうまっているのですが。。。 ちなみに asm("ORG 0x0800"); などのようにC言語の中にアセンブラで記述してもうまく解決できませんでした。 PCLATH = PCLATH + 0b000?????; とか色々やってみたのですがだめでした。 そもそもヘッダやインクルードの内容がどの番地に書き込まれているかを調べる良い方法はないでしょうか。 1.PICCはPCの操作を自動でやってくれているのか 2.もしそうでなければどのようにして解決すればよいのか で宜しくお願い致します。

  • PIC デバイスエラー

    普段,melabsのPICライターを使っているのですが,先日,秋月の自作PICライターを使用してから,melabsでPIC16F84Aにプログラムを書き込もうとすると,エラーメッセージ↓が表示されてしまいます. 「target device does not match selected device」 どうしたら直るでしょうか? 誰かわかる方がいらっしゃいましたら,アドバイスお願いします.

  • 超音波センサの距離が5cm以下の時にブザーを鳴らす

    コンフィギュレーションビットが少ないPIC12F675を使って 以下のURLを参考に、超音波センサの距離が5cm以下の時に ブザーが鳴るプログラムを作ることは可能でしょうか。 http://diy.ease-labs.com/?page_id=4578 自分で書き込んだプログラムでは出力GP1から常に5Vが出ていて、コンフィギュレーションビットの設定不足か、他のプログラム内の設定が足りないことが原因だと考えています。