初めてのPIC 0x22
■ このスレッドは過去ログ倉庫に格納されています
.
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問するときは…
・PICの型番と開発環境を明記しましょう。
・プログラムは、レス内に直接書き込まず下記を利用しましょう。
ttp://codepad.org/ ttps://pastebin.com/
・解決したら結果報告しましょう。
・ここはPICマイコンのスレです。AVRの自慢話は「AVRスレ」でお願いします。
回答者の先輩は…
・威張らず、偉そうにせず、上から目線にならず、優しく答えてあげましょう。
ハード、ソフト情報
・統合開発環境 MPLAB X ttp://www.microchip.com/mplab/mplab-x-ide
・コンパイラ(XC8 XC16 XC32) ttp://www.microchip.com/mplab/compilers(高機能版のみ有料)
・コード生成プラグイン(MCC) ttp://www.microchip.com/mplab/mplab-code-configurator
・マイクロチップ・ライブラリ(MLA) ttp://www.microchip.com/mplab/microchip-libraries-for-applications
・PIC一覧、スペック検索
ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
ttp://www.microchip.com/maps/microcontroller.aspx
・初心者はPIC16F1以降の型番で始めると無理なく始められます。
MCCを使えば、最初からPIC32で始めるのもありです。
・プログラムの書込みには書込器が必要です。
予算に応じてPICkit4、SNAPなどを購入しましょう。
ttp://akizukidenshi.com/catalog/g/gM-13854/
eBayやAliExpressで買えるPICkit3の中華クローンも十分な性能が報告されています。
直近スレのご案内
0x14 https://rio2016.5ch.net/test/read.cgi/denki/1560111789/ 2019/06/10〜
0x15 https://rio2016.5ch.net/test/read.cgi/denki/1567831628/ 2019/09/07〜
0x16-0x19 欠番です
0x20 https://rio2016.5ch.net/test/read.cgi/denki/1596523661/ 2020/08/04〜
0x21 https://rio2016.5ch.net/test/read.cgi/denki/1617716381/ 2021/04/06〜
では、質問どうぞ >>1
乙
最近エラーが出てスレ立てさせてもらえないw いるんだろうねえ
各所にアンチPICが湧いてるからお察し MPLAB, MCC, XC16 (以上全部無料)
あとPICKit4 があれば、PICの環境は全部整うので、手軽な部類だと思う。
仕事で使ってもいいと思うし。 >>6
多機能高性能不要な人向けの xc8 はあかんのか? いえいえ、XC8もよろしいと 思います。
16しか使わないので失礼しました >>8
それは安心しました。
16bit教徒なのかと思ってしまいました。
それにしてもドングル欲しい。 PICKit4 がちと高いけどね。
あんなもので儲けるなよって思ってしまう。 あれを高いと言うような乞食は相手にしてないんだろう
変に使われても程度の低いクレーム対応でマイナスになりそうだ 民生品のゲームみたいに大量に売れるわけでもない開発ツールで1万円程度で「儲けるなよ」は厳しい言い方。
SNAPもあるんだし、選択肢は提供されていると思う。 連枝ってPICでラダー組めるソフト使ってみてるんだけど…
多ピンの石使いたい場合フリー版だともはや化石の877しか使えないんです。
887に移植出来ればなぁ〜と思ってるけど無理かな…。 >>14
LDmicro ってのがある
887も対応してるみたい
使った事ないからどうなのか知らないけど
Arduinoでやるのが楽ちんなんかな >>13
デバイスを売るためのもの販促ツールみたいなもんだろ?って思ってしまうわ。
nucleoなんて切り離しても使えるST-Linkまでオマケでついてくるのにね。 STmicroはARMで先行していたNXPに追いつくのに相当に戦略的な拡販を進めたしね。
今後Microchipが強い拡販の動機を持ったときには同じように評価・環境ツールが安くなるかも。 サイプレスみたいにPSoC4の評価ボードのライターとしてPSoC5が載っているなんていう逆転現象が起きているのもちと笑えたりするけど。 教えて下さい。
秋月で買った16f1454でusb hid使いたいのだけど、MCCではサポートしていないのかな? >>20
usb CDCとVenderしか出てこなくて、HIDのやり方がわからないんです。
説明不足ですみません。 SeeeduinoのSAMDなるものがあってな、
ってMicrochipだけどPIC違うか Cythonがそういう方向も志向してるんじゃなかったか。知らんけど。
でもいくらなんでも8ビットPICはしんどいような。 小物をちょろっと作るのにはいいけど、
MPLABがしんどいわ。 Pythonってインタプリタじゃないのか?
テキストと実行エンジンを載せるとROMが足りなくなると思うんだが。 xc8って、PROライセンスでないと inline 函数は機能しないのですね。
例えばI2Cの初期化函数なんて一度しか実行しないんだから、inline化して呼び出しのオーバーヘッドを減らしたかったのに。
結局、#define で対応する羽目に。 一度しか実行しない関数をインライン化して、どれぐらいのオーバーヘッドを減らせられるんだろう。
ほぼ気持ちの問題みたいな気がする。 >>35
BME280 というセンサーを 8pin の PIC12F1840 で扱おうとしてるのですが、
センサーから読みとった値を式変換して表示するだけでプログラム領域を約70%使っていて、
少しでも減らしたいのです。
プログラムが入らなくなったら、諦めて14pin PIC の使用を考えます。
PIC16F18115 はまだ手に入らないし。 >>37
プログラム領域を約70%使っていて、
7kBもあるのに? 浮動小数点を使ってるとかsprintfを使ってるとか。しらんけど。 8bitパソコンで鍛えた演算テクニックが火を吹くぜw >>37
PIC16で浮動小数点演算有効にしたら、かなりメモリーを喰う。 そんなもん使うのか・・・
まあPICも人それぞれってことか。
UARTで出した先で演算できればそれがいいんだが。 演算パッケージ(演算できるCPU)がUARTを持っていれば、PICと接続して使える。 あ、でもその演算できるCPUがPICの作業分まで負担すればPICなんかいらないかw センサーから読みとった値を式変換して表示するだけで何kW消費するつもりよw >>45,46
少しROMの容量大きなPICで良くね?
あとコンパイラのオプションで浮動小数点の精度落すと少し速度と容量の節約になる(豆) >>46
そういうこと。無理にPICを使うこともない ROMが大きいという理由でPIC24とかPIC32とか使わないの? 仕様を満たせるなら各自使いたいCPUを使えばいい。 >>48
浮動小数点必要なら、素直にPIC24以上を使った方が良い。 >>51
PIC32使うくらいなら、ARMにしようなかな?ってなる人も多そうだけどね。
下はCortex-Mから、上はスパコンまでARMだし、「とりあえずARM」なんて感じで。 >>54
ARMの方が良いかもしれないなあ
PICKITで書き込めれば尚の事 ARMだとJTAG/SWDデバッガがつかえたりするけどね。オープンソースのBlack Magic Probeとか。
STM32のnucleoのST-Linkみたいにみたいにデバッガがボードにオマケでついてきたり、ブートローダを内蔵してたりするのも結構あるよね。 初心者ですが教えてください。
PICでロータリーエンコーダーのA相とB相の回転パルスを取り込んで
車輪の回転から距離を出したいと思います。
前後回転もあるので数値はプラスとマイナスになります。
メインでその変数を参照して、12345だから5.9mとか知りたいです。
ネットで検索してもダイヤルのエンコーダーしか出てきません。
H8には位相計数モードがあってハードで増減してくれるようです。
質問なんですが
メインでは無く見かけ上バックグラウンドで計数したいのですが、
PICでやるときはタイマー割込みを使うしかないのでしょうか。
A相の↑用、↓用として外部割り込みを2本使用して
同じ変数名をインクリ、デックリする方法はできるでしょうか?
それかPICに位相計数モードを内蔵したPICはありますか? PiCじゃないけど外部割り込みで検出とカウントやってるよ。
チャタリング対策はちゃんとしような。 >ネットで検索してもダイヤルのエンコーダーしか出てきません。
最後の長音記号とって「PIC ロータリーエンコーダ」で検索してご覧 >>57
QEI 機能がロータリーエンコーダーカウントののっかったPIC
ハードウェアでカウントしたり、カウント値で割り込みかけたり
モーター制御に便利、カウンタも32bitとかあるから重宝する
dsPICとかPIC32MKにある
で、8bitPICだとIO状態変化割込みかけて
割込み掛かった時に、前の割込み時のAB相の状態と比較して
カウントアップしたりカウントダウンするプログラムを
書いたりしてやる みなさん、ありがとうございました。
>>60
キーワードを知りませんでした。
教えてくださって、ありがとうございました。
探してみます。 趣味人も多い電気電子界隈でも、比較的アカデミックな色彩が強い文化圏でだと、
三音以上の場合には最後の長音を省くという文化があるんよな。。。
うろ覚えだけど 文部省(当時)が学術用語なんたらの指針で云々というハナシだったような。
(ならなんでロータリーはロータリじゃないのかというハナシも もっともだが;なんでなんだろな;^p^) そう言うの無意味だからやめろ。 検索も長音の有無くらいで結果変わったりしない。 まじすか・・・僕がグーグル先生に頼って検索したときに割り込みで
実装している例も上位にヒットしたのはキーワードじゃなかったのか
アポリアの所在を誤認しましたサーセン(^p^;) >>57
私が前に秋月で購入した、クリック有りREを使ったときは、
A相ON割り込みを許可
・A相ON割り込み処理
B相のON/OFFレベルに従ってCW/CCWフラグの何れかをセット
A相ON割り込みを禁止
タイマ割り込みを起動
(チャタリング時間より十分に長く、最速のA相パルス幅より十分に短く)
・タイマ割り込み処理
タイマ割り込みを禁止
A相ON割り込み(フラグをクリアして)を許可
メインループではCW/CCWフラグをポーリングでチェックして
立っていたら必用な処理を実行
使用するREによって変ってくると思うので、まずはREの説明書を何度も読み、
次にREを手で回しながら、オシロスコープでA/B相波形を10分位眺めつつ、構想を練るw 安いロータリーエンコーダの場合は接点が摺動するから普通のON/OFFスイッチの
ように切り替わりのときだけチャタリングが出るんじゃなくて途中でもグリッチ
が出る。
周期割り込みでONならカウンタをプラスOFFならカウンタをマイナスして適宜
スレッショルドを切り替えるみたいなやり方でチャタリングを取るのがいいと思う。
光電式の数千円するようなロータリーエンコーダならチャタリングも出ないけど
安いのを使うにはそれなりの工夫が必要だね。 どこの安モンだよ
十種は扱ったが中華のインクリメンタルエンコーダーでも
そんなんお目にかかった事ない。
ウイグル人が強制労働で震える手で作った奴? >>67
最初は良くてもあっという間に…
いくら中国上げの工作員を送り込んでも
それが中華クオリティ え? それはつまり、某人民の共和国でゲットしたピカチュ〇は外形がちょっと違ってても
電圧値がちょっと怪しいだけだろうと思って油断してたら、PIC PICした瀕死なウイグル人の呪いで
ある日突然煙を吹いて 爆発することがありえるということですか!? にわかには信じがたいんですけど!! xc8 って、PRO ライセンスだと最適化 -O2 より2割から3割くらい小さくなるのな。
その為だけに 20 万円強も金出せないけど。 XC8ってHITECH-Cとなんか関係あるんだったっけ? >>71-72
異なるマイコン、コンパイラの組み合わせで、どこまでの最適化が無料かどうかを比較する意味あるんかいな。 CLCってどういう使い方があるのですか? 使う機会が無い。 複数の信号の条件が成立したときに割り込みをかけたり、タイマーを
動かしたり。パルス出力を外部条件でON/OFFするのにも使える。
条件の判定をプログラムでやると遅延や応答のジッタが大きくなるけれど
ハードウェアでなら最小にできる。
CLCがない場合は、マイコン外部にロジック回路を追加することになる。 最近の動向を全然調べていなかったけど
ご発言を拝読するに、あれか? PICにFPGAが搭載され始めたのかな?
日進月歩とは言うけれど、すごい時代になったもんやなぁ・・・ SFRで制御できるLUT、MUX、FFがいくつかあるだけでFPGAとはレベルが違う CPLDで最小のものとなると32レジスタぐらいだと思うけれど、CLCは1つで1レジスタだし、
2個搭載でも、最小のCPLDの 1/16 だしね。
だから、それでオリジナルなカウンタとかステートマシンはしんどい。
グルーロジックみたいなものだと思えば。 後発のものは程度の差こそあれ、たいてい既存のものの要素を含むもの。
わざわざ「真似」という悪いイメージをともなう言葉を使うのはなんだろな。
うっかりすると、元祖こそが至高、という発想に陥るよ。 >>80
マイコンに内蔵されてると、CCPとかタイマーとかSPIとかの機能を組み合せるのに便利 Microchip、組込制御エンジニア向けオンライン講座の日本語提供を開始 | TECH+
ttps://news.mynavi.jp/techplus/article/20220111-2247204/ >>83
合法的に真似たなら「真似」で良いじゃん。なんら違法な物ではないのだし。
静電容量式タッチセンサーが本格的に民生機器で使われるようになったのにもPSoCは貢献したし、GUIでペリフェラルの設定をすると初期化コードとかライブラリが自動生成されるとかいった、開発環境なども含めてPSoCが与えた影響は大きかったなってね。
あのくらいサービスのいいものを提供してほしいなあとは思うわ。 小池さんがラーメン以外を美味しいとは思わないのと同じで、
うっかりすると人間って使い慣れた環境が一番良い環境だと思うものさ。
比較の議論をしたいなら、比較スレに行ってどうぞ。 別に比較の議論なんかする気はないな。
でも、あの内部レジスタのドキュメントが一切不要な便利さは導入してほしいなとは思う。 メーカーに言うべきことを他社を引き合いにPICスレに書いておいて「別に比較の議論なんかする気はない」 初心者です。PICを使った基板を作ろうと、回路図を書いているのですが、
ピンの割り付けでわからないことがあります。
マイコンはdsPIC33EP128ですが、質問教えてください。
昔と違って、今はI/Oピンの位置が変更できるようです。
リマッパブルピンと言うようですが、中には固定のピンもあります。
どのピンが固定で、どのピンが変更可能なのかが知りたいのです。
データシートを見ると「OUTPUT SELECTION FOR REMAPPABLE PINS (RPn)」
という表があり、その中に U1TXとか OC1とか SDO1 とか書かれています。
これら この表に書かれているピンは、場所変更可能で
この表に書かれていない機能ピンは固定のピンである、と考えれば良いのでしょうか。
あと、表の中に「DEFAULT PORT」と書かれているのですが、
これは通常のGPIOのことであり、GPIOは全て変更可能である、
と考えれば良いのでしょうか? >>91
概ねあってると思う
MPLAB X IDEにMCCのプラグイン入れたらGUIで確認(設定)出来るので組み合わせ試してみて >>92
ありがとうございました。
やってみました。配置可能なポートには、色が付いて分かりやすいですね。
どうもありがとうございました。
すみません、もう一つ教えてください。
PKOB とは、何でしょうか?
PicKit On the Board の略なのだそうですが、
検索してもズバリの説明にたどり着けませんでした。
BootLoaderとは違うのか、気になってしまいました。 >>93
恐らく開発ボードでpickitを内蔵してる機能的名称かと思います
https://microchipdeveloper.com/boards:explorer1632
PICkit On Board (PKOB)
このボードの回路図を見たら該当する部分にはpickit3に類似した物(一部機能が省略)が装着されてるみたいです >>94
ありがとうございます。
確かにご紹介のページの表ボードに、マイクロBのコネクタが付いたコネクタがありますね。
ブートローダーがソフト的にPICKitを省いてくれるなら、PKOBはハード的にPICKitを省略してくれる感じですね。
ありがとうございます。
ちなみにそのページにある評価ボードの左上角にある1列のホールって
穴の配置が千鳥に見えるのですが、何かの間違いでしょうかね。
どうもありがとうございました。 初めてのMCCで教えてください
USB内蔵のPIC24Fで、ゼロから自分で作ったプログラムがあります。
これにUSB機能を追加したいと思います。
外部にFT243...などのICをつけるのではなく、
内蔵USBモジュールを使用したいです。
さすがにUSBを自分で作るのは辛いので、
MCCを使いたいです。
このように、既存のプログラムに、
あとでMCCで機能追加をすると
MCCによって既存の部分が壊されて、
既存の部分が動かなくなってしまうのでしょうか?
例えば、MCCで生成した変数名が
既存の変数名と同じになってしまうとか、
UART1を既存側で使用済みなのに、
MCCがそのピンを使用してしまうとか、
発生しないのでしょうか?
MCCが生成するとき、既存の状況を全部調べた上で、
回避するのでしょうか? >>96
MCCの出力するコードの多くはそれほど干渉しない
基本的な部分(システムクロック・割り込み・ピン状態等)の設定があり
それ以外は機能を追加しないと影響が出ない、MCCから各機能を追加すると周辺モジュール等が設定(にて初期化)される
質問の回答を待つより試した方が早いと思う
1からPICのレジスタを操作できる位の知識・経験があればMCCがどのように機能するかはすぐに理解できると思う
つまり、手機能なプロジェクトを作成してMCCがどのようなコードを出力するのかを見て理解した方が早いと思う
また、現在作成したプロジェクトをバックアップしてMCCを後から追加した場合にどのような干渉を受けるかを試した方が早いと思う
>>MCCがそのピンを使用してしまうとか
これに関してはPPSに対応してればGUIで使用するピンを選択できる
また、PPSに対応してない場合は干渉する機能をONにした場合はそのピンを使用する動きをする
>>MCCが生成するとき、既存の状況を全部調べた上で
そのような機能は無くMCCに設定されてる変数名(関数名)にて作成される
つまり、MCCは設定・コード作成を行うと見える形(コードとして)出力されるので
ある程度マイコンを扱える人ならそれがどのように機能してるかがすぐに理解できる
実際に試した方が理解・判断するのに早いと思う MCCでUSBと必要な周辺だけ有効にしたソース生成してから
自分で作った部分を貼ればよいのでは? あ、必要な周辺ってのはHIDやCDCなどのクラスドライバーの事です。 >>97 〜 >>99
どうもありがとうございました。
確かに試せばよいですね。すみません。
MCCは何か怖いイメージがあるんです。
MCCを使って〇〇が簡単にできちゃう」のようなサイトは、
まずMCCからスタートしてますが、過去の(あるいは今動いている)ソースに
機能追加する事例が見つからなかったので、助かりました。
MCCが最初で、そのあと自分のやつを貼り込むというのもありですね。
ただ、貼り込んで動くようにしたあとで、また何かの機能をMCCで追加するとき
同じことが発生すると思います。
お話を聞いて考えるに、指定された機能を、単に「機械的にソースリストを作るだけ」の感じですね。
ありがとうございました。一度苦労してみます。 ■ このスレッドは過去ログ倉庫に格納されています