問題タブ [mplab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
20317 参照

microcontroller - PIC18の入力ピンの状態の読み取り

PICで出力を動作させることができ、さまざまな出力ラッチをハイ/ローに設定すると、LEDの束をオンとオフで踊らせることができます。しかし、ピンの状態で読むのが大変です。

以下のコードを参照してください。構成を設定し、TRISCを入力として定義し、TRISBを出力として定義します。無限ループでは、RC6がハイかローかを確認し、結果に応じてBラッチ全体をハイまたはローに設定します。

コードは警告やエラーなしで正常にコンパイルされます。コードロジックが単にラッチをハイとローに設定している場合、それは正常に機能しますが、ピンの状態を正常に読み取ることができませんでした。

何か案は?

PIC18F14K50とMPLABv8.43、およびHiTechANSICコンパイラを使用しています。

私の接続は、VDD(ピン1)への+ 5V、アースへのVSS(ピン20)です。+ 5VからC6(ピン8)まで、100Kの抵抗とB7(ピン10)からグランドまでのLEDがあります。RC6を切り替えるには、ワイヤーをC6に接続/切断します。

0 投票する
3 に答える
9342 参照

c - PIC18Fでの遅延

HiTechANSICコンパイラとMPLABv8.43でPIC18F14K50を使用しています。遅延機能を除いて、私のPICコードはようやく稼働し、機能しています。これは私のアプリケーションにとって非常に重要です。特定のミリ秒、秒、または分数の間、特定の状態にある必要があります。

私はこれの解決策を約2週間探していましたが、これまでのところ成功していません。私はあきらめてasm("nop");、ループ内で独自の遅延関数を作成しましたが、これは非常に予測できない結果をもたらします。0.5秒または5秒待つように指示すると、十分に正確に機能します。しかし、10分間のように、もっと長く待つように指示するとすぐに、遅延は約10〜20秒しか続かず、2分以上は500ミリ秒の遅延よりも短い瞬きになります。

これが私の設定ヒューズとwait()機能です:

私が言ったように、私がそれwait(500)まで電話をかけるとwait(30000)、私が興味を持っている許容範囲内で0.5秒から30秒の遅延が発生します-しかし、私が電話をかけるとwait(600000)、私が期待するように10分の遅延は発生しませんが、むしろ約10〜15秒で、wait(120000)2分の遅延はありませんが、すばやく点滅します。

__delay_ms()理想的には、組み込み関数を機能させて、自分の内部から呼び出されるようにしたいのですがwait()、これでは成功していません。私がそうしようとすると#include <delay.h>、MPLABはそのようなファイルやディレクトリがないと文句を言います。HiTechサンプルのdelay.hを見ると、DelayUs(unsigned char)定義済みのextern void DelayMs(unsigned char)ものとまだ試したことがないものがありますが、externをCコードに直接入れようとすると、リンク時に未定義のシンボルエラーが発生します。

短から中程度の遅延と長い遅延の間の不一致は意味がありません。私が持っている唯一の説明は、コンパイラがNOPか何かを最適化したということです。

私が言ったように、それは上記の構成のヒューズを備えたPIC18F14K50です。PICの経験はあまりありませんが、この設定では4MHzで動作していると思います。

ライブラリやマクロの外部関数、またはNOPを使用した手書き関数に満足しています。必要なのは、1分あたり数秒程度の精度であるということだけです。

0 投票する
2 に答える
1766 参照

assembly - サブルーチンからの復帰が PIC18 で機能しない

wreg の設定ビット数をカウントするサブルーチンを書いていますが、サブプログラムの最後で return ステートメントに到達すると、return ステートメントを際限なく繰り返すだけです。私はPICとアセンブリに慣れていないので、ばかげたことをしただけだと確信していますが、まだ解決できていません。どんな助けでも大歓迎です。

これが私のコードです:

0 投票する
3 に答える
518 参照

variables - MPLab / Cprg/変数

MPLab V8.43をインストールし、プログラミング用のC18コンパイラをインストールしました。小さなテストコードを作成しようとすると、最初の変数宣言で停止します。構文があると書いてあります。

私には間違って見えません...unsignedcharcounter[1]としてもそれを行いました。それでも構文エラーが返ってきました。何が得られますか?何か案は?

0 投票する
1 に答える
2673 参照

header-files - MPLabC18v3.41ヘッダーファイル

私は初心者なので、簡単に。

XLCD.hヘッダーとDelays.hヘッダーを使用するインストラクターから提供されたLCDテストプログラムを作成しようとしています。問題は、コンパイラーが関数が定義されていないというエラーを私に投げ続けているため、ビルドプロセス中にヘッダーがリンクされていないように見えることです。

MPLINK 4.42、リンカーデバイスデータベースバージョン1.7 Copyright(c)1998-2011 MicrochipTechnologyInc.エラー-ファイル'./LCD_Main.o'にシンボル'SetDDRamAddr'の定義が見つかりませんでした。エラー:1

プロジェクトウィザードを使用してチップを選択しました...チップに.lnkファイルを追加し、xlcdとdelaysに.hファイルを追加し、p18cxxx.hファイルを追加しました。
テストコードは試され、真です。一番上で#includeを実行し、ファイルを同じディレクトリに配置してから#include "xlcd.h"を使用しましたが、何も機能しないようです。

はい、構文にエラーがないかダブルトリプルチェックし、最終的にはヘッダーファイルからmain.cにコピーして貼り付けただけなので、そうではありません。

エラーを見ると、プロトタイプのみが表示され、定義された関数は表示されていないように見えます。それはすべてバックグラウンドで魔法を使って行われたと思っていたので、パスをチェックする方法や、それが起こっているかどうかさえわかりません。

全体が少しウォークスルーなので、簡単なはずだと思いましたが、そうではありません。

簡単な修正に違いないと思いますが、私はこれに何時間も取り組んでおり、部屋の向こう側に愚かなプロトボードとPICをドロップキックする準備をしています。

誰かが私が間違っている可能性があることを知っていますか?

ありがとう

0 投票する
2 に答える
10385 参照

c - MPLAB X IDE を使用してライブラリ プロジェクトでグローバル変数を作成する方法

MPLAB X IDE (PIC 開発用 IDE) を使用して C 言語でライブラリを作成したいと考えています。

私のライブラリ ABCLib には、次のような単純なソース ファイルが 1 つあります。

ファイル abc.c

MyProject でこのライブラリを使用するには、MyProject ヘッダー フォルダー内に abc.h を作成する必要があります。

ファイルabc.h

ファイル MyProject.c(メインファイル)

ここで、n をグローバル変数として保存したいので、abcTest() を呼び出した後、必要な場所で n の値を取得できます。

すべてのプロジェクトで再利用することを意図してライブラリを開発しています。

0 投票する
1 に答える
1446 参照

usb - Microchip PIC (MPLAB/C18) の USB HID コードのリンカ エラー

基本的な USB HID 機能のコードをコンパイルしようとしています。MPLAB 8.43 と Microchip C18 コンパイラを搭載した PIC18F14K50 を使用しています。

Microchip の Web サイトからいくつかの標準ファイルを使用しています。ここに私の C ファイルがあり、ここにヘッダー ファイルがあります

ビルド時に次のエラーが発生します。

実行中: "C:\Program Files\Microchip\mplabc18\v3.40\bin\mplink.exe" /p18F14K50 /l"C:\MCC18\lib" /k"C:\MCC18\bin\LKR" "usb_function_hid. o" "usb_device.o" "enumeration.o" "usb_descriptors.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.cof" /M" C:\LPCUSBDK_Labs\Lab1_files\output\Project Lab 1.map" /W

MPLINK 4.40、リンカー

デバイス データベース バージョン 1.3

Copyright (c) 1998-2011 Microchip Technology Inc.

エラー - ファイル「./usb_function_hid.o」にシンボル「HIDDescriptor1」の定義が見つかりませんでした。

エラー: 1

リンク ステップに失敗しました。

このHIDDescriptor1記号は、コード内の 2 つの場所 (C ファイルの PasteBin 行 173 とヘッダー ファイルの PasteBin 行 356) に表示されます。

このコードは、Microchip から直接提供されています。リンクしない理由がわかりません。コンパイラの別のバージョン用に設計されているか、外部依存関係が欠落しているか、コンパイラ/リンカー スイッチが欠落していると思います。

これを構築するために何をする必要があるかについてのアイデアはありますか?

0 投票する
2 に答える
34827 参照

include - MPLABXIDEで外部ヘッダーファイルを使用する

いくつかの.hファイルと.cファイルを含むフォルダーがあり、プロジェクトでヘッダーファイルを使用したいと思います。

「既存のアイテムの追加」を使用してプロジェクトの「ヘッダーファイル」フォルダーにそれらを含めましたが、「#include」しようとすると、コンパイラ(mplabc18 \ v3.41)は「ファイルxyz.hが見つかりません」と言います。

では、これらのファイルをプロジェクトフォルダーにコピーせずに使用するにはどうすればよいですか?