今回はMPLABXの使い方を一通り確認します。
今回の説明
回路を完成させるために以下の順序で説明しています。このエントリの説明は(3)「プログラムを作る」の部分のMPLABXの概要説明になります。
前回までの説明で、ブレッドボードで回路を組み立てて開発環境もインストールしましたので、今回は回路が問題なく動作するか確認してみます。今回の説明では、実際にプログラムをビルドします。プログラムの中身については次回以降詳細に説明しますので、今回はMPLABXでのPICプログラム開発の流れを把握してみてください。
- LEDを電池と抵抗のみで光らせる回路を組み立てる
PICマイコンの回路を組み立てる前に、まずはブレッドボードに慣れておくことにします。電池、抵抗、LEDのみを使って、ブレッドポード上に回路を組んでLEDを光らせてみます。ここでは電池、抵抗、LEDの回路記号と回路図の説明をして、回路図からブレッドボードに組む方法を説明します。まずはブレッドボードに慣れましょう! - PICマイコンのベース回路を組む
はじめの一歩の回路は、LEDを1秒に1回光らせるだけの回路です。この回路をブレッドボードに組み立てます。 - プログラムを作る
LEDを1秒に1回光らせるプログラムを作成します。 - PICマイコンに書き込んで動作させる
作成したプログラムをPICマイコンに書き込んで動作させてみます。 - ベース回路にスイッチを追加
LEDの点滅をスイッチで開始させるために、ベース回路にスイッチを追加します。これまではLEDを光らせる、という出力制御をしましたが、今度はPICマイコンで外部から信号を入力する方法を確認します。 - ベース回路にブザーを追加
スタートスイッチ付きの、1秒に1回光らせる回路を作りましたので、ブザーを追加してタイマーとして完成させます。
開発環境のMPLABXの操作概要
MPLABX IDEとXCコンパイラのインストールできたら、早速MPLAB Xを立ち上げてみましょう。
デフォルト設定でインストールした場合、macOSは、「アプリケーション」→「microchip」→「mplabx」→「(バージョン番号フォルダ)」→「mplab_ide.app」です。
Windowsは、デフォルト設定でインストールした場合、デスクトップに「MPLAB X IDE vx.xx」があります(vx.xxはバージョン番号)。デスクトップにない場合は、「Windowsメニュー」→「すべてのアプリ」→「Microchip」→「MPLAB X IDE vx.xx」です。
MPLABXを立ち上げると、以下のようなウインドウが表示されます。以下はmacOS版のウインドウですが、Windows版もほぼ同様のスクショになります。
それでは開発の流れを確認したあと、実際にMPLABXを操作しながら開発の流れを確認しましょう。準備するものは、MPLABXをインストールしたMac/PC以外に、作成したブレッドボード、電池ボックス、PICKit3、PICKit3付属のUSBケーブルです。
開発の流れ
開発規模の大小にかかわらず、開発の流れは以下のようになります。
まず、新規に「プロジェクト」を作成します。プロジェクトを作成したら、そのプロジェクトに対して新規ファイルを追加、そのファイルにプログラムを書きます。プログラムができたらビルドしてPICマイコンに書き込み、実際に回路を動作させます。
一度にすべての機能を実装したり、一発で動作することはあまりないので、実際には以下のような手順になります。
「プロジェクト」とか「ファイル」とか、今は具体的にわからなくても大丈夫です。これから実際にやってみますので、その過程でどんなものなのか感覚をつかんでみてください。
プロジェクト作成
それでは、これからプロジェクトを作成し、プログラムファイルを追加、プログラム作成(今回はコピペ)、ビルド、書き込み、動作させてみます。実際に自分でやってみながら手順を追ってみて下さい。また、スクショはmacOSのものですが、Windows版も同様の操作になります。
まず、MPLAB Xを立ち上げます。ていうか、立ち上げてますよね。
はじめに新規プロジェクトを作成します。MPLAB Xの”File”メニューから”New Project”を選択します。
メニューを選択すると、プロジェクト作成のための情報を入力するウィザードが始まります。
まず、以下の画面で、「Categories」として「Microchip Embedded」、「Projects」として「Standalone Project」を選択してください。通常のPICマイコンのプログラムを作る場合、この選択をすることになります。選択したらNext>ボタンをクリックします。
次の画面で、このプロジェクトで使用するPICマイコンの型番を指定します。プルダウンメニューになっていますので、メニューから選択できますが、数が多いので選択するのは大変です。そこで、以下のようにDevice欄に今回使用するPICマイコンの型番、 “pic12f1822” を直接入力します。入力は小文字でもOKです。合致するものが見つかると自動的に大文字に変換してくれます。入力できたらNext>ボタンをクリックします。
次に、、、ちょっと難しい内容ですので、そっとNext>ボタンをクリックしてください。(プログラムをデバッグする際の設定になります。基礎編ではデバッグは行いませんので、ここではNoneを選択したまま次の設定に進みます)
次の画面で、プログラムの書き込みツールを指定します。お持ちのPICkitに合わせて「PICkit3」または「PICkit4」を選択します。以下は「PICkit4」を選択した状態です。選択したらNext>ボタンをクリックします。
次の画面で、使用するコンパイラを指定します。以下のように先ほどインストールしたXCコンパイラを選択します。
なお、XCコンパイラは何ヶ月かごとにバージョンアップされます。新しいバージョンをインストールすると、古いバージョンを上書きするのではなく、追加でインストールされます。XCコンパイラを複数バージョンインストールすると、上のコンパイラ選択画面で複数のバージョンがリストされます。
最後にプロジェクト名称などを設定します。以下の説明図も合わせて見ながら設定してみて下さい。まず、Project Name欄に、”LED_Flash”と入力してください。もしご自分で付けたいプロジェクト名があればそれを指定いただいても構いません。
次にProject Location欄のプロジェクトフォルダの場所を確認してください。自分で作成したフォルダになっていない場合は、「Browse…」ボタンをクリックして、自分で作成したプロジェクトフォルダ位置を指定します。「Set as main project」はチェックをつけて、「Use project location as the project folder」のチェックは外します。
最後に、Encoding欄はUTF-8を選択してください。UTF-8を選択すると、プログラム中のコメントに日本語が入力可能になります。選択できたらFinishボタンをクリックします。
さて、これでLED点滅制御プログラムを作成するためのプロジェクトができました。ただ、この状態ではプログラムを書くためのファイルなどはまだ用意されていません。このあと、このプロジェクトに、main.cファイルを新規追加して、main.cにプログラムを書いていくことになります。
プロジェクト作成のウィザードが終わると、プロジェクトが作成され、ウインドウ左上の方に作成したプロジェクトが以下のように表示されていると思います。
プログラム作成
ここまでの操作でLED点滅制御のプログラムを作成するための「プロジェクト」を作成しました。次にこのプロジェクトにプログラムを書くためのファイルを追加します。
このファイルですが、自分の好きな名前がつけられますが、ここではC言語の一般的なファイル名である “main.c” にします。このセクションでは、このmain.cを新規にプロジェクトに追加して、main.cにプログラムをコピペすることにします。今回はMPLABXでの開発〜動作確認までの流れを確認するためなので、main.cの中身には触れないことにします。
補足ですが、プログラム規模が大きくなってくると、main.cだけで開発するとわかりづらくなりますので、いくつかのファイルに分けたりします。その場合は、ひとつのプロジェクトにいくつものプログラムファイルが追加されることになります。
それでは、main.cという名称のファイルをこのプロジェクトに追加しましょう。ソースコードは、プロジェクトの”Source Files”というディレクトリに追加します。
ここで補足ですが、この”Source Files”というディレクトリは、実際にはFinder(macOS)やExplorer(Windows)で探してもどこにもありません。あくまで、MPLABXがそれぞれのプロジェクトに対して仮想的に管理してくれているだけです。(ちょっと込み入った話ですので、この話はよくわからなくても今後の理解に影響はありません)
main.cを追加するには、まずプロジェクトにある”Source Files”というフォルダを右クリックします。右クリックするとコンテキストメニューが表示されますので、New → main.c… を選択してください。
続いて、作成するファイルの名称などを聞かれますので、以下のダイアログのように “File Name” 欄に “main”と入力します。拡張子(.c)は “Extension”欄で指定しますが、すでに “c” が選択されていると思いますのでこのままでOKです。設定したら “Finish” ボタンをクリックします。
この手順で、Source Filesの下にmain.cが作成されたと思います。それと同時に、右の広い領域に以下のようにmain.cの内容が表示されたと思います。このエディタでmain.cにプログラムを書いていくことになります。このファイルはCのメインファイルとして作成したため、メイン関数で使われる典型的な内容がすでに書かれています。
さて、プログラムの中身は次回以降の記事で詳細に説明しますので、まずは現在main.cに書かれている内容をすべて消去して、以下のプログラムをコピペしてください。(macOS/Windows共通です)
/*
* File: main.c
*/
#include <xc.h>
// PIC12F1822 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
// クロック周波数指定
// __delay_ms()関数が使用する
#define _XTAL_FREQ 1000000
void main(void) {
// PICマイコン設定
OSCCON = 0b01011010; // 内部クロック周波数を1MHzに設定
ANSELA = 0b00000000; // すべてのピンをデジタルモードに設定
TRISA = 0b00001000; // すべてのピンを出力モードに設定(ただしRA3ピンは常に入力モード)
// LEDを消灯する
LATA5 = 0;
// LED点滅処理(永久に繰り返す)
while(1){
// LEDを950ms消灯する
LATA5 = 0;
__delay_ms(950);
// LEDを50ms点灯する
LATA5 = 1;
__delay_ms(50);
}
// 以下の命令は実行されない
return;
}
これでプログラムが完成しました。ここでファイルを保存します。アプリケーションメニューの「File」→「Save…」を選択します。ここまでの作業で以下のようになります。
ビルド
次にビルドをします。ビルドとは、先ほど保存したC言語のプログラムをPICマイコンが処理できるコードに変換する作業です。ビルドはエラーがなければすぐに終わります。今回はプログラムをコピペいただいたのでエラーは出ないと思います。ツールアイコンにビルドボタンがありますので、そのボタンをクリックしてください。
クリックすると、右下の領域に以下のように何か文字が表示されると思います。これは、ビルド過程でコンパイラから出力される文字(ログ)の表示領域です。エラーがあれば、該当箇所が青文字で、エラーの内容が赤文字で表示されます。
この領域の最後の行に、”Loading completed”と出力されればビルド成功です。あとは、ビルドされたプログラムをPICマイコンに書き込む作業です。
書き込み
書き込みはブレッドボードのコネクタにPICKitを接続して書き込めばOKですが、実はこの状態で書き込みを行うと、PICマイコンが見つからない、というエラーになってしまいます。これについて原因と対応方法を説明します。
PICマイコンにプログラムを書き込むには、PICマイコン内部のプログラムを記憶しておくメモリに電圧をかけてプログラムを書き込みむ必要があるため、電源を供給する必要があります。この電源をどのように供給するかが問題になります。
この電源供給方法には2通りあります。ひとつは、電池ボックスをブレッドボードにつないで回路側の電源から供給する方法です。もうひとつはPICKit本体から供給する方法です。
PICKitから供給できるのであれば、書き込むときにわざわざ電池ボックスをブレッドボードに接続する必要はないので、常にPICkitから書き込んだ方がいいですよね。でも、PICKitから電源を供給する方法ではうまくいかない場合があるんです。ただし、今回の回路ではPICKitから電源供給しても問題ありません。
細かい内容になりますが、この背景を簡単に説明しておきます。
実は、PICKitから電源を供給する、というのは、そのターゲットの回路に電力を供給することになります。PICKitから電力を供給すると、そのターゲットの回路が必要とする電流が流れます。回路が大規模の場合、PICKitからの電力供給は追いつかなくなり、結果的にプログラムを書き込めなくなってしまいます。
PICKitから電源を供給するといちいち回路側の電源を接続しなくてよいので手軽ですが、この場合の回路はあまり電力を使わない、というケースに限ります。電力をたくさん使う回路の場合は、回路側で用意している本来の電源をつなげて電源を供給し、PICKitからは電源を供給しない設定で書き込みます。
プロジェクトのデフォルトは、PICKit3から電源を供給しない設定になっています。今回の回路はLEDをひとつのみ点灯する回路ですので、電力をあまり使いません。そのため今回はPICKitから電源を供給することにします。
それでは、以下の手順でPICkitから電源を供給する設定に変更して、PICマイコンにプログラムを書き込みましょう。
- プロジェクト設定ダイアログを開く
- プロジェクト設定の中のPICKit3のプログラム書き込み時の電源供給設定をONにして、電圧を5Vに設定する
- プログラムを書き込む
それでは始めます。
まずプロジェクトの設定ダイアログを表示するため、”LED_Flash”というプロジェクト名を右クリックして、メニューの一番下の”Properties”を選択します。
以下のようなプロパティダイアログが表示されますので、次の設定をします。
- 左の項目から「PICkit3」または「PICkit4」を選択します
- 右上のポップアップメニューから「Power」を選択します
- 「Power target circuit from PICkit」のチェックボックスをオンに、Voltage Levelを5.0に設定します
この設定ができたら、OKボタンをクリックします。このダイアログで、プログラム書き込み時、電源をPICkit3から5.0Vで供給する、という設定をしたことになります。
これで書き込みの準備ができました。
ではこれから実際に書き込みます。まず、Mac/PCとPICkitをUSBケーブルで接続します。PICkitは以下のように、前回までに製作したブレッドボードのピンヘッダに差し込みます。向きに注意しましょう。PICKitの三角マークがある側が1番ピンです。
ちょっと不安定なので、左手で押さえたままにします。次に、プログラムを書き込みます。書き込みはツールアイコンに書き込みボタンがありますので、それをクリックします。
クリックすると、書き込み処理が始まりますが、以下のダイアログが表示された場合は「PICkit3」または「PICkit4」の「SN: xxxxxx」というところを選択してOKボタンをクリックします。これは、MPLABX IDEがPICkitを見つけられなかった場合に表示されます。表示された場合、PICkitがどれか教えてあげます。
次に、以下のようなダイアログが表示されると思います。
これは何を言っているかというと、「あなた、知ってると思うけど、このPICマイコンには3.3Vモデルと5Vモデルがありますよね。あなた、書き込みの電圧を5Vの設定にしてるみたいだけど、もし書き込むPICマイコンが3.3Vモデルの場合、このまま書き込んだらぶっ壊れるけどいいよね」(意訳)というような内容です。5Vで問題ないのでOKボタンをクリックしてこのまま進めます。
書き込みが終わっても特にダイアログが出るわけでもないので、右下のタスク領域にログが表示されますので、そこを確認してみます。
このように最後の行に “Programming/Verify complete”と表示されれば、無事書き込み完了です。
ところで、PICKitを差しっぱなしにしていると、LEDが点滅を始めたと思います。これはプログラム書き込み後、PICマイコンが動作を始めたためです。ただ、電池をつないで動作確認しますので、ここでいったんPICKitを外します。
動作確認
では、電池をつないで動作させてみます。以下のように電池ボックスから出ている電線をブレッドボードに接続して、スイッチを入れます。
うまく1秒に1回ピカッ、ピカッ、と光りましたか?
もし光らなかったら、回路とプログラムをもう一度確認してみてください。動かない原因がどうしてもわからなかったら、ご質問を受け付けますので、このサイトの「Contact」ページからお問い合わせいただければと思います。
それでは次回からプログラムを詳しく説明していきます。
更新履歴
日付 | 内容 |
---|---|
日付 | 内容 |
2016.8.24 | 新規投稿 |
2018.11.23 | PICkit4情報追加 |
2018.11.24 | インクルードファイルをxc.hのみに変更 main関数型をvoid main(void)に変更 |
いつもお世話になっております。picの勉強を始めたばかりの初心者です。
17回のところでうまくプログラムの書き込みができず、下記のエラー文が表示されます。
何回か試してみても同じエラーが出て解決方法がわかりません。
Operation failed because the measured Vpp voltage failed to reach the requested Vpp voltage value within the timeout period.
ご質問どうもありがとうございます!
私の環境で動作確認してみましたが、ご指摘のエラーは確認できませんでした…
そのため手探りになってしまい申し訳ございませんが、最初に次のステップでご確認いただけますでしょうか?
なお、手順は文字だけでわかりづらい部分があるかもしれません。その場合はご質問いただければと思います。
1) MPLABX IDEで今回のプログラムのプロジェクトを開いてください
2) 開いたプロジェクトを次の手順でメインプロジェクトに設定してください。
左側のプロジェクトが表示されている領域で、プロジェクト名を右クリックしてメニューを表示して「Set as Main Project」(メインプロジェクトに設定するの意味)を選択します。なお、「Unset as Main Project」になっていればすでにメインプロジェクトになっていますので設定する必要はありません。
3) この時点で一度プログラムを書き込みしてみてください。
4) (3)で同じエラーが出る場合、次の設定をしてください。
プロジェクト名を右クリックしてメニューを表示して、一番下の「Properties」を選択します。プロパティダイアログが表示されますので、左側の「Categories」という領域から「PICkit4」など書き込みツールを選択します。選択すると右側にPICkitの設定ができる画面が表示されますので、「Option categories」というメニュー項目から「Power」を選択します。
選択後、「Power target circuit from PICkit4」のメニュー項目のチェックボックスをONにします。また、その下の「Voltage Level」メニュー項目の数字入力フィールドに「4.75」と入力してください。
5) この時点で一度プログラムを書き込みしてください。
6) (5)で再度エラーが出る場合、(4)と同様のステップで「Voltage Level」を「4.5」にして再度書き込みをしてみてください。
(1)〜(6)の手順で、PICkitから供給する電圧を下げてみてどうなるか確認させていただければと思います。
また、ご参考にこちらで動作確認した環境は次のとおりです。
OS: macOS Sequoia 15.0
MPLABX IDE: Version 6.20
コンパイラ: XC8 Version 2.46
プログラム: この記事に掲載のもの
書き込み機: PICkit4
ブレッドボード回路: このシリーズ記事のPICマイコン入門応用編の完成回路
※今回の回路を含んでいますので、動作確認上は基礎編と違いはないです
長くなって申し訳ございませんが、ご確認いただければと思います。
返信ありがとうございます。上記を試してみましたが、同じエラーが繰り返されるだけでした。
お返事遅くなり申し訳ございませんでした。
こちらで再現できれば解決方法を探れるのですが、なかなか再現しないため手探りになってしまっています…
いろいろお手数をおかけしますが、以下の3点、ご確認いただければと思います。
1) 念のため、ブレッドボード回路のご確認お願いいたします
2) お使いの開発環境について、以下の項目をお教えいただけますでしょうか
OS種類とバージョン:
MPLABX IDEバージョン:
XC8バージョン:
書き込み機:
3) 回路への電源供給を外部電池に変更してみたいと思います。外部電源に変更するには「A. 電池をブレッドボードに接続する」「B. PICkitからの給電をOFFにする」の手順が必要です。それぞれ以下の手順でお願いいたします
A-1) 電池ボックスのプラスとマイナスをブレッドボードのプラスラインとグランドラインに接続してください。これでブレッドボードの回路に電池ボックスから電源が供給されるようになります。
B-1) MPLABX IDEでプロジェクトを開き、プロジェクト名を右クリック、Propertiesメニューを開きます。
B-2) プロパティダイアログが表示されますので、左側領域の「PICkit」を選択して、右側の「Optioncategories」から「Power」を選択します。
B-3) 「Power target circuit fromPICkit」をOFFにします。これでPICkitから電源供給されなくなります。
設定ができましたら、PICkitをブレッドボードに接続して、電池ボックスにスイッチがついている場合はONにします。このあと、プログラムを書き込みます。
もし、PICkit3,4, 5のいずれかをご使用でしたら、もう一つ確認したい手段がありますが、まずは上記内容をご確認いただければと思います。
マイコンを勉強したくこのサイトで始めた初心者です。
最初の#include <xc.h>で添付の表示が出てマイコン設定のところでエラーが派生します。
PCはMacを使用しています。
xc.hは次のPathにあるのですがどこかにこのPathを設定する必要があるのでしょうか。
/Applications/microchip/xc8/v2.41/pic/include/xc.h
よろしくお願いします。
ご質問どうもありがとうございます。
こちらでも確認してみました。確認したバージョンはMPLABX IDE v6.0.5、XC8 v2.40です。#include <xc.h>の部分は特に問題なくビルドもできました。
原因がすぐに特定できませんが、最初に次の項目のご確認お願いできますでしょうか。
1) 「MPLAB X IDE」アプリメニューから「Settings…」メニューで設定ダイアログを表示する。
2) ダイアログ上から「Embedded」を選ぶと、添付画像の画面になります。
3) 最初に青枠の「Tools」のところにインストール済みのXC8コンパイラがあるかご確認お願いします。
4) (3)でXC8がリストされている場合、緑枠の部分が正しいパスになっているかご確認お願いいたします。
5) (3)でXC8がリストされていない場合、オレンジ色枠の「Add…」ボタンでXC8のパスを指定してみてください。パスの指定は「xc8/バージョン番号/bin」を指定すればOKと思います。
回答ありがとう御座います。includeのpathがうまく出来てないようでしたのでxc8のコンパイラをもう一度入れ直しました。Compiler Settigsの時にAdd xc8 to the PATH environment variableにチェックを入れてみました。その後にbuiludeしたらエラーが出なくなりました。教えてくださったEmbeddedのToolchainにxc8(v2.41)が入っていることも確認しました。ありがとう御座います。
ご確認どうもありがとうございました。
“Add xc8 to the PATH…” が原因だったようですね。PATHはコマンドラインでコンパイルするときに使われる情報かと思っていたのですが、MPLAB X IDEでも使用しているんでしょうか…そうだったらオプションにしないで欲しいところですね…
このような情報をいただくと他の方にも役に立ちますので、とても感謝しております。貴重な情報どうもありがとうございました!
前に解決したと思いメッセージを送ったのですが、まだ解決してないようです。ビルドした後の画面を添付します。前回教えていただいたXC8のPathは間違ってないようでした。
コメントいただきどうもありがとうございます。
すみません、、、
今確認したところ、私の環境でも#include <xc.h>でunresolved includesの警告が出ていました。結果として、ヘッダで定義されているOSCCONなどもunresolvedになっていました。
コミュニティの掲示板などを見ると、プロジェクトのプロパティ→「XC8 Global Options」で「C standard」を「C 99」から「C 90」に変更すると解決するような情報もあるのですが、今回は効果がありませんでした…
私の環境はコメントにアップいただいた画像と同じ状況で、ビルドボタンを押したところ問題なくビルドできました。
実は以前もMacで同じ状況になったことがあり、その時もビルドできていましたので放っておきました。今回も原因不明ですね…
ビルドは成功して、マイコンはプログラム通りに動作していますでしょうか。その場合はかなり気持ち悪いですが、とりあえずこの状態のまま進めていただければと思います。
私の環境も何がきっかけでこうなったのか、また謎になってしまいました(泣
今頃のお返事で申し訳ございません。
別の記事のコメントで読者の方から教えていただいたのですが、以下の手順で赤線が消えました。私もMacの環境で同じ設定をしたところ消えましたので、試していただければと思います。
———
プロジェクトプロパティから、xc8 Global Options → xc8 compiler 内の Include directories右の…をクリックして、ウィンドウが開いたらBrows…をクリック、
macであれば
/Applications/microchip/xc8/v2.41/pic/include/proc
/Applications/microchip/xc8/v2.41/pic/include/c90 ←c99で開発していたらc99
———
v2.41の箇所はご利用のバージョンに合わせていただければと思います。
PICマイコン初心者です。このサイトで一から勉強させていただいています。大変詳細で分かりやすく感謝しております。
実は応用編まですすめ実践編に入る前に、自分でプログラムを作ろうと元の点灯、消灯を再開させようとしましたら、ビルド後に”Programming/Verify complete”の表示はするのですが書き換えられていない動きをしています。(回路は第17回のシンプルな接続に戻しています。)どう確認を進めればよいのか助言をいただけると助かります。ツールはPICKIT4,
MPLAB X IDE 6.00を使っています。宜しくお願いします。
自己解決しました。お恥ずかしいことにSet Main projectで書き込む対象を変えていませんでした。プログラムを作る画面を開いていればそれが書き込められると勘違いっしていました。outputをよく見れば、対象のプログラムが表示されていました。
お返事が遅くなってしまい申し訳ございませんでした。
週末に確認してみようかと思っていましたが、自己解決されたんですね!
実は私もMain Projectの設定を忘れることがあります。コメントいただいたようにoutputのペインにビルドしたプログラム名が表示されますので、そこを確認するようにすればいいですね。(だんだん意識しなくなるのですが、確認することは大切ですね)
いろいろと共有いただきどうもありがとうございました。
プログラムをコピペしてビルドしてみたのですが、これはエラーがあるということですか?
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash1.X’
make -f nbproject/Makefile-default.mk dist/default/production/LED_Flash1.X.production.hex
make[2]: Entering directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash1.X’
“C:\Program Files\Microchip\xc8\v2.36\bin\xc8-cc.exe” -mcpu=12F1822 -c -mdfp=”C:/Users/��/xc8″ -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,–data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o build/default/production/newmain.p1 newmain.c
::: error: (1180) directory “C:/Users/��/xc8” does not exist
make[2]: *** [build/default/production/newmain.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-default.mk:107: recipe for target ‘build/default/production/newmain.p1’ failed
make[2]: Leaving directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash1.X’
nbproject/Makefile-default.mk:91: recipe for target ‘.build-conf’ failed
make[1]: Leaving directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash1.X’
nbproject/Makefile-impl.mk:39: recipe for target ‘.build-impl’ failed
BUILD FAILED (exit value 2, total time: 617ms)
エラーログどうもありがとうございました。
ログの中央付近で、パスが見つからない、というエラーになっています。
ログだけではすぐに原因が特定できませんが、使用されたPCのディレクトリ構成をご確認いただけますでしょうか。
ログを見ると、
「C:/Users/��F/Documents/」というディレクトリは見つかっているようですが、
「C:/Users/��/xc8」というディレクトリが見つからないようです。
Windowsの場合、CドライブのUsersディレクトリの下に各ユーザのディレクトリが作成されます。そのディレクトリ名がMPLABXから見た場合、文字化けしているような状況ですので、パスが正しく認識されていないように見えます。
お手数ですが、ビルド時に使用したログインアカウントのC:¥Usersの下のディレクトリ名が文字化けしていないかご確認いただければと思います。
文字化けはしていないように思います。MPLABのバージョンを変更してみました。もう一度コピペからビルドしてみました。
/*
* File: main.c
*/
#include<stdio.h>
#include<stdlib.h>
#include <xc.h>
// PIC12F1822 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
// クロック周波数指定
// __delay_ms()関数が使用する
#define _XTAL_FREQ 1000000
void main(void) {
// PICマイコン設定
OSCCON = 0b01011010; // 内部クロック周波数を1MHzに設定
ANSELA = 0b00000000; // すべてのピンをデジタルモードに設定
TRISA = 0b00001000; // すべてのピンを出力モードに設定(ただしRA3ピンは常に入力モード)
// LEDを消灯する
LATA5 = 0;
// LED点滅処理(永久に繰り返す)
while(1){
// LEDを950ms消灯する
LATA5 = 0;
__delay_ms(950);
// LEDを50ms点灯する
LATA5 = 1;
__delay_ms(50);
}
// 以下の命令は実行されない
return;
}
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash.X’
make -f nbproject/Makefile-default.mk dist/default/production/LED_Flash.X.production.hex
make[2]: Entering directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash.X’
“C:\Program Files\Microchip\xc8\v2.36\bin\xc8-cc.exe” -mcpu=12F1822 -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -Wa,-a -DXPRJ_default=default -msummary=-psect,-class,+mem,-hex,-file -ginhx032 -Wl,–data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o build/default/production/main.p1 main.c
terminate called after throwing an instance of ‘std::invalid_argument’
what(): No such file or directory
error: clang frontend command failed with exit code 3 (use -v to see invocation)
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target ‘build/default/production/main.p1’ failed
make[2]: Leaving directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash.X’
nbproject/Makefile-default.mk:90: recipe for target ‘.build-conf’ failed
make[1]: Leaving directory ‘C:/Users/��F/Documents/MPLABX/LED_Flash.X’
nbproject/Makefile-impl.mk:39: recipe for target ‘.build-impl’ failed
make[2]: *** [build/default/production/main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 6s)
MPLAB X IDEのバージョン変更してのご確認どうもありがとうございました。
こちらで、以下の環境でコメントいただいたソースコードをコピペして確認しましたが、Windows、macOSともに問題なくビルドできました。(おそらく同じ環境だと思います)
MPLABX IDE : Version 6.00
XC8 : Version 2.36
MPLABX IDEが同じバージョンだとすると、MPLABXかOSの設定が異なっているのが原因かもしれません。XC8の処理でエラーが出ていますので、お手数ですが、以下の設定変更をして試していただければと思います。
プロジェクト名を右クリックしてメニューから「Properties」を選択するとプロパティダイアログが表示されます。
Categoriesで「XC8 Global Options」を選択し、右側の「C Standard」をC99からC90に変更してみてください。ダイアログのスクショを添付しました。
c90に変更でエラーが出なくなりました。有難うございました。前に進めます。^^
このc99,90は何ですか?
C90に変更して動作できた、とのことでよかったです!
C90、C99というのはC言語仕様のバージョンです。
「C言語」は唯一不変の言語仕様があるわけではなく、何回か改定されています。C90は1990年、C99は1999年、さらにC11は2011年に策定された仕様です。
こちらで再現できませんでしたので、引き続き調査してみます。
貴重な情報をいただきどうもありがとうございました。
こちらで,PICを一から勉強させていただいています.
誤植がありました.
次の画面で、プログラムの書き込みツールを指定します。お持ちのPICkitに合わせて「PICkit3」または「PICkit4」を選択します。以下は「PICkit4」を選択した状態です。線足したらNext>ボタンをクリックします。
「線足したら」→「選択したら」
ですね.だれでもわかるでしょうけど,揚げ足を取るわけではありませんが,あまりにも完璧な講座なので少しのミスもないほうがよいと思いました.
今後ともよろしくお願いいたします.
ご指摘どうもありがとうございました!
さっそく修正いたしました。
細かいことでもご指摘いただけると大変助かります。(特に誤植は本人はなかなか気づかないことが多いので…)
お手数でなければ、何か見つけましたらご指摘いただけると幸いです。
ところで、このシリーズ記事ですが、MPLABX IDEの最新バージョンと違うところも出てきていますので、今後順次最新情報に更新していく予定です。
すばやい対応でビックリしています.
ありがとうございました.
今後ともよろしくお願いいたします.
初めまして。ここまでフォローして来たのですが、書き込みのところで以下のエラーが出て進めなくなりました。どうすればいいでしょうか?
Connecting to programmer…
The programmer could not be started: Could not connect to tool hardware: PICkit3PlatformTool, com.microchip.mplab.mdbcore.PICKit3Tool.PICkit3DbgToolManager
すみませんがお教えください。よろしくお願いします。
binaryさんへのお答えに従って何度かトライして、後電圧を4.5にして動きました。ご面倒をおかけしました。
基礎編の第17回までの情報で、PIC12F1822への書き込みと動作確認がスムーズに出来ました。
ここまで丁寧に解説されているサイトは他には見たことがありません。
貴重な情報を提供していただいたclaynetsさんに感謝致します。
ところで、電子回路図ですがどのようなソフトウェアで書かれていますでしょうか?
今後、自分も書く機会があると思い質問させていただきました。
いずれ、claynetsさんのように、pngファイルなどでインターネットに公開することを考えています。
キャップさま、
コメントどうもありがとうございます! 動作確認までできてよかったです。実際に動くと嬉しいですよね。
ところで、ご質問の電子回路図ですが、macOS用の「Affinity Design」というアプリで描いています。このアプリは、Illustratorとほぼ同じ機能を持っていて、macOSのイラレ系アプリとして人気があります。結局、直線や円などを組み合わせて部品の回路記号を作成して、それをグループ化、部品として使っています。
電子回路図を描くアプリは、フリーソフトの「KiCad」や「LTSpice」、Autodesk社の「EAGLE」などがあります。最初はこれらのアプリで回路図を作成してみたのですが、いずれのソフトも図としての品質はよくなかったので、結局、自分でゼロから描くことにしました。
きれいな電子回路図を描きたいのであれば、イラレ系のアプリでゼロから作成するのが一番きれいだと思います。
picマイコン初心者です。プログラミングをしていてこの分野を勉強したいと思い第1回から記事を見させて頂いています。とてもわかりやすく、ここまで躓く事なく来れましたが、書き込みの段階で以下のようなエラーが出て、対応できませんでした。
エラーの解決方法をもしよろしければ教えて下さい。
[エラー]
The programmer could not be started: Could not connect to tool hardware: PICkit3PlatformTool, com.microchip.mplab.mdbcore.PICKit3Tool.PICkit3DbgToolManager
binaryさま、
コメントどうもありがとうございました。
再現確認しようとしているのですが、なかなかこちらで再現できておりません。そこで、似たような症状がないかMicrochipのフォーラムなどで確認したところ、PICkit3のモードが異なっている可能性があるかもしれません。
PICkit3本体に黒いボタンがあると思います。このボタンを以下のように操作してご確認いただけますでしょうか。
1) PICKit3をPCから外す
2) PICkit3の黒いボタンを押したまま、USBケーブルをPCに接続する
3) USBケーブルを接続したら、黒いボタンをはなす
こちらでも引き続き再現できないか確認してみます。
ご返事ありがとうございます。
pickit3のモード回答どおりに変換し、更に4.75vに変換すると記事通りに動作しました。解決方法を模索していただき本当にありがとうございます。
結果をご連絡いただきどうもありがとうございます。
黒いボタンを押すと、PICKit3のモードが初期状態に戻るようなので、何か違うモードになっていたのかもしれませんね。
あと、書き込み時の電圧は4.75Vということは、USBポートの容量の問題なのかもしれません。4.75Vで問題なければ、このあとの記事でも4.75Vで書き込みいただければと思います。
また何かわからないことがありましたらコメントいただければと思います。
大変分かりやすい説明に感謝しております。
マイコン・C言語ともに全くの初心者です。
基礎編を最後まで興味深く拝見して、実際に製作し、
自己流で プログラムを アレンジするなどして
楽しんでおります。
どうも スッキリしない疑問があります。
第17回で LED を点滅させる プログラム。
LATA5 = 0;
__delay_ms(950);
LATA5 = 1;
__delay_ms(50);
を While (1) { } に入れることで永久に点滅を繰り返す。
ここまでは理解できるのですが、
このWhile (1) { } を取り去った以下の コード。
LATA5 = 0;
__delay_ms(950);
LATA5 = 1;
__delay_ms(50);
この コードでは一回の「点灯」のみであり、
「 点滅」はしないように思われるのですが、
実際に書き込んでみると、LED が点滅を継続します。
基本的な知識不足による疑問かと思われますが、
よろしく お願い致します。
junjunさま、
ご質問どうもありがとうございます。
LEDを点滅させるプログラムからwhile(1){}を削除して、main関数の中には1回だけ点灯させるコードが書かれているはずなのに、実際に実行するとwhile文があるかのように正常に動作する、ということですよね。
非常に鋭い質問です!
このご質問の本質は、
main()
{
プログラムコード
}
というプログラムを書いたとき、プログラムコードは1回実行されるのはいいとしても、処理が最後の「}」まできたらPICマイコンはどうなるのか、という点になります。
実は、main()関数の処理が終わって最後の「}」までくると、最初の「{」から処理を開始するんです。これは今回のプログラムに限らず、PICマイコンプログラム全般に当てははまります。
では、繰り返し実行するコードであれば、main()関数の中に1回分の処理を書いておくだけでいいのではないか? という疑問が生まれます。
main関数の中に1回分のコードを書いてそれを繰り返し実行させると問題が出てきます。というのは、main関数の最初の方にはPICマイコンのピンの属性設定をしたり、周波数設定をしています。main関数を何度も実行するようにしてしまうと、これらのコードが毎回実行されることになってしまいます。これらのコードは処理自体は時間がかからないにしても、やはり処理時間はかかります。
そのため、main関数に点滅のコードを1回だけ書くようにしてmain関数を繰り返し実行すると、、、
PICマイコン初期設定
LEDを950ms消灯
LEDを50ms点灯
PICマイコン初期設定
LEDを950ms消灯
LEDを50ms点灯
PICマイコン初期設定
LEDを950ms消灯
LEDを50ms点灯
:
:
というように処理を繰り返してしまいますので、時間計測としては良くない処理になってしまいます。
逆に電源投入後に1回だけ処理させたい場合は、
main()
{
1回分の処理;
while(1){
}
}
というように最後に何も処理をしないwhile文を追加しないと、何度も実行してしまうことになります。
このようにいろいろと試されるのは非常にいいことだと思いますので、いろいろとプログラムを変更してご自分の理解を深めていただければと思います。
今後も何かわからないことなどございましたらご質問ください。
ご丁寧な解説 どうもありがとうございます。
胸の つかえが取れた気がします。
応用編の プチチャレンジ課題で つまずいて、
一旦 ここに戻り、思い切って質問させていただきました。
初級向けC言語の解説本では、
あまり触れられていない「無限ループ」や「空のループ」の
使用法を再認識することができました。
まだまだ色々疑問は残りますが、
深追いして迷路に迷い込むことなく、
とりあえず次に進んで、
実践編も コンプリートしたいと夢を膨らませております。
必要な パーツも既に手元に届いております (^v^)♪
これからも どうぞ宜しくお願い致します。
junjunさま、
早速のご確認どうもありがとうございました。
回答後に申し訳ございませんが一点捕捉させてください。
main関数自体を何度も繰り返すのはPICマイコンがそのような仕様になっているためで、例えばPC(Mac/Windows/Linux)でCプログラムを作成すると、main関数が終わるとプログラム処理そのものが終わりになりますので、その点をご留意いただければと思います。
実践編はまだ記事が途上ですが、早めに全部書く予定です。実践編もよろしくお願いします!
わからないことがありましたら、お気軽にご質問ください。
毎回 詳細な解説 ありがとうございます。
複数の LED を試してみたくなり、
RA0・RA1 ピンの使用について検討してみました。
そこで疑問が生じました。
TRISA により全ての ピン( RA3ピンを除く) が
出力モードとして設定されています。
PICkit3 から マイコンへ書き込む際には、
6・7番ピンを ICSPCLK・ICSPDATとして使用する為に、
TRISA の設定が オーバーライドされるという イメージで理解すれば
よろしいのでしょうか?
乱暴な言い方をすると、
「 出力ピンとして設定した ピンを用いて入力する 」とも言えそうな
気がしますが …… 。
また 6・7番ピンを ICSPCLK・ICSPDATとして使用する際には、
周辺回路と共用しない方が良いのでしょうか?
お忙しいところ、申し訳ありませんが、宜しくお願い致します。
junjunさま、
ご質問どうもありがとうございます。
PICKitからPICマイコンに書き込む際、PICマイコンは通常のプログラム実行モードとは異なるプログラム書き込みモードになり、ICSPCLKとICSPDATピンはプログラム専用ピンになります。
TRISAの設定はプログラムが開始してから(main関数が実行されてから)設定されますので、TRISAがオーバーライドされる、ということにはなりません。プログラム書き込みモードはそもそもプログラムは動作していませんので、main関数での設定は実行されていません。
また、ICSPCLKとICSPDATピンですが、この新しいシリーズでは説明を省略しましたが、古いシリーズには説明しておりますのでご参照いただければと思います。
https://tool-lab.com/make/macpic-startup-28/
早速の ご回答どうもありがとうございます。
「 ピンの有効活用方法 」を拝見して、色々な疑問が
解消できました。
実践編で登場する 16F18857 を使用すれば、
回路設計に大幅な余裕ができるのは分かっているのですが、
12F1822 にも愛着が沸いてきました。
これからも宜しくお願い致します。
こんにちは
第一回から記事を見させていただいております。pic初心者の者です。
書き込みボタンを押しましたが、
PICkit 3 is trying to supply 5.000000 volts from the USB port, but the target VDD is measured to be 4.750000 volts. This could be due to the USB port power capabilities or the target circuitry affecting the measured VDD.
The target circuit may require more power than the debug tool can provide. An external power supply might be necessary.
Connection Failed.
と表示されました。
ノートパソコンでやっていますが、電圧が不足しているということでよろしいでしょうか。
ご指導いただけますと幸いです。
よろしくお願いします。
けんけんさま、
ご質問どうもありがとうございます。
このメッセージは、原因が不明なことが多いので、大変お手数ですがいくつか確認していただければと思います。このメッセージは、本当に電圧が取れないこともあるのですが、他の原因の可能性もあるので、何通りかの手順をご確認いただければと思います。
A) PCのUSBポートに他のUSB機器は接続していますでしょうか。その場合、PCに接続する機器はPICKit3のみにしてどうなるかご確認お願いできますでしょうか。
B) PCのUSBポートにPICKit3のみ接続している場合、PICKit3を接続するタイミングを、PC起動前、PC起動後のパターンでご確認いただけますでしょうか。
C) PCの再起動などでも同じメッセージが出る場合、以下の手順でどうなるかご確認お願いできますでしょうか。
1) PCを起動、PICKit3をUSBケーブルでPCに接続
2) MPLABX IDEを立ち上げる
3) プロジェクト名を右クリックして「Properties」を選択
4) Categoriesの「Conf:[default]」を選択 (おそらく選択済みのはず)
5) 右側の領域のHardware Tool → PICKit3に「SN:xxxxxxxx」(xはPICKit3のシリアルナンバー)が表示されているので、それを選択
6) OKボタンをクリックしてPropertiesダイアログを閉じる
7) ビルド、書き込み
A〜Cの項目をご確認いただければと思います。
ところで、こちらのシリーズはPIC12F683を使用したものですが、このあと、PIC12F1822を使用してさらに色々な機能を説明しています。PIC12F683をPIC12F1822に置き換えれば動作させることができますので、以下のシリーズもご参照いただければと思います。
「PICマイコン電子工作入門 〜基礎編」
http://tool-lab.com/make-course/picbasic/
「PICマイコン電子工作入門 〜応用編」
http://tool-lab.com/make-course/picapp/
ご返信感謝します!!
そのエラーについてですが、usbが4.75ボルトしかなかったのでプロパティ→pickit3→power→voltage levelを4.75ボルトにしたらうまくいきました!!
様々な解決方法をご提案してくださったこと誠に感謝しております。
ありがとうございました!!
けんけんさま、
的確な回答ができずに申し訳ございませんでした。4.75Vのエラーはよく見られるのですが、実際に電圧が低いというケースは少ないので、的外れな回答になってしまい申し訳ございませんでした。
今回は実際に4.75Vだったということで、私の方でも、このようなケースがある、ということで勉強になりました。ご質問いただきどうもありがとうございました!
こんにちは 最近picマイコンをはじめた者です。
pic16f628aを使って貴サイトと同じことをしようとしています。
xc16 compilerをダウンロードしたのですがMPLAB X IDEのselect compilerに反映されずコンパイルすることが出来ないです。
何かやるべき操作を忘れているのでしょうか?
こんにちは。ご質問どうもありがとうございます。
結論としては、PIC16F628Aは8-bitですのでXC8が必要になります。XC8をダウンロード、インストールするとSelect Compilerの欄に出てくると思います。
かなりややこしいのですが、PICマイコンのアーキテクチャは以下のようになっています。
[8-bitマイコン]
PIC10, 12, 16, 18
[16-bitマイコン]
PIC24, dsPIC30, dsPIC33
[32-bitマイコン]
PIC32
またコンパイラは、XC8が8-bit用、XC16が16-bit用、XC32が32-bit用になります。
自分も最初の頃は同じ勘違いをしました。ただ、いちいち調べるのは面倒なので、XC8, 16, 32のコンパイラは全てインストールするようにしています。全てインストールされていると、必要なコンパイラが「Select Compiler」に表示されるようになります。(そもそも全部入りの1つのコンパイラを作ればいいのに、という気もしますが…)
それにしても、PICの型番の数字は紛らわしいですよね。特にPIC32は32-bitなのに、前後の数字のものは16-bitというのはわざと難しくしてるようにな気もします。スタバで注文するときの難しさに似ているような気もしますが、逆にパパッとわかるようになると、スタバでそうであるようにドヤ顔できるのかもしれません。
素早い丁寧な返信ありがとうございます。
なるほど、、、一応データシートは目を通したのですがpic16fの数字に惑わされていました。
アドバイス通り全てのコンパイラをインストールしてみます(笑)
はい、また何かわからないことありましたらご質問いただければと思います。
初めまして、電子工作を始めてみたいと思い様々なサイトを探してみましたが、このサイトが一番わかりやすく助かっています。 いつもわかりやすい記事を作っていただきありがとうございます
今回ビルドが失敗するので、質問させていただきたいと思います
MPLAB文のout putがこうなり、成功しません。
//ここから
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory ‘C:/Users/reud/MPLABXProjects/tf.X’
make -f nbproject/Makefile-default.mk dist/default/production/tf.X.production.hex
make[2]: Entering directory ‘C:/Users/reud/MPLABXProjects/tf.X’
“C:Program Files (x86)Microchipxc8v1.42binxc8.exe” –pass1 –chip=12F1822 -Q -G –double=24 –float=24 –opt=+asm,+asmfile,-speed,+space,-debug,-local –addrqual=ignore –mode=free -P -N255 –warn=-3 –asmlist -DXPRJ_default=default –summary=default,-psect,-class,+mem,-hex,-file –output=default,-inhx032 –runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib –output=-mcof,+elf:multilocs –stack=compiled:auto:auto “–errformat=%f:%l: error: (%n) %s” “–warnformat=%f:%l: warning: (%n) %s” “–msgformat=%f:%l: advisory: (%n) %s” -obuild/default/production/newmain.p1 newmain.c
:: error: (141) can’t open cpp.exe command file “C:UsersreudAppDataLocalTemp;C:Usersreud.atompackagescpp_s8j0.cmd”: Invalid argument
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target ‘build/default/production/newmain.p1’ failed
make[2]: *** [build/default/production/newmain.p1] Error 1
make[1]: *** [.build-conf] Error 2
make[2]: Leaving directory ‘C:/Users/reud/MPLABXProjects/tf.X’
make: *** [.build-impl] Error 2
nbproject/Makefile-default.mk:90: recipe for target ‘.build-conf’ failed
make[1]: Leaving directory ‘C:/Users/reud/MPLABXProjects/tf.X’
nbproject/Makefile-impl.mk:39: recipe for target ‘.build-impl’ failed
BUILD FAILED (exit value 2, total time: 970ms)
//ここまで
一応言われた通りに動かしています。
自分で解決しようと色々調べて、error(141)の部分でなぜかatomファイルのパスが見えたのでこれが悪い事してると思い.atomファイルを削除しましたが何も変わりませんでした。
よろしければ、解決方法とcpp.exeの解説、エラー内容をご教授していただきたいです。宜しくお願いいたします
//追記です
最初はLED_flashでプロジェクトを作成しましたが今と同じくエラーが出たため、tfというプロジェクト名にし、再度設定を確認を行いました
こんにちは。いつもありがとうございます。
サンプルプログラムで以下のコメントとプログラムについて、実際に動作させてみるとLEDが点灯することを確認しました。
// LEDを消灯する
LATA5 = 1;
引き続き読ませていただいています。
コメントどうもありがとうございます。
はい、何か不明な点がありましたらコメントいただければと思います。
こんにちは。このサイトで勉強しているマイコン初心者です。
プログラム内の39、40行目の
// LEDを消灯する
LATA5 = 1;
これは矛盾していませんか?
それとも自分の勘違いでしょうか…
はじめまして。
ご指摘どうもありがとうございました!
すみません、コメントとプログラムが一致していませんでした。初期設定としては消灯する、ということにしますので、
// LEDを消灯する
LATA5 = 0;
に変更しました。
コメントどうもありがとうございました!