初めてのPIC 0x22
レス数が1000を超えています。これ以上書き込みはできません。
.
_ _ 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で追加するとき
同じことが発生すると思います。
お話を聞いて考えるに、指定された機能を、単に「機械的にソースリストを作るだけ」の感じですね。
ありがとうございました。一度苦労してみます。 質問です
MPLAB Xの画面の左上のプロジェクトウインドウに
ヘッダーファイルとかソースファイルとかのツリーが出ていますが、
ここにおいてあるものをRemove from ProjectでRemoveしても
コンパイルが通るのはなぜですか?
プロジェクトウインドウのツリーに表示されているものを対象にして、コンパイルするものだと思っていたら、
全部removeしてツリーには何1つない状態でもコンパイルできるのです。
プロジェクトフォルダーの中に実体はあるので、それで実施できるのだと思いますが、
そうだとしたらなぜプロジェクトツリーにファイル名を表示するのでしょうか?
初めからプロジェクトウインドウは要らないのではないでしょうか。 >>102
手元のPCにMPLAB Xが入ってないので確認できないのだけど、
ビルドが完了したプロジェクトで、Removeしたヘッダーファイルだけを
外部エディタで修正保存したときに、ビルドをかけたら、依存するソースの
コンパイルが起きるでしょうか。
プロジェクトに含まれるヘッダーファイルを変更したら、ビルドをかけたときに、
依存するソースのコンパイルが発生するはずです。 プロジェクトツリーRemoveで
Makeファイルが更新されないって事だろ
プロジェクトの設定開いて、OK押したら更新されるんと違うかな
知らんけど >>102
そのツリーにファイルが現れていないと、
MPLABのテキストエディターでソースが開けないからだと思う。
外部エディタでやっているならツリーの表示は無くてもいいかも core i7 第2世代のPCを使っています。
MPLAB Xの起動に、1分近くかかるのですが、第8世代とかだと、もっと速いでしょうか? 起動遅いよね〜
遅いからブラウザ立ち上げて
ネット記事読んでると、立ち上がって記事読むの邪魔しやがる
その後は、暫く時間が経過してから
アップデートのメッセージがポンポン邪魔しに出やがる
嫌がらせで
わざとやってるのかね >>109
僕のパソコンで、
1番容量のデカいソフト、それがMPLAB X。
本当に、もっさり。 もうCore2Duoの時代は終わったんだよお爺さんたち。
さっさとPC屋に行ってCore I5,4コア8GB,SSDの量産ビジネスノートでも買ってきたら? >>111
今どきオワコンPICなんか使ってるのはジジイしかいないな >1番容量のデカいソフト、それがMPLAB X。
いろいろなマイコンやFPGAのIDEを使ってると、こういう感覚にはならないのでは。
開発ツールはパソコンに大きいリソースを求めるのが当たり前になってきてます。
ストレスなく開発を楽しむなら、そこそこの投資はするべきです。 そうか?
考える時間の方が長いので、もっさりは気にならないけどな。
画面で脊髄反射コーディングやってるんじゃね? 同じバグのループだらけで・・・ 今まで気にしてなかったけどMPLAB X IDE 起動遅いね〜
初回起動で約22秒 再起動で約18秒
vscode + PlatformIO で 約10秒 再起動で約5秒
VisualStudio 約14秒 再起動で約11秒 起動早いな! 僕は席についてから仕事をやる気になるのに半日かかりますん(^p^) でもまあなんでNetBeansなんかにしちゃったんだろうね… 起動するまでの時間なんてどうでもいい気がするが??? その後の動作の目安でしょに
俺のプロジェクトでは何秒とか言っても比較にならんわけ >>116
うちもほぼ>>116と同じだな
Visual Studioと比べても数秒遅い程度なので
MPLAB Xだけやり玉に挙げてる連中には「おま環」を恨めとしか言ってあげられないw まぁ、他のマイコンでvi+gcc+gdbなんていう環境でやってるのに
比べりゃ、そりゃ重たいに決まっている。 いまだにviみたいな古典的正統派えでたを愛用するうにっくすうーざーがいることを知り安堵したイイハナシダー(;ω;` Linuxのカーネル書いたリーナス君はMicro emacs愛用者だっけ。
わたしも昔MS-DOSで使ってたわ。 えむえすどす なら えどりん つかいましょーよー><; コマンド系使いこなしてる人って、
MDB使ってるの?
実機デバッグの時、重くて重くて、ムキーーー!ってなるから
どこかのエディタのプラグインにMDBと統合された物ないのかなぁ だから、デバッガをどうするかということも、マイコン選定の時の大きな配慮項目だよね。
重たくてデバッグもさっさとできないようでは効率悪くて仕方ない。 > デバッガをどうするか
自作すれば幸せになれるよw
私はこのCPUを使い続けるぞと決めたら自作してきた。
自作すればそのCPUを深く理解することが出来る。
また、さっと立ち上がってサクサク動くし、
訳の分らないトラブルや、自分で対応できないバグに悩まされることも無いし、
PC機種やOSが変わって動かなくなっても自分で対応できる。 古い物に固執する人もいれば
新しい物に飛びつく人もいる
人それぞれ
一つ言える事は
自分の話しかしない奴は
アホ >人それぞれ
と書いた後で
>自分の話しかしない奴は
>アホ
と書く自己矛盾に気付けない方がアホじゃね? そういうのもありだよね。
gdbさえ動けばgdb guiなりのGUIもあるからそれでいいやってこともあるだろうし。
昔、デバッガを独立させるためにタイムスライス化して、簡易アセンブラ、逆アセンブラ、ステップ実行やらバックトレースなんかもつけたりして遊んだな。
あれはあれで面白かった。 PIC初心者です。教えていただけないでしょうか。
初めてPICをやってみようと思って、手始めにdsPIC33EP256というICを秋月で買ってきました。
そして、回路を作ろうとしていますが、データーシートを読んでいたら、
質問が出てきたのです。この画像を見てください。
https://imgur.com/rXUD1dZ.jpg
発振回路の部分のペーシです。注意書きの2番に、XTやHSだったらここに1Mを付けなさいと読めます。
質問ですが、ほかのPICマイコンや他のメーカーのマイコンでは、
ここに水晶をつけると思いますが、この機種では水晶ではなくて抵抗で良いのでしょうか? >>133
ありがとうございます。ですから、注意書きの2番に...と書いたのですが。
>>134
ありがとうございます。本を見たらその型番はもう古いと書いてありました。
>>1に
MCCを使えば、最初からPIC32で始めるのもありです。
と書いてあったので、秋月で1番機能たくさんだし、足も多いので。 >>135
PIC32からでも良いと思います
一部ネガティブな発言は全てスルー推奨
高精度なクロックが必要なければピンには何もつながないで内蔵のクロックを使えば良いと思います まあ何を使ってもいいんだけど機能が多いとそれだけワナも多いから十分覚悟しといたほうがいい
それはともかくマイコンのクロック発振回路(PICではオシレータという言い方のほうが多い)はデフォルトで低消費電流モードになっているものが多い
高速のクロックにする場合は発振回路もある程度電流を流さないといけない、Configでこのあたりを切り替えられるものもあるがこのPICはConfigでの設定と同時に「クリスタルに並列に抵抗を接続しろ」と書いてあるようだ
発振回路の消費電流が増えるが動作周波数も高くなる
なお低速のクリスタル使用時はPIC内部の抵抗だけで足りるし外部に抵抗を付けると異常発振したりする可能性もある >>135
読んだ上で水晶要らないってのは都合のいい解釈じゃないですかね。
external parallel resistorと書いてありますし、
水晶と抵抗並列でしょう。 みなさんありがとうございました。
やはり水晶も付けるんですね。configでXTとかHSのモードを設定すれば、
帰還抵抗値もIC内部で変えてくれるものだと思っていました。
抵抗を水晶に後付けするのは、初めて見ました。16MHzの水晶をHSで動かして、
1Mを並列に付けることにします。
負荷容量は水晶のデータシートに20pFとありましたので、
39pFを2つ付けることにしました。
回路図を書いてから製作をしたいと思います。まだまだかかりますけど。
どうもありがとうございました。 半導体不足ヤベーわ
アカン、基板設計し直した方がはやいわ
悪いな〜dspic使わしてもらうわ〜 >>140
>Note 1: This data sheet summarizes the features of the dsPIC33EPXXXGP50X,
>dsPIC33EPXXXMC20X/50X and PIC24EPXXXGP/MC20X families of
>devices. It is not intended to be a comprehensive reference source. To
>complement the information in this data sheet, refer to “Oscillator”
>(www.microchip.com/DS70580) in the “dsPIC33/PIC24 Family ReferenceManual”.
https://ww1.microchip.com/downloads/en/DeviceDoc/70580C.pdf
これの7-18ページ mplab X XC 16でprintf()は使えないんですか?
エラーは出ないのにuartに送信してくれない。
stdioをどのように書き換えすればいいの? ググってヒットしただけなので内容が正しいかは知らんが
UARTでシリアル通信を使って標準出力を行う
https://www.usagi1975.com/201810121945/ >>144
いつも教えてくれてありがとう。
やってみる 初めまして。最近PIC(というか電子工作)を始めました。
PICを使って小手先温度計を自作しようとしています。秋月で扱っているK熱電対モジュールMAX31855
https://akizukidenshi.com/catalog/g/gM-08218/
を使ってSPI通信で値を読み込む計画です。
使用PICは PIC12F1840 I/P、読み取った結果は試作段階ではEUARTでパソコンに表示させています。
ですが、MAX31855から正しい値を読み取れません。4byteが0x0000や0xFFFFみたいな感じになります。
お助け下さい。
MAX31855はdatasheetから、SPI mode 0でImputDataSampleAtはMiddleと読みました。
(ここが違うかも知れませんが)
動作に関係しそうなレジスターは
OSCCON = 0x7A;LATA = 0x00;TRISA = 0x24;ANSELA = 0x00;APFCON = 0x84;SSP1STAT = 0x40;SSP1CON1 = 0x22;SSP1ADD = 0x0F;TRISAbits.TRISA1 = 0;
と設定しています。
MAX31855モジュールの接続は
CLK <--> PIC pin6 (SCK)
CS <--> GND (モジュール1つなので常にGND)
DO <--> PIC pin5 (SDO)
GND <--> GND
3.3 <--> (open)
Vin <--> VDD 5V
オシロスコープ DSO150 では、PICからSPIのクロックは出ているようですが、戻りのDO端子出力は 0V or 5V で固定されているように見えます。
以上。 >>146
MAX31855のモジュールはCSをHIGHにしてる間にレジスタが更新されて
CSがHIGH>LOWの切り替わりを起点に指定回数クロックを与えて読み込むんじゃない? >>147
有り難う御座います。
datasheet 9頁の右側に、CS high で更新と書いてありましたね。
CSピンを操作するのに PIC12F1840 ではピンが足りないので、14pin PIC で試してみます。 >>148
SPI通信ICのCSは、
チップセレクトであると同時に、
SPIの起点にもなる信号なので、
常時GNDではいけないです。
マイコンで制御してやる必要があります。
SPIインターフェースのピンがあるマイコンで、
CSが無くて困っていたら、CSは通常ポートでパタパタやる必要があると
教えてもらった。 KiCAD Ver5. を使っています。
回路図エディタで、図面上に文字を置くとき
'T'と打つと文字入力画面が出て、カーソルは文字入力ウインドウにいます。
なのでそのまますぐに文字が入力できます。
文字入力を終えてこれで決定しようとENTERキーすると、
文字入力ウインドウの中で改行するだけになります。
ALT+ENTERとか、CTRL+ENTERとかの複合キーで決定として
文字入力ウィンドウを閉じ、回路図に戻りたいのですが、
何かコツ(チップス)はありませんでしょうか
そうすると、100V 1A Akizuki とか打ちたいとき、
L
100V 1A Akizuki
CTRL+ENTER
で文字が置けて、速くて楽ちんになると思うのですが。 大して便利なようにも聞こえないんですが…
どうしてもってんなら私製ビルドでも如何ですか? すみません、スレ間違いました。
Shift+ENTERで実現できました。
どうもすみません。 146です。
CSピンをhigh/lowしたら、無事にMAX31855から値を読めました。
有り難う御座いました。 今更だけど、MPLAB X の6.00がリリースされてた!
XCもついでに
年末に5.50に上げたばかりなのに、また上げんとあかんかな どこが変わったんですかね?リリースノートとか見てないや
つまり見送り 確か、最新チップにpickit4がアップデートされなかったような気が・・・ 教えて下さい。
プログラムの冒頭で、#pragma って書きますが、
あれは何をしているのでしょうか?
そんなところで発振器の設定なんかせずに、
mainで走り出してから、...=XT とかやればいいと思うのです。
どれとどれを#pragmaで書かなければならないのか、
全くわかりません。
データーシートのどの部分に書いてありますでしょうか?
また他のマイコン、例えばAVRマイコンでも #pragmaを書くのでしょうか? #pragmaはコンパイラ指示命令だね
#pragmaでコンパイラに指示を与えてコンパイル自体の処理を変える方法は
他のコンパイラ(PC用とかでも)でもあったりする
変数の値を変えるだけではなくてコンパイラ自体の処理が変わるのかもしれない または、リンクするライブラリが変わったりするのかもね
VC++なんかでも
#pragma comment( lib, "○○.lib" )
みたいにリンクするライブラリファイルを指定できる コードプロテクトってpragmaで設定しないと意味なさそう PICのpragma指定はコンフィグビットを変える指示をしてるだけかと
実行コードには影響はしない
xcのフォルダのどこだったかにチップ別の設定名とコンフィグビットの対応ファイルが入ってる みなさん、ありがとうございます。
#pragmaの働きはわかりますし、デバイスファイルもわかるのですが、
どれを記述すべきなのかがわかりません。
ハードウェアのこの機能は記述しなければならない、というのがあると思うのですが、
その判断ができないのが悔しくて。
データーシートのどこそこに書いてあるものは全部書かなければならない、他は起動後に自身で設定すればいいとか。
> xcのフォルダのどこだったかにチップ別の設定名とコンフィグビットの対応ファイルが入ってる
はい、XC16のdocの中にありますね。
ちょくちょく見ています。
訳がわからないので、全部をpragmaで書いています。 >>164
データシートをよく読むならすべてを#pragmaで書く必要はなく
そのデバイスの初期値(初期設定)から変更が必要な項目のみ書けば良い
>mainで走り出してから、...=XT とかやればいいと思うのです。
そのあたりはプログラムが動き出す前に初期設定を済ませといた方が都合がよいのでコンフィグレーションビットで設定する
(動的に変更したい場合に項目によってはプログラムから変更をする 内蔵クロック⇔外部クロック等)
>例えばAVRマイコンでも #pragmaを書くのでしょうか?
同様の機能にヒューズビットが有るが画面(GUI)で設定するか<avr/fuse.h>をインクルードしてソースファイル内で設定する必要がある
そもそもコンフィグレーションビット書くって言うけどGUIで項目選んで作成ボタン押すだけじゃね? 基本的にマイコンを買ってきた時の状態でプログラムだけ書いてやれば一応動くというふうになっているのが普通だろうから、#pragmaではプログラム起動前の初期状態を変えたい項目だけいじっておけば良いのでは? 機種ごとの初期値がわかりにくいから合わせたいところは全部設定するのが正解 >>165
ありがとうございます
>> プログラムが動き出す前に初期設定を済ませといた方が都合がよいので
どのように都合が良いのでしょうか?
その辺りのさじ加減が、わからないのです。 >>167
ありがとうございます
そうすると、TRISもプラグマで書いてしまうと言うことでしょうか?
皆さまのお話を伺うと、
プラグマでmustで設定する項目は無いと言うようにも
感じるのですが、それはまた間違いなのでしょうか? >>169
mccで動いたからいいじゃん、というのが ちょっと寂しいのでお尋ねしています。 configuration wordの設定は#pragmaでやる。
初期値のままでいいものも全部明示的に書くかどうかは好みでしょ。
私は全部書くというより、どうせ以前使ったもののコピペ空の任意に変更だから何の手間もない。 ×空の
○からの
MCC使う場合はもう何も意識してない。 あれ、MPLAB X IDEにConfigurationbitsのジェネレータが有るのはご存知?
使わないよね… >>172
ありがとうございます。
>configuration wordの設定は#pragmaでやる。
そのコンフィグレーションワードというのは、
データシートの巻末の方に書かれている 14bitのレジスタのことでしょうか?
すると、
その4〜5個のconfigration words 全てについてだけ #pragma config .... で記述をすれば、
他の設定は #pragma ... と書かなくて良い、という理解で良いでしょうか?
(書いてもエラーになるのかも知れませんね)
もう一つ教えてください。データシートによると、
FCMEN
CSWEN
CLKOUTENなどは、
R/Pの属性で、あとから変更ができないbitのようです。
この「あとから変更できないもの」を #pragma で特別に記述するようです。
なぜ、後から変更できないのか、そのあたりの理由をご存じでしたら
教えていただけないでしょうか。
>MCC使う場合はもう何も意識してない。
MCCはそもそも「面倒な設定をやってあげるよ」というものですので、
意識しなくていいと思います。
「黙って俺の言うことを聞いてりゃいいんだよ」と言われているみたいで
少しは中身が知りたいと思います。
>>174
>あれ、MPLAB X IDEにConfigurationbitsのジェネレータが有るのはご存知?
はい、MPLAB 8.xxのころは良く見ていました。 >>168
前提として#pragmaはコンパイラに特別な指示を出すための文言
PICでの主な#pragmaの使い道は「Configuration Words」の設定をする為に使う(ほかにも使い道は有るけど割愛)
逆に言えばConfiguration Words以外は#pragmaで設定できない
#pragmaで設定されたConfiguration Wordsはコンパイラで解釈され出力される
Configuration WordsはPICの特殊な場所(表面的には専用のアドレス)に書き込まれ、CPUが動作する前の段階で(から)使われる
つまり、Configuration Wordsの設定が有ることでCPUの動作を開始できるという意味もある
(主にクロックソースやリセット維持の条件)
>どのように都合が良いのでしょうか?
CPUを動かすためのクロック源(クロックソース)等の設定がプログラムに書いてあったら
正しいクロックソースが得られなくてそのCPUは永遠に動き出さない事も考えられる
つまりmainが走り出す前に設定が済んでる必要がある >>176
質問の正確な回答を得たいなら種類・型番・環境等を詳しく書いた方が良いと思う
>データシートの巻末の方に書かれている
これもデータシートの管理番号・ページを明確した方が良い
(PICならDS400564564D-page564 みたいに)
>R/Pの属性で、あとから変更ができないbitのようです。
configration wordsはプログラムから変更できないが
同様の項目をプログラムから変更可能な場合もある
>少しは中身が知りたいと思います。
少しってのが逆に難しいかも(汗)いっそ深くやる方が早く理解出来るかもね >>177
ありがとうございます。
変な質問にお付き合いくださって、ありがとうございます。
>Configuration WordsはPICの特殊な場所(表面的には専用のアドレス)に書き込まれ、
>CPUが動作する前の段階で(から)使われる
なるほど、以前PIC12C508?とかでは、Flashの最終番地に、
発振器の校正データをメーカーが書いてくれてあり、
起動時に、まずそこから読み出された値が発振器に作用すると聞いたことがあります。
そのような働きの特殊な値を、flashかどこか専用の場所に書き込むように依頼するのが、
#pragma の役目のようですね。
ありがとうございます。
・そのような特殊な設定値が configration word であり、
・その種類は、データシートの後ろの方に書いてある。それが全て。
・そしてプログラマーは、それらを #pragma により、全て設定しなければならず、
それ以外の項目は、#pragma で、操作しなくて良い。
そのように理解しました。
>正しいクロックソースが得られなくてそのCPUは永遠に動き出さない事も考えられる
>つまりmainが走り出す前に設定が済んでる必要がある
デフォルトは、内蔵CR発振器で動き出し、
プログラマーが必要に応じて変更する、でも問題ないと思いますが、
あえてそうしている理由が知りたいですね。
>質問の正確な回答を得たいなら種類・型番・環境等を詳しく書いた方が良いと思う
全てのPICに言えることだと思います#pragmaの無いPICのソースはないですよね。
>少しってのが逆に難しいかも(汗)いっそ深くやる方が早く理解出来るかもね
そうですね。深く知りたいと思います。
過去にどのような事があって、今そのようになっているのか、とか。
PICの歴史を学ばないといけないですね。
他にも、PICはTRISが1=入力、0=出力なのはなぜか。H8とか他のマイコンでは、1=出力なのに。
というのもありますが、考えないようにしています。
どうもありがとうございました。 なぜそうなのか、ということを考えるのは良いことだけど、短期的に答えを求めず、まず納得しないまま受け入れることも必要だよ。
そうでないと「納得したいバイアス」がかかるせいで、たとえ適切でなくても自分が納得できる答えで納得してしまう場合がある。 PICのはね、
inputのiが1に似てるからだよ
outoputのOが0に似てるからだよ
H8の出力が1なのはね、ちんぽこが1に似てるからだよ
おまんまんが0に似てるからだよ(^p^)ぐへへ ID:9wMqJfUe,ID:7IzLEr5v,ID:/P3Spbi6
どう見ても初心者ではなく、ただ自分で調べないだけ
自分じゃ一向に解決できない、しないが、枝葉末節には異常にこだわる
付き合ってやって奴らは介護士並みにご苦労さん 同意
付き合って回答してる連中がこういう輩を増長させてる まさしく「俺様初心者」
自分は初心者なんだから周りは自分を
育てる義務があるとでも思ってるんかいな。 だからここの答えなんて全部「データシート読め」で終わっちゃうんよ。 まともな初心者とは区別しないと
まともな初心者にデータシートの何ページあたりとか教えるのは許容範囲だろ
上の奴はデータシートのConfiguration Wordのことまで知ってるが
ちゃんと読んでないしリファレンスにも目を通してない、ただ屁理屈をタレたいだけ そのあげくに
>PICの歴史を学ばないといけないですね。
とほざくクズぶりw ほどほどに。攻撃対象をみつけたら攻撃を重ねるのもクズの一種。
ひっかかりがあると学習が難しい人だっているから、ある程度は仕方がないと思わないと。
その点、(^p^)は洗練されてるな。 >>180
ありがとうございます。
>短期的に答えを求めず、まず納得しないまま受け入れることも必要だよ。
はい、今までいくつも作って、問題なく動いています。
僕の場合も1℃作って動いたら、コピーコピーでやって来ていて
何も疑問に思わなかったのですが、
MCCを使ってみて急に疑問に思うようになりました。
config words を教えてもらったお陰で、理解が深まりました。
>たとえ適切でなくても自分が納得できる答えで納得してしまう場合がある。
はい、注意します。
ありがとうございます。 >>182
>inputのiが1に似てるからだよ
>outoputのOが0に似てるからだよ
これは有名な話ですね。ぼくもこれで覚えました。
>H8の出力が1なのはね、ちんぽこが1に似てるからだよ
>おまんまんが0に似てるからだよ(^p^)ぐへへ
なぜH8の場合は、チンチンが出力になるのでしょうか?
Inputの I には見えなかったということでしょうか? H8だからHなネタで考えるに決まってんだろっふひひ!(^p^) なるほどつまりPICはピクトグラム的に解釈するんですね!というリアクションを
首を長くして待っていたのだが・・・ X68000用の画像圧縮形式としてPICというのがあったなとふと思い出した。 7セグ8桁制御したいお
どこから手を付ければいいの?(´Д`) マイコンでやるなら16以上のピンが自由に出力に回せるものがほしい
あと、欲しい明るさによっては電流量超えるからなんかトランジスタとかMOSFETいるね
明るさの調整が大雑把でも気にしないなら7セグLEDドライバでいいわ
データシート読む必要あるけど、TM1637なら英語だからまだまし >>195
いくらでも実例はあるだろうから、
手元のブラウザ使って探す。
まずはそこからやってみたら? >>195
PICでやるの?
いまなら、ArduinoとかラズペリーパイとかNucleoとかあるけど
本当にPICでやるつもりなの?! 不可能とは言わないし
昔に比べればPICも洗練されてたけど(比較的)いばらの道のような・・・おぢさん心配よ!(^p^) >>199
Piでやるのは、またいろんな意味でむつかしいだろ LEDつないだポート毎にテーブル作っといて出したい数字/文字でインデックス取って出力すればいいじゃないか
なんも難しくない module 8 digitalでも使えば良いのでは? Aliとかでモジュール買うのが早いな
自分で組むにしてもmax7219とかtm1638とかドライバーを使う方がいい 難しくはないけどダイナミック点灯でないとポートが足らんだろ module 8 digitalならSPIで8桁
https://www.switch-science.com/catalog/1639/
ならI2Cで4桁
電源以外は2,3ピン程度で足りるし、
SPIやI2Cコントローラは大抵のものに
内蔵されているんでは? >>204
そこは たとえば7segをそれぞれ
データラッチIC(D タイプフリップフロップ、
TC74HC273APなど)にぶら下げといて
Aポートをデータバスに使って
Bポートをラッチのセレクタに使う、などすれば
「(割り込み処理が必要になりそうな)ダイナミック点灯」を使わんでも
十二分に行けるんじゃね? ダイナミック点灯はデバッグするときとかハングアップした時とかに
素子に回復不能なダメージを与えかねない手法だから、プログラム的にも
ハードウェア修繕的な意味でも いろんな意味で、上級者向け てくにっく☆彡 割り込みを使わなくてもダイナミック点灯できるよね。
でも、「割り込みを使わない」のではなく、「経験値として割り込みを使えない」のだったら
これをテーマに割り込みを使えるようになる方がいいでしょね。 >>209
CLC使えば、割り込み使わなくても出来そう うーん。。。PICは昔は割り込み処理するときに
冒頭で ファイルレジスタ退避など手でかく必要があったから
初心者に厳しいというか 取りつきにくかったけど
最近の石はハードウェアが割り込み処理の一環で自動退避してくれるらしいし
それほど難しくもないんじゃね?(^p^) MPLAB X IDEのVersion6.00 Linux版は色々ホームディレクトリの.の付くMicroc hip関係を消さないと立ち上がらなくなるよ(汗)
自分でインスコしててハマったからメモ程度ですが >>213
最近は#pragmaとかで割り込み関数にしてやれば
自動的に退避復帰のコードかついたり、
スタートアップルーチンの一環で割り込みのエントリ
まで自動生成してくれるしね。 ハードウェア上実装じゃなくて開発環境のサービスだったのか・・・さーせん; >>95
PKOB つまり、オンボード版のPickit >>205
これを1から作ってみたい
SPIとかそのへんから勉強ですね(´ω` ) >>219
74xx594みたいな出力レジスタ付きシフトレジスタを1桁あたり1個使えば、
ディスプレイモジュール側はマイコン要らないし。 いいだしっぺの人がなぜこのスレで話題をふったからでは
細かい状況わからんから何とも言えんが >>226
pic開発セットもろたんや
あと本も「逆引き PIC電子工作 やりたいこと事典」もらたで
読んでたらなんかできそうと思ったけど
4桁の7セグの例では8桁難しそうやなと
とりあえずspiというものをきっかけに調べるとこで寝込んだw >>229
まずはLEDを点滅させてみるところからじゃない?
それが出来たらLED2個を交互に点滅 Agilentの53132Aという周波数カウンタ持ってるんだけど、電源入れて
セルフテストやってる途中で左から3桁目だけ1秒間くらい止まって
異常な明るさで光るんだがファームのバグかな。
蛍光表示管みたいだけど。 >>211
昔はメモリー少なかったから、レジスタ待避は手動の方が良かった。 では昔のメモリーがどんなものだったのか早速ググった。
ぼきの想像を超えた世界が広がっていた・・・(^p^;)
https://bokete.jp/boke/76066062 昔のメモリーデバイスって、自分の知っているのはフェライトビーズ使った磁気コアメモリだな
熟練女工さんによる手編み製造、視覚的にもなんかグットくるものがあるが、実物は見たことない 20ピンのPICで人気のある製品を教えて下さい。
たいしたことやるわけでゃないので、UARTが1ch使えてDigtal I/Oが10個あればOKです。 14ピンだとカツカツなので余裕が欲しかったからです。
20ピンでなくても問題ないです。 質問いいですか。
MCCで生成したソースで、たまに CallBack という関数が出てきます。
辞書で調べると、折り返し と出てきます。
マイコンで何を折り返すのでしょうか?
というか、マイコンソフトで CallBack と言ったら、一般的には何のことでしょうか? Callbackは PICに限らないマイコン及びPCプログラミング
全般に使う用語。
ソフトウェアフレームワークで使う事が多いだろうか。
初期化とかであるイベントに対するフレームワークの処理に
続いてそれを処理する
ユーザーランド(自分で作った)関数を登録しておく。
そうするとそのイベントが発生した時フレームワークが登録したユーザーランドの関数を呼んでくれる(関連したデータも貰える事が多い) ほぼ、割込から呼ばれる関数と考えて良い
UARTの受信エラーやタイマーのイベント発生など >>242
さっそくありがとうございます。
分かりやすく説明していただいたと思うのですが、知らない言葉も出てきました。
Googleで検索してみます。ありがとうございました。
ちなみに、以下の理解でよいでしょうか。(句点がないのでよくわからなくて。すみません)
初期化とかで、
ある「イベントに対するフレームワークの処理」に、
「続いてそれを処理するユーザーランド関数」を登録しておく。
そうすると、そのイベントが発生した時、
「フレームワークが登録したユーザーランドの関数」
を呼んでくれる
あと、ユーザーランドの「ランド」のスペルを教えてください。
Land Rand Round のどれかかな、と思いますが。
(フレームワークも初めて聞く初心者なんです)
宜しくお願いします。 >>242
さっそくありがとうございます。
分かりやすく説明していただいたと思うのですが、知らない言葉も出てきました。
Googleで検索してみます。ありがとうございました。
ちなみに、以下の理解でよいでしょうか。(句点がないのでよくわからなくて。すみません)
初期化とかで、
ある「イベントに対するフレームワークの処理」に、
「続いてそれを処理するユーザーランド関数」を登録しておく。
そうすると、そのイベントが発生した時、
「フレームワークが登録したユーザーランドの関数」
を呼んでくれる
あと、ユーザーランドの「ランド」のスペルを教えてください。
Land Rand Round のどれかかな、と思いますが。
(フレームワークも初めて聞く初心者なんです)
宜しくお願いします。 >>247
この場合普通はユーザーランドという言葉は使わない
何でも鵜呑みにしない方がいい >>232
HPの頃からあるやつかな
まさかソフトウエアとか割り込み使ってダイナミックスキャンとかはやってないだろうな…
ウチにあるIWATSUの古いユニバーサルカウンタはi8279(Display/Keyboard Controller)使ってるしADVANTESTの古い5.5桁DMMはICM7218(8-Digit, Multiplexed, LED Decoder Driver)使ってた MPLAB X IDE Ver5.5を初めて使うのですが、
プログラムを書いているときに、
文法チェックか何かで、真っ赤になったり黄色い丸が付いたりするのを
止められないでしょうか?
またこの機能は何と呼ばれる機能でしょうか?
プログラムの文字入力が遅くなってしまうと思うのですが、みなさんは
このまま使っているのでしょうか? >>236
わいは18346を好んで使ってます。
メモリー多いし、I2Cが2chあってそのI2Cピンの変更も出来るし。 >>251
エディタは使い慣れたものを使っているな。
Linuxのコマンドラインだったり、FPGAだったり、
マイコンも色々なメーカーのものを使うから、
いちいちそれらのIDEごとの方言みたいなメニューや
ショートカットに付き合ってられない。
IDE内蔵のエディタはオマケ程度のものと考えて、大規模な変更には使ってない。 >>252
ICMといえばプラモメーカー。紛争を避けてクリミアからキエフに移転したのに
この状況;どうなっちゃうんだろうなぁ・・・良いメーカーなのに><; ぐぎぎ >>251
大抵の事はOptionsから変更可能
ただし変更項目によって再起動しないと適応されないところもある
速度に関しては問題に思ったことは無い(起動が重いのは少し気になる?) >>251
これな〜
ずいぶん大昔からフォーラムでも話に出てたけど、
全然改善されねえよな
6だと直ってるのかな
この機能はポカミスで役には立つんどけどなぁ
解析機能をもう一回動かすと直る場合がある
MPLABXでプロジェクトファイルの
プロジェクトフォルダを右クリックして
"Code Assistance" -> "Reparse Project"
(右クリックで出てくるメニューの下の方)
俺はこれで回避している >>253
ありがとうございます。
やはりメモリが多いのが転用しやすいし便利かな...
50円程度の範囲内にこんなにバリエーション作ったのはなぜなんだろう。 随分前に10F322買ったんだけど、確か一個45円位だった記憶があるんだけど、今の値段は何?
高いよ 高いだけじゃ無くて在庫切れも多いな
まさかマスクやトイレットペーパーの時みたいに転売屋が動いてるのかも こんな利益が細かい部品で転売する意味ないやろ…
生産能力落ちてる時に利益率の悪い下位機種を作るなら上位機種の量を維持するわ せっかくレスするならニュースを見るタイプの人はどういう見解なのか書いてくれるといいね 世界はみんな経済成長していて給与も物価も上がっているしね。 MCCのマージウインドウって便利
現行のコードとMCCが新しく生成したコードとの差分が、一目瞭然
質問ですが、このウインドウが表示されているときに、
マージのタブの×で消してしまったら、それ以降表示されなくなってしまいました。
表示するにはどうしたらいいですか? >>226です。
自己解決しました。
MPLAB再起動したらできました。
ありがとうございました。 ウインドウの復旧は
メニューのWindow→ ResetWindow XC8 pro ドングル買おうかと長らく悩んでいたのですが、先ほど見たら1割くらい値上がってました。
ここ1年の円安傾向が反映されたのかと思ったら、USDでも値上がってたので全体でした。
この値上げで益々遠退き悲しい。 少なくとも初心者には要らないから思いとどまって正解。
最適化考えるなら他のマイコンに移る方がいいよ。移行コスト考えても安いだろ。 HI-TECH PICC Liteで駄目なデバイスは諦めてxc8でコンパイルする 電気超初心者ですが質問させてください。
ttps://akizukidenshi.com/catalog/g/gI-13921/
秋月で、このPICマイコンを買いました。
このPICは3.3Vで動いています。
I/Oピンの中で5Vトレーラントというピンがあり、5Vに対応しているようです。
データシートで調べたのですが、使い方が不安で確認したいです。
質問ですが、
・OpenDrain設定しないとき
・入力電圧は、5Vまで安全に使用できる。(5Vトレーラントピンだから)
・出力電圧は、0←→3.3Vが出力される。(非トレーラントと同じ)
・OpenDrain設定したとき
・入力電圧は、上と同じ
・出力は5V出せないが、外部プルアップ抵抗により5Vを生成して
見かけ上の0←→5Vが出力できる。
出力出来る電流はプルアップ抵抗値で決まるので
なるべく小さい抵抗値を使いたくなるけど、
OpenDrainのId最大により制限される。
という考えで合っていますでしょうか 流入/流出量の総和に制限付いてる品種もあるから気をつけて >>272
データシート初めて見たけどVDD<3.0Vのときは5Vトレラントピンに3.6Vしか
かけられないというのは要注意だね。
場合によっては電源にシーケンスが必要になるかも。
>Voltage on any 5V tolerant pin with respect to VSS when VDD ≧ 3.0V(3)... -0.3V to +5.5V
>Voltage on any 5V tolerant pin with respect to Vss when VDD < 3.0V(3)....... -0.3V to 3.6V プロセス上の制限でオープンドレインでVCC/VDD以上の電圧でプルアップできるデバイス今はあまり無い。
TTLの74シリーズ時代はできたけど。 みなさんはどこで調達していますか?
いま積極的にpicを扱っているお店って秋月くらいな気が... ネタ的に面白いからニセモノだのリマークだのが語られるが
全部が全部そう言う訳ではない。
ま、いくら話しても君理解しないだろうけど。 そういう趣味がないなら本人がそうすればいいだけで、他人がやっていることに
いちいち驚いたふりをして気を引こうとする必要もないと思うんだ。 >>285
まぁ、たまには本物も混ざっているからな >>285
まぁ、たまには本物も混ざっているからな すまんなー
驚いたふりをして気を引こうとしたんじゃなくて素でこいつアホかなって思っただけなんだ >>291
謝らなくていいよ。そういう人はいても不思議じゃないからどうぞ。 PIC初めて初心者です。すみません、おしえてください。
PIC18F25K80-I/SPの水晶として、秋月電通商で以下のものを購入しました。
https://akizukidenshi.com/catalog/g/gP-08667/
水晶のデータシートにはCL=20pFにしてくださいとあります。
PICのデータシートの60ページの表3-3に20MHzなら15pFを付けなさい
と書いてあります。
質問は、
なぜPICマイコンのデータシートがCLを指定しているのでしょうか?
CLは水晶から見た「負荷容量」ですので、水晶が20pF付けてくれと言うなら
それに従わなくても良いのでしょうか。
もう1つは、PICデータシートの60ページの回路には、直列にRsが入っています。
ATカットの水晶だと必要になるかも・・・みたいなことが書いてありますが
ネットの工作例では、入ったのを見かけません。
これはなぜなのでしょうか。
「そんなもん無視無視、動けばOK」なのか、
通常数Ωだから省略しているのか、どういう事なのでしょう。
よろしくお願いします。 15でも20でも大差ない
Rに関しては動かなきゃつけてみる
実際のところハンダ付けや銅線の長さや温度や不確定要素の方が多すぎて考えるだけ無駄 >>294
データシート読んだけど容量は指定してない
代表的な例として15pFでテストしたと書いてある
直列抵抗は必要な場合があると書いてある(必須ではない)
そして詳しくは以下を読めと書いてあるので読んでみたら?
•AN588, “PIC® Microcontroller Oscillator Design Guide”
•AN826, “Crystal Oscillator Basics and Crystal Selection for rfPIC® and PIC® Devices”
•AN849, “Basic PIC® Oscillator Design”
•AN943, “Practical PIC® Oscillator Analysis and Design”
•AN949, “Making Your Oscillator Work”
そこそこの精度で良いならコンデンサの値は近い数字で問題ないと思う
精度を上げるなら負荷容量を微調整する
そしてPIC関連スレの過去ログに同様の質問が数回あるから読んで マイコンなどの水晶発振回路で、インバータを使うものの場合、水晶の両端と
GNDの間にコンデンサをつなぎます。
CL=20pFの水晶は、このコンデンサの値を20pFにせよ、ということではないです。
https://www.macnica.co.jp/business/semiconductor/articles/basic/127525/
4-1. 負荷容量の値
ここに書かれている「ICの容量」は実際には配線の容量も含みますが、ここに書かれているように
4pFだとすると、(CL-4pF)×2が、コンデンサの値になるので、CL=20pFなら 32pF が計算値です。
実際には30pFか33pFですね。
CLが指定の値のときに、水晶が定格通りに動作します。 >>294
最適なコンデンサの容量とか直列抵抗の値とかは、実際には、パターンとか水晶のスペックでも変わるから。 >>296 297 298
ありがとうございます。
英語は苦手ですが、ご紹介の資料を読んでみたいと思います。
>CLが指定の値のときに、水晶が定格通りに動作します。
これは同意です。
つまり水晶を選んだ時点で、回路側はこれに合わせなさい
ということですよね。
直列抵抗については、
実際にヒートガンとキューレイで温度振って
起動のロバスト性を確認してみたいと思います。
ありがとうございました。 基本的に水晶の中には高性能なチップコイルが入っているんだよーーーん。
コイルだから、共振するには外付けでコンデンサが必要だね。 よくしらんが ならきゃぱしたもつでにいれとけばいいのにな。
ていうか石英というか酸化ケイ素には水は含まれていないのに
水晶なんて言うネーミングには詩的センスが入っているんだよーーーっ(^p^)
あと絶縁に使う雲母は和名が「きらら」、これ豆知識な。タンタルも元素か。
基板内のいろいろ元素がわかればオカルト知識があれば錬金術的な楽しみかたも成立するのかなぁ。。。 きら摺り・・・浮世絵版画の技法の一つで、雲母を粉末にして地色に重ねる MCCの使い方がわかりません。
プロジェクトツリーの「MCC generated Files」のソースの中身を
一部変更してコンパイルしました。エラー無く動きました。
ここでMCCを再度Generateボタンを押すと、テキストファイル比較のような画面が出て、
差分が表示されます。
これって、どのようにすれば良いのでしょうか? >>305
MCCが作ったコードは外部から呼ぶだけにして、書き換えないようにする。
触ったら、その後はMCCで変更しない。 MPLAB X IDE 6.00のMCCでライブラリダウンロードせよってNoticeで出ると思うんですが
ダウンロードが出来ないのが一つ、ライブラリに追加出来ないやつが一つ私のところでは出ました
ダウンロードが出来ない(確かAVRの何かだった気がします)奴はMPLAB X IDEのMCCのページからダウンロード出来たのでこれはクリア
インストール出来ない奴は拡張子を.ZIPを.jarに書き換えて食わせればインストール出来ました
これでうざったい通知が無くなってスッキリ MCCでDMAを構成したら、コンパイルは通るのですが、output画面に「heap領域が0だぞ」というメッセージが表示されます。
調べたらheap領域とはメモリー全体からプログラムとか変数を引いた残りの領域を
スタックと取り合うようです。
私は何か設定しなければいけないのでしょうか?
というか、heapを128byteとか確保するということは、どういうことなのでしょうか?
「おいスタック、どれだけ増えても128byteの俺の領域には入ってくるなよ」ということでしょうか? >>308
コメントがつかないようですので、別のところで聞いてみます。
ありがとうございました >>308
函数使うような構造型言語で、函数呼ぶ時にどういう処理するか、考えてみて下さい。
呼び出し元を記録しておく場所がヒープ領域。 >>310
わざわざ「函数」なんて書いといて、こんな基本的な事を間違えるとは
それはスタックだ
ヒープは実行時に必要に応じて任意のサイズで取得するための領域だ >>310
この場合は、DMA 用のメモリ領域確保しろ!って事だろ?
品種によっては特定の領域しかDMA で使えない場合もある。
>>312
DMAって、CPU管理外でメモリーからメモリーのコピーですよね?
そんなに沢山の領域が要りますかね?
一度に転送できるのは16bitなんだから、16bitのワーク1つがあればいいと思うんですが。
1クロックで128byte持ってきて、
1クロックで128byteがストアでなるわけではないですよね? >>313
CPU管理外だから、リンカーに変数とかに割り当てられない様に予約して置く必要ある。
実際にDMAで何バイト使うかは用途による。 >>313
アナログデータとか通信データで
数百バイトをちまちま割込みやポーリングして
データー取ったり出したりするより、
DMAで放ったらかして転送終わったら処理した方が
CPUのリソース少なくて済むわな >>313
なんか勘違いしてると思うから補足しとく
1. DMAは、メモリーからメモリーへの自動(CPU命令無)転送
2. DMA転送トリガビット(設定周辺機器IFビット)ONで
設定転送元から設定転送先へ自動転送
3. 転送先、転送元アドレスは設定により自動加算
4. 転送トリガビットは転送後、自動クリア
5. DMA転送数はDMA設定時に設定しておき、
その数が転送されたらDMAのIFビットがON
って流れが基本動作
3.の動作があるお陰で放ったらかしに出来る
DMA自体設定はそんなに無いから、
MCC使わないで直接DMAレジスタ叩いて
ヒープ無しでやってみたら?と思う 初歩的な質問ですみません。
16F1455などのUSBマイコンは48MHzで動作しますが、
このクロックでもNOPで正確なタイミングを取ることはできるのでしょうか? 正確なタイミングを取るならタイマーを使う。どのマイコンも同じ事。 ごめんなさい。言葉足らずでした。
48MHzだと1命令サイクルの時間が0.08333...マイクロ秒なので
タイマーにしても目的の時間ぴったりに設定できなさそうと思ったもので。 まずは「正確な」とか「ぴったりに」の程度を決めないとねね >>319
USB full speed (12Mbps) の規格を満たすくらいには正確だけど、電波時計基準局やGPS用途ほどには正確ではないですね。
お求めの精度は? 計算を盛大に勘違いしていました。
例えば「○○msec待つ」必要があるときに、命令サイクル時間が中途半端なので
計算上合わなくなりそうな感じがしていたのですがそんなことはなかった...
質問は取り下げます。すんません。 そういう用途だと32.768KHzみたいな端数まであるクロック元使うんじゃね
知らんけど 「Nms待つ」は最低Nms待てばいいのか、Nmsで1ns も超えたらアウトなのか。
前者ならNms超えた最小のクロック数にするし、後者ならハードウェアでの実装を考えるね。 >>319
タイマーのクロック入力に、48MHzを分周したものを使えば、いい感じの時間が作れないですか?
アセンブラで48MHZをNOPするなら、
48回使えば1usにならないのでしょうか? >>311
ヒープ領域って、マーロック使う時に取るもので、
それ以外に使わないと思います。
DMAはバックグラウンドで処理をするけど、
必要な領域はコピーの時使う16bitか32bitだけでしょう。
スタックに取ると、迷惑なので専用に敷地を確保するんだと
思っていますが、違いますかね? MCCのやり方が気に入らんなら、自分でDMAのドライ場を書けばいいだけ
その能力がないなら黙って従うしかないな 前提が違っていて話がかみ合ってないです。
>>326さんが何かの解決を必要としているなら
・PICの型式
・具体的なDMAの使い方(「UARTのRXDをメモリ領域に転送する」とか)
は書くべきだと思います。
そうでなければ、>>326さんがこの場の混乱を促進するだけです。 ざっくり言えば
heapはグローバルな領域
stackはローカルな領域 PICは、dsPIC33EP512です
具体的なDMAの使い方は「UARTのRXDをメモリ領域に転送する」です。
宜しくお願いします ヒープとかスタックとか専門用語を並べるから分からないんじゃないの?
ヒープって何? スタックって何?
その辺から教えてあげないと分からないと思うよ 歴史で教わったぞ、リンカーンだよな。
えーんど ざっと がばめんと!
おぶ ざ ひーぷ
ばい ざ ひーぷ
ふぉー ざ ひーぷ!!(^p^) ,ィ⊃ , -- 、
,r─-、 ,. ' / ,/ } ち
{ ヽ / ∠ 、___/ |
署 ヽ. V-─- 、 , ',_ヽ / ,' ょ
ヽ ヾ、 ',ニ、 ヽ_/ rュ、 ゙、 /
ま \ l トこ,! {`-'} Y っ
ヽj 'ー'' ⊆) '⌒` !
で , 、 l ヘ‐--‐ケ } と
ヽ ヽ. _ .ヽ. ゙<‐y′ /
来 } >'´.-!、 ゝ、_ ~ ___,ノ
| −! \` ー一'´丿 \
い ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
動詞形:ピ ー ポ る
スタックについては、紙に図でも書いて、リアルタイムに加筆しながら動作を説明しないと
掲示板で文字で説明されてもうまく理解できないんじゃないかという気がするわ・・・(^p^;) 明治時代の人は偉いな、英単語から新しい日本単語を作ったんだから。
今は、英単語そのままの場合が(カタカナ表記)多いから
初めて接するときは、その単語のオリジナルの意味を知らなければ見当もつかない。
ヒープ?スタック?ブートストラップ?カレントミラー?
ワイズスペンディング?ダイバーシティ?フィンテック?
何それ、になってしまう。
そういえば昔、原始算譜、目的算譜なんて単語を見た事がある。
ジジィの私もさすがに驚いたが、意味はすぐに理解できたw >>337
自分の英語力の低さのせいだとは
一生気づかないタイプw PICデビューのため秋月でPIC18F57Q43の評価ボード購入してきました。
まずはスイッチでLED on / off にチャレンジしようと思い以下のページを参考にしてプロジェクトを作成したのですが、スイッチ押しても反応しないようです。何か設定の抜けなどあるかご確認してもらえないでしょうか?
whileの中をRF3=0で点灯、RF3=1で消灯するのは確認できたのですが、スイッチの動作を確認することができていない状態です。
https://qiita.com/infinite1oop/items/b039efa8a6bbe6cf1f92 >>341
評価ボードだから外部でしてあるでしょう
なかったとしても、Lに張り付くなら点灯したままだろうし >Pin Managerでピンアサインを行う。RB4(ボタン)のinput
これは問題なく設定できたん? 古谷峰一 パナソニックインフォメーションシステムズ で検索 >>340
PIC内蔵のプルアップの設定が必要だと思う
ページのコードだとLEDが点灯状態になるんじゃない?(SW押しても離しても点灯) >>340
4.2.2 Mechanical Switch Edge connector The PIC18F57Q43 Curiosity Nano has one mechanical switch.
This is a generic user-configurable switch. When the switch is pressed, it will drive the I/O line to ground (GND).
Tip:  There is no externally connected pull-up resistor on the switch.
To use the switch, make sure that an internal pull-up resistor is enabled on pin RB4.
最低限これ
https://i.imgur.com/swyoDps.png
もう一か所位設定必要かも(;´・ω・) こちらの資料だと違うタブからでも設定できそうですのぅ・・・
https://wak-tech.com/archives/992
pin module/Registers/WPUB4をEnable >>340
while (1)
{
// Add your application code ここから!
の、Whiele(1){ の前の行に、次の1文を書いてください。
WPUB4 = 1; レス頂いた皆様ありがとうございます。
>>346
>>348
GUIのpin module で、WPUを有効にしたら動きました。コードで直接書く場合は、WPUB4=1でも動きました。助かりました。 自分で色々と試してみて
良い結果が出たらそれが答えやぞ >>349
なぜプルアップを有効にすると動いたか、
教えてもらえないでしょうか?
あと最初は、MCC使わずにベタで書いて覚えた方がいいよ。
アルデーノ族と同じになってしまう。 >>350
あら おまいさん、突入電流なんてキニシナイ派?
まぁ確かに、静電容量自体は小さいだろうけどなぁ。。。 >>353
PICは中に入っているのだと思っていました。
こんな格安ボードでも入れてるのであれば、原則入れたほうがいいのかな... >>350
これはRB4を出力で使うときの保護用じゃないですかね。
この種の評価/トレーニングボードだとわりとよく見る配慮。 >>352
>あと最初は、MCC使わずにベタで書いて覚えた方がいいよ。
>アルデーノ族と同じになってしまう。
MCCもArduinoも両方よく知らない典型的なステレオタイプで笑える。 配慮なのか?そうなのか?!よう知らんけど;
アルデーノ族というとなぜかラテン系なイマーゲ >>352
>あと最初は、MCC使わずにベタで書いて覚えた方がいいよ。
>アルデーノ族と同じになってしまう。
そうなんですか、なぜなのか理由を教えていただけますか? >>355
その通りです。
間違えて出力設定でスイッチ押した時の、
保護用というか負荷ね。 >>359
ひな形のコードを生成するツールや、より簡単に開発できる環境には、いつの時代でも拒否反応を起こす人はいます。
基本的には、そういう考え方もある、ぐらいに受け流してもいいと思います。 べつに全部をmccなりharmony を排除して書く必要はないよ。
そう言う風にレジスタ操作する方法もあると知っておけばいい。
なんか凝ったもの作りたくなった時に引っ張り出して来ればいい。 >>359
MCCで生成したソースコードをちょっと改造したら、
次のMCCをジェネレートした時に、大変面倒。
MCCは、よくわかった人が使うもの。
MCCのスタンスは
「オレの言う通りにやれ。
俺のコードを触るな。
文句があるなら自分でやれ」だから。
入門者が相手できるものではない。 >>363
>MCCで生成したソースコードをちょっと改造したら、
その時点で「アルデーノ族」ではなくなってますよねw
なぜ同じになってしまうのか知りたいんですよ >>364
>その時点で「アルデーノ族」ではなくなってますよねw
は?
MCCの生成した関数を、言われたとおりに使用するからアルデーノ族なのよ。
話が食い違ってない? >その時点で「アルデーノ族」ではなくなってますよねw
>MCCの生成した関数を、言われたとおりに使用するからアルデーノ族なのよ。
同じこと言ってるw MCCを使ったからと言って「アルディーノ族」とやらにはならない
MCCだけでArduinoのようには簡便には使えないことは使った人間なら誰でもわかる
つまり>>352は何もわかってない癖にステレオをタイプの思い込みだけで語ってる MCCは出力コードいじりたくなる。
MCCもアルデーノと同レベルの完成度になってほしい。 Arduinoはライブラリ群だろMCCはConfiguratorだ
完成度云々の話ではない >>370
そうそう。
読みにくいし、使いにくいし、ギミックが過ぎるし。
コメント1行入れただけで、ブーブー言うし。 MPLAB X IDEでarduinoのプラグイン無かったっけ?
そういう話じゃないってのは分かるのですが 自分のコード潰されるの嫌なら生成前にコピーしとこう。
生成後にマージしよう。
WinMarge便利。 IDEの問題かもしれないけど、
突然コンパイルできなくなったり訳がわからんことが起きやすい。
仕事で使ってる人はぶちギレないのだろうか。 コード生成が信用ならんと思うなら、バックアップも取らずにコード生成することはないのでは。
バックアップができていれば、キレるような無駄なことはせずに差分の確認と復旧はできると思う。 仕事で使っていればそれなりにリスク管理してるか。
安心して使えるよになってほしいー >>379
また「おっぱい」の話してる(;´・ω・) >>380
おっぱいおっぱいのAAも貼らないとな? 自作だと基本的にコンパイラのバージョン管理だけでいいからな
MCCだとMCCとIDEのバージョンまで管理しなきゃいけなくなる
数年おきにどんどん変わっていって
仕事で使ってると、環境管理が正直ムリだわ
MCCでじゃんじゃん組みたいけどな
さすがにMPLAB8は新規では使ってないけど、
変更依頼が来たときの安心感は8の方がある MCCでコード生成をしたら、そのあともずっと修正のたびにMCCでコード生成
しなくちゃいけないって思っている人がいるんだね。 どうせベタで書くならアセンブラで書けばPICの変態アーキテクチャを堪能できるのに そういや、なにげにハーバードアーキテクチャなんよな・・・(^p^;)
ノイマンボトルネックが無い奴。 仕事だと、自分の手の内に無いもの(自力で対処できないもの)は
可能な限り使いたくないだろうな。
客に「すみません、デバッグ中に開発環境のxxにyyという問題があることが分りまして
納期に間に合いません」なんて言えないw
アマチュアならCよりもアセンブラの方がCPUに密着しているから
PICやAVR、それぞれのCPUのアーキテクチャの違いを楽しめるんじゃないか?
CPU関連の技術(集積度や速度など)が発達したから、
RAMメモリをデータとプログラアムで分離するようになったのかな。
ところでフォン・ノイマンはものすごく頭が良くて、
悲惨な鬼才アラン・チューリングに比べて幸せな一生を送ったらしい。 LチカするのはMCCでチャッチャッで出来るのが目からウロコでした
Harmonyはまだ使ったことがない 全体的にMPLAB-XよりArudinoのほうが安心度は高いなー
安心して使うノウハウはバックアップとWinMerge他にはなにかあるだろうか? RAMメモリって、トラ技で後閑も使ってたな
あれ見ただけで読む気無くした 略語は浸透しまえば元の意味を失っていくことはあるさ。
その程度で読む気を失うのは人間の弱さ。 ・・・元の意味が失われる、か。
昔バトルテックっていう洋物のSF設定でコムスターっていう秘密結社というかカルト教団が登場するんだけどさ、
由来が星間通信事業業者の成れの果てで、通信機器の操作手順書を聖典として暗記詠唱しているとかいう設定でワロタ
意味が失われても読み続け暗記する人間 強すぎやなw 怪しいものが発掘されたら、しばしば「祭祀の道具」って言われているけど、とか。
昔、センパイに「UARTトランスミッターはダメだ。UARTのトランスミッターと書け」って言われたことがある。
細かいな。 最近はROMといえばストレージ意味に使われている。
ROMメモリとは、ストレージに使われているフラッシュメモリのことを指している。 >>398
LPガスじゃないですかね?
エルピージー ガスとは言わないでしょう。 picでパソコンのuartで英数字文字を出しました。
漢字を出すにはどのようにするのでしょうか?
宜しくお願いします >>400
PICから送信して、パソコンで受信ですか?
その場合、パソコンで受信するときに使ったソフトは何ですか?
そのパソコンで受信するソフトが漢字を表示できるものなら、
そのソフトで漢字を表示するためのコードをPICから出せていれば表示ができます。 >>401
ありがとうございます。テラタームプロです。
どうでしょうか。print fで送っています 文字コードの設定をUTF-8に設定したほうが良いよ
Shift-JISにしたら駄目だよ "漢字送信\r\n"
みたいにすればSHFT-JISで送れるんじゃないの
"表"のように2バイト目が0x5Cの文字で化ける場合は"表\示"のようにする >>404 >>405
ありがとうございます。月曜日やってみます。
文字コードはJISとUTF-8と両方やってみます。
漢字IN 16進漢字コード 漢字out
とかするのかと思っていましたが、直接 "漢字送信\r\n" ができるのですね。
どうもありがとうございました。
>"表"のように2バイト目が0x5Cの文字で化ける場合は"表\示"のようにする
素晴らしい情報、ありがとうございます。
>>403
>まずはやってみればいいのでは
言われなくてもわかっていますが、
目の前に装置がないので試せないんですよ。 N81XとかN81Eとかに設定するのが先じゃないか MPLAB X IDE 5.50でMCC組み込みの勉強をしています。
2つほどおしえてください。
MCCの設定を保存したいのですが、どのようにしたら良いでしょうか?
レジセスタの設定値をいろいろと変えてみたいのですが、
いちいち設定値を手書きでメモしています。
数が多いので、保存がしたいです。 >>408
一度設定したら同プロジェクトなら保存されてると思うけど・・・・
あと手書きでメモするぐらいなら画面のスクリーンショットでも保存しとけば良いのでは? >>409
>一度設定したら同プロジェクトなら保存されてる
はい、そう思いますが、MCCの設定値を変えて動作を見たいのです。
最初はスクリーンショットを取っていましたが、
1回に20枚以上とる必要があって苦労しています。
やっぱり無理そうですね
ご回答ありがとうございます。 >>410
試した事は無いけど[MyConfig.mc3]を複製して保存したらどうだろう?
MCCの設定って殆ど変更しないと思うけどどうなんだろう?
それに変更して戻す事はさらに少ないと思う >>410
普通の方法だけどプロジェクトをコピーして変更すればいんじゃない? >>みなさん、ありがとうございます。
.mc3を保存入れ替えすればできそうな気がするので内容を見てみたのですが
2万行以上もあり、設定値を抜き出すことが私には難しかったです。
実は、PICの動作がおかしくて、途中で止まったり起動しなかったりするのです。
PICKit4で書き込んだまま動作させるとちゃんと動くのに、一旦電源をon/offすると
もう二度と起動しなかったり、シリアルを受信すると固まったりして困っています。
コードはMCCで生成しているので、パラメーターをいじって、
PICがどのように振る舞うのか、勉強がてら調査をしています。
MCCで、アレをセットすると、コレが変化するのか・・・。
じゃあソレを6にすると、止まってしまうのか? という感じです。 >>414
>.mc3を保存入れ替えすればできそうな気がするので内容を見てみたのですが
丸ごと保存する意味で言ってた(そのあとプロジェクトのコピーで良いと思った)
>PICの動作がおかしくて
MCCの設定ではない部分にバグがあると思うんだけど
>PICKit4で書き込んだまま動作させるとちゃんと動くのに、一旦電源をon/offすると
PICKITのUSBを抜き差しすると電源供給は止まるしMCLRもプルダウンされるかも
もしかしたらUARTのRXの信号が送信側で電圧印加されてるのでその電力で中途半端に動いてるとか?
>コードはMCCで生成しているので、パラメーターをいじって、
>PICがどのように振る舞うのか、勉強がてら調査をしています。
そのへんはパラメータいじるんじゃなくてPICのデータシート読んだ方が早いと思う >>415
ありがとうございます。
>MCCの設定ではない部分にバグがあると思うんだけど
そうですよね。私もプログラムミスだとは思うのですが。
>その電力で中途半端に動いてるとか?
それは真っ先に確認しました。テスターでの測定ですが、
電源OFF時にはPICの電源電圧、TXD, RXD端子ともに0.0009V以下でした。
nMCLR端子は、電源ON時3.3002V、電源OFF時0.0009V以下でした。
10msのtimer1割込の中に_RB1=1; _RB1=0; を追加して、
main()のwhile(1)の中に、_RB2=1; _RB2=0; ClrWDT(); を追加して様子を見たところ
正常時は、水晶=16MHz波形あり、RB1=1ms周期、RB1=10ms周期でしたが、
起動NG時は、水晶=16MHz波形あり、RB1もRB2も HのままかLのまま 変化しませんでした。
>そのへんはパラメータいじるんじゃなくてPICのデータシート読んだ方が早いと思う
そうですね。データシート読んでみます。ありがとうございました。 esp32のようなRMTができないか、CLC駆使してやってみたら以外にできるものなのね。
ありがとう 150円PIC 32768Hzで作ろうと思ってプログラム書いてみた事あるわ 最近のは知らないけど昔のリモコン(送信機のほう)はふたを開けると大抵455〜456kHzのセラミック発振子使ってたな
38kHz*12=456kHzだし455kHzとか456kHzってAMラジオ用の何かが大量にあったんだろうな
https://i.imgur.com/oYuMAwa.gif >>416ですが、
タイマー割込でon/offさしているLEDが、電源ON時に点滅しないのは、
PICが暴走しているからじゃないかと思います。
PICKit4を使っているのですが、暴走しているときに、
プログラムがどこを走っているか解からないでしょうか?
あとネットで検索するとスタックが強テイルのではないか というのがありました。
PICKit4でスタックの使用量(?)は調べら増すでしょうか? >>421
MCCはよく知らないけど、
ソフトバグで割込み記述のない所に
飛んでいったりした時とかの為に記述だけしておく
Breakポイント仕掛けておいて、
引っかかった時にレジスタ読み込んで解析
トラップルーチンってMCCだと自動生成してくれるのかな >>421
余ってるGPIOが有ればそこにフラグを立ててその信号をロジアナやオシロで見ればいいと思うが
あとはPickitのデバッグモードで動かせばいつでも止めて(もしくは止める地点を設定)して実行箇所わかる >>421
あれこれ言われるの嫌だと思うけど動かしてる回路の写真とコードを上げれば
最短で何か回答を得られると思う
https://imgur.com/upload (写真)
https://pastebin.com/ (コード) >>422 423
ありがとうございます。
>Breakポイント仕掛けておいて、引っかかった時にレジスタ読み込んで解析
>Pickitのデバッグモードで動かせばいつでも止めて(もしくは止める地点を設定)して実行箇所わかる
デバッガーは、暴走中のPICからでも値をゲットできるものでしょうか?
スタックの空きとかは、ブレークポイントで見えそうですね。
実はデバッガ使ったこと無いのです(恥)
>>423
>余ってるGPIOが有ればそこにフラグを立ててその信号をロジアナやオシロで見ればいいと思うが
_RA1=1; _RA1=0; というのを、ある点では1回、ある点では3回とかにして
オシロで見るのは やっています。結
構便利で、いくつかのバグが解決されました。あとはprintfです。
>>424
ありがとうございます。
>あれこれ言われるの嫌だと思うけど動かしてる回路の写真とコードを上げれば
気持ちを察していただいてありがとうございます。
恥ずかしいので、それはやめておきます。せっかくですが すみません。
動作確認でtimer割込でパルスを出してオシロで見ています。1ms。
正常に起動したときでも、UARTから1文字入ると暴走してしまいます。
100%の確率です。
暴走の判定は、timer割込のパルスがHべタ、Lベタで停止するから、暴走だと思っています。
PICKit4を使ったデバッグの方法、熱湯で探してみます。 >>425
せめて
・PICの型番
・電源の供給手段
・URATの接続手段
・BORの設定
・MCCのコードに手を加えたか
・発信回路の詳細
以前の文章から外部発振(水晶)だと思うけど内蔵発振でも起きる?
状況からしてUARTの割り込み後に無限ループが起きてると思う >>425
暴走じゃなくて割り込み入りっぱなしだったりしてな。 pickit使ってるならpauseで止まるだろうに。
Cソースが出てくるかどうかは分からんが。 割り込み処理を見ろ
MCCではたいがい
if(XXXIF){
}else if()
...
のようにelseが入っているので、先頭のIFがクリアされない限り永久ループなのでは あはは。
またPICの罠にハマってる奴がいるのかw
PICでチャレンジするのが間違いだって
早く気づけ。 > PICでチャレンジするのが間違いだって
> 早く気づけ。
理由も書かずにこんな非論理的なことを書くやつにはそりゃあPICに限らず使いこなせんわな 古い石だと、割り込み処理開始・終了時のレジスタ退避・復元を
自分で書く必要があったけど大丈夫?おじさん心配よ(^p^;) PICも使えないようなヤツに何のマイコンが使えるかってんだ! PIC一括りで語っちゃうのは気が引けるけど、
他のマイコンでしなくていい苦労を強いる(品種がある)
ってのは良くないよね。 >>432
その顔文字、やめてもらえませんか?イライラします。 >>434
例えばどんな苦労があって、どの品番ですか? バンク切り替えが必要な品種全部
1/4クロックの品種全部 >>439
ろくに知識も無いにわかがそこらで集めた古い情報を聞きかじってディスるときの定型句 >>434
苦労を強いる品種を避けるスキルがない自分のことはどう評価してるの? >>443
で、未練がましくここでくだ巻いてるのはなぜ?
PICのことなっかスッパリ忘れりゃいいじゃん、馬鹿なのかな? >>443
気に入らないけど無視できないわけな、悔しいのうw これから始めるような人に最初に間違った選択して時間無駄にすんなよ、
選択肢はPICだけじゃないぞ、って言いたいだけ。 >>446
だね〜これから始めるなら[CPU,ROM,RAM,IO]が別々のマイコンから始めた方が理解が深まるのが早いよね
入手性の良いZ80のキットなんかが良いのかな? >>446
でもそれを上回るメリット(何をメリットとするかは人によって変わるので
何がそれを上回るメリットなのかをここで議論する意味は薄い)があるなら
デメリットがあっても選択の対象にはなるしね。
どんな目的があってもここはPICをディスるのには相応の場所ではないから
よそでやって。 >>446
初心者に間違った古いイメージを吹聴して選択肢を奪ってるのはあんたの方
ディスコンしないようだから、初心者さんは参考サイトの書かれた日付に注意が必要だけど
新しいの使えば何も問題は無いよ デスコンしないって言うけど、それって「大口さんが必要な時は特別生産しますよ」
ってだけの話で、個人レベルでいつまでも入手できるって話じゃあないよねw
あるいは買えるけど最新デバイスに比べて性能も周辺もプアなのにクッソ高いのを
許容するか。
デスコンしない云々はたいしたメリットにならんわw >>450
それ>>449へのレスなの?
話が全く噛み合ってないね 性能も周辺も使い切ってるアマチュアがどれだけいるのよ? 要するに好きなの使え
PICを最初に目を付けたのならそれが運命なんだからPICから覚えればいい アセンブラじゃなかったらバンク切り替えとか意識しないし このスレみりゃ分かる。
まともに解決できた試しがないw >>450
>>449 は「ディスコンしない」をメリットだとは言ってないよね?
>アセンブラじゃなかったらバンク切り替えとか意識しないし
あれ。おれの記憶違い? 配列のサイズは、今のXC8はバンクサイズの制約は受けないのだっけか。 私が友人から「8ビットCPUの勉強をPICで始めたい」と言われたら、
まぁ、とりあえず、「チョット待て」と止めるだろうな。 小さな制御用8ビットCPUを理解し、楽しむなら、
最初からアセンブラで組むのがお勧め。
CPUの内部構造や、PICとAVRの違いなどもよ〜く分る。
Cの勉強はそれからでも遅くない。 何かの実現のためにマイコンを使う人と、マイコンのためにマイコンを使う人とがいるしね。 >>457
代替案も示さずにただ待たせるのか
友達いないだろ、お前
というより
>8ビットCPUの勉強を
>小さな制御用8ビットCPUを理解し、楽しむ
なんて奴が居た試しがないだろw >なんて奴が居た試しがないだろw
根拠もなくこんなことが言える人がいることは想像はできるね。 >>462
>8ビットCPUの勉強を
>小さな制御用8ビットCPUを理解し、楽しむ
というヤツの存在を過去スレから引用してみ、居るなら証明できるやろ
居ないことは証明できんのでなw >>463
いないことを証明できないなら、「なんて奴が居た試しがないだろw」と言うべきじゃないよ。
多様性を前提にすればいることは証明できなくても想定できる。
といっても>>463には理解できないかもしれないし、反発する可能性があるけれど、それもまた多様性があるから。 こんなにもPICをかばう人が居て
マイクロチップテクノロジの中のPICを設計した人も
さぞやお喜びでしょうw >>465
あなたが>>464を読んで、俺があなたに、あなたが望むような過去スレを提示して差し上げるように見えたの? PICを擁護する人って、なんか非論理的でアホっぽいというか、粘着質っぽいというか、
話をしても通じないな、時間のムダだな、相手するのは止めよう、
と思わせるようなところがあるよう気がしちゃったりしてしまうのはオイラだけ?w >>466
いろいろなマイコンにファンはいるしね。
とりわけ、PICについては、今もなお秋月がそれなりの広告リソースを割いているわけで、少なくない数のファンがいることは想定できそう。
でも、何かのマイコンのファンでいることは自分への呪縛だと思う。呪縛から自由でいて、いろいろ先入観なしで使える方が良いと思うけどな。
あとメーカーとしてうれしいのは、ファンより大口顧客だと思う。 >>468
PICでもSTM32でもファンってそういうもの。
それと、擁護する行動を引き出すのは、たいていの場合は攻撃があるからだけど、
攻撃する方も、ファンの非論理的な部分の感情を刺激するケースが多いと思う。
わりと言えるのは攻撃する方も性格が悪い。 私はPICの大ファンです\(^o^)/
大好きなPICを馬鹿にされると怒りが抑えられません(# ゚Д゚)
私は頭が悪いので複雑なマイコンは使いこなせそうにないです( ;∀;) >>467
あ、お前は>>457ではなく、ただ横から口をはさんだだけのおせっかい野郎だったか
すまん、ついおかしなヤツの相手をしちまう癖が出てしまった 乗り換えコスト>>乗り換えで得られるゲイン なら乗り換え躊躇する事ないけどな 今のところSTM32だけど 固執する気はない。 >>472
根拠もなしに同一人物判定をする人も多様性の端っこにはいますしね。 >>473
>乗り換えで得られるゲイン
いろいろなデバイスを選ぶときの、唯一最大の条件が「手に入れられること」になるかも。(すでになってるか) PIC32の事を忘れないでください
AVRは?www >>474
根拠はあるさ、お前がレスを返してきたこと
問題は横から口をはさむおかしな常習者が居ることを忘れてたこと
以後気を付けるよ >>477
そう邪険にするなよ
全部自分へのレスに見える異常者で
ここでしか相手してもらえないヤツなんだからさw 反論してくる人は、同一人物か。それはおかしいね。
>以後気を付けるよ
なんでも学習。 >なんでも学習
引導渡されてるのにこの返し、頭おかしいなこいつw avrのmega328Pみたいな初学者は迷ったらこれ買っとけばええみたいな機種ないんよな
中華のコピー品pickit3はあるがarduino並に手早く始められて不満が出たら移行できるお手軽環境あればええんやが PICだろうがAVRだろうがSTM32だろうが何から入ったって同じだよ
ごちゃごちゃ言ってるのは抽象化して勉強するのが苦手な奴ら >>484
「並」がどういうことを意図してるのかわからないけど、
いろいろなセンサーや表示器ライブラリがネットにあったり、ファイルシステムも使えたり、
USBのCDCとかHID入力デバイスとかを構成したり、がarduino並にできる、ってことは期待しないほうがいいよ。
少なくともPIC16Fは、mega328Pとは方向が違うものだし。
「なんたら並」を期待するなら、特に事情がないなら他のものではなく、まっすぐに「なんたら」を選ぶのがいい。
それと、Pickit3 だと、新しめのPICのサポートは良くないのでは。 >>485
>PICだろうがAVRだろうがSTM32だろうが何から入ったって同じだよ
俺もそうも思う。
入口はなんでも、とりあえずやってみて、ああAruduino並にはならないな、って思ったり
自分がやりたいことをしにくいな、って思ったら、いろいろ乗り換えていけば良いわけだし。 >>484
avrのmega328Pが
初学者は迷ったらこれ買っとけばええみたいな機種
だってことを初めて知りました 男の娘初学者
服、ヅラ、カラコンを買って付けてみた 私はPICのプログラムを3回作ってから(プリント基板を3回作った)
駄目だこりゃ、とAVRに乗り替えた。
結構ツラかったぜ、時間と金をムダにしたって。
ちなみにPIC16F84からAT90S2313へだけど、誰だって乗り替えるよね。
事前にもっとちゃんと調べれば良かったって後悔した。
レス読むと、その後PICは変ったらしいけど、
AVRで満足しているので、そのままtinyやmegaを続けている。 私がPIC16F84 の一番ダメだと思った点は、
脳内に浮かぶフローやアルゴリズムを
脳内でアセンブルしてニーモニックや数値をキーボードから入力する
が難しかった事。
いちいち思考停止して変換しなければいけなくて、
流れるように作業する、が出来なかった。
今のPICが可能かどうかは使ってないので分らない。
私だけの問題かも知れないな、間違ってたらゴメンよ。 >PIC16F84から
な、この程度の認識なのよ、アンチってw 出ましたよ、PIC16F84 www
ジジイの昔話なのか情弱の馬鹿宣言なのか、どっちだろうね。 PICでは機能が足りなくて作れないってのならPICが駄目と言えるが
この例ではPICが駄目だったのではなく
自分が駄目だった(控え目に言うと相性が悪かった)ことを認めよう >>ID:2oISKtaX
古いPICと新しいAVR(五年ほど後発)を比べてPICをこき下ろすアンチの常とう手段
逆にそれ位のハンデ(この世界の数年はひと昔)がないと比較対象にできない、だからAVRは買収されちまったw >>495は 仮想アンチPICの人を侮辱することを意図してるんじゃないの? 企業は、自分たちになくて、ほしいものを買収するものだしね。 果たして全部欲しかったのだろうか、って話だけどなw 本当に欲しかったのはARMの製品ラインアップだろう。
その他はおまけ程度 MicrochipはAVRをじわじわと真綿で締める事が出来るってのにそれに気づいてない奴居るよね
生産しませんってやれば良いだけだから おまけにせよせっかく買ったんだからArduinoでチヤホヤされてる間は下にも置かない扱いだろう。 >>505
傘下に収めて真綿で絞める意味がどこにあんの? >>507
必要なのはARMだったの。8ビットは高くするなりディスコンにすりゃ良いの
乗り換え出来ないのは美味しいでしょ?
商売敵が買ったって時点でわかれよ >>460
ぼくも16Fとかはいい石だとおもうけど、
いま8bitマイコン希望してる子になら僕は勧めないなぁ
だってほら、あの子たちインストラクション14bitだし(^p^) >>508
>必要なのはARMだったの。8ビットは高くするなりディスコンにすりゃ良いの
PICもAVRも新製品を出してるぐらいだからね。それぞれにそれぞれの市場性なり
ニーズがあるからでしょう。
何のアンチであれ、たいていのアンチは自分の好き嫌いが正義だと思ってる
ような人たちだしね。そういう人たちが想像で言ってることを聞くよりも、
バイアスなしに新製品の状況を見る方が良いと思う。
真綿だってさ。想像想像。 PICと競合するか維持コストがかさむならディスコン
PICの利益を維持しつつAVRも利益が出るならそのまま
企業なんてドライだから
商売敵とか全く的外れ 買収前だって多品種展開やってたんだし
「冷やし中華 始めました」くらいの感覚でない?
AVRが加わったところで >>494,495
お金も時間も無駄ではありません
その努力は今のあなたにきっと役にやってます\(^o^)/
今のPICはですね〜C言語で開発(無料)出来るので
簡単に複雑な機能を実装できますよ〜
>>493
個人的にはカラコンより先に毛の処理(脱毛)だと思う
けど友達がムダ毛が殆ど生えて無かったら処理無しでも女装した時は綺麗だったなぁ >>483
種類多すぎてオワタ\(^o^)/
AVRでもMPLAB X IDE使えるんですか?(開発環境はほぼ一緒ですか) >>511
>企業なんてドライだから
企業ドライ説にたつなら、
「PICも維持コストがかさむなら生産縮小、利益が出るなら継続」
だしね。
ところで、PICはディスコンしない説ってあるけれど、それを鵜呑みにして
「今使っているPICがいつまでも、今の価格や入手性から大きく変わることなくずっと入手できる」
と思ってる人いるね。事実確認も期待も甘い。 ディスコンしないのだって今のセールストークなだけであって
将来に渡って保証されてるわけじゃないんでしょ
まあそもそもホビーユースに毛が生えたような使い方でディスコンは関係ない
趣味使いなのにディスコン言い出すのは滑稽ですらある 趣味の電子工作におけるディスコンはID:2oISKtaXみたいな間違った認識の温床でしかない
さっさと新しいチップを使うべき
そのためには参考にする記事の書かれた日付を確認するという当たり前のことをするだけ
あるいははじめから期間を限定して検索する
上のようなディスコン談義はそもそも趣味の個人には何の意味もない だがその一方で、長期間運用されている実績は信頼性に繋がっているともいえるだろう
長く使われている物には相応の価値が伴う、新保守主義に連なる考え方やな。
当初は安全と思われていたが、発がん性が発覚して使用禁止された 変圧器のあの絶縁油(PCB)のように、
新しいものに闇雲に飛びつくのもリスクを伴うと言えるだろう・・・
だから、さあ、PICのマイコンボードを使うのです・・・(ごごごごごご MPLAB XpressでMCC使えなくて困っています(ボタンがグレーアウトされています)。
どなたか解決方法知りませんか?
MPLAB Xpress表示後に以下のようなメッセージが表示されるのが、
原因かと思いましたが、アップデートの方法が分からない状態です。
>MCC v5.1.3 has been released. Please go to Help menu and select Check for Updates to get the latest update
上記メッセージが表示されるのでHelp => Check Updateを実行しても「The Xpress image is up to date」と表示されてしまいます。 >>514
>種類多すぎてオワタ\(^o^)/
始めようぜ!\(^o^)/
>AVRでもMPLAB X IDE使えるんですか?
使えます〜
>(開発環境はほぼ一緒ですか)
色々な意味が含まれてると思うので回答し辛いですが
PC,SNAP等の書き込み装置,MPLAB X IDEの3点でPIC,AVR(古い物を除く)の両方の開発が可能です
(ですがAVRはAtmal Studio(旧AVR Studio)での情報や参考書が多いと思います) PICはディスコンしないと言ってる?けど(=物理的ディスコン)秋月が取り扱いやめたら
結局入手出来なくなる訳で(=論理的ディスコン)
個人が趣味で使う範囲においてはディスコン云々は全然メリットに感じないなぁ
というか趣味で使うようなAVRだってほとんどディスコンされてないよねw Microchipに移管されたからな。
とはいえMicrochip にもNRNDはある。 ぐぐった!!
"NRND":新規設計非推奨品(Not recommended for new design) AVRは入門用のtiny2313でもタスクディスパッチャ書けるのにな >>521
送料高いけど、メーカー直販で買う手があるよ。 倉庫のトイレットペーパを見せびらかしても御覧の有様だったのが記憶に新しい。。。 すぐタスクディスパッチャができるとか書く人がいるけど
ボタンを押した時間さえ計測するのが面倒
delay関数の正しい時間での実装が大変、そもそも2つ以上のタスクがdelay使っても
正常に動くようにするにはどうするのか。
正確にタイマーでなく命令単位で20ms待つには、みたいな。
できないこともないけど、すごく大変なんじゃないかな。
そんなら、ラズパイとか使ったほうがいいんじゃない?
マイコンの利用目的は、もっとこうタイミングクリティカルとかパルスを正しい周期で正しい期間出すとかそういう用途に向いていると思うのだが。 高機能なマイコンでやってることを低機能なマイコンでやってみるのを
「つかいこなす」
と定義している人がいるしね。 >>520
詳細ありがとうございます。おかげで雰囲気が物凄い分かりました。とりあえず、PIC18F57Q43で頑張ろうと思います。評価ボードあるやつがお薦めですなんですよね多分きっとということで選びました >>529
TCP/IPを処理するなら、32bitの方が楽だからな。 >>530
始めるのにPIC18F57Q43でも問題は無いのですがWeb・書籍での情報は少ないと思います
PIC18F57Q43の開発ボードを調達した場合はSNAP(やPickit4)などの書き込み装置は無くても始められます
もしマイコンの経験が無く始める場合は情報(作例)の多い物を使った方が安心です
マイコンを始める場合は「プログラムの知識・マイコンの知識・電気回路の知識」が必要になります
情報の少ない機種を使った場合、上手く動作しない原因を特定する難易度が上がると思います
今の時代に新規で始めるなら[Arduino Uno(かNano)]あたりが無難だと思います
その後知識を得たら[PIC,AVR,ESP32,STM32]辺りに手お出してみてはいかがでしょうか?
またArduioUnoでAVRの勉強(開発)が可能です
PICの場合古い情報〜新しい情報までが入り乱れてます
PIC18FよりPIC16F1xxxxの方が情報が多いです
またAVRならArduinoで初めてAVRの使い方を勉強すると難易度が低くなると思います >>530
>評価ボードあるやつがお薦めですなんですよね多分きっと
それは違う
でも、評価ボード用の公式のサンプルを一通りやるってのもいいかもね 趣味でどんなCPUを使おうと「カラスの勝手」だが、
PICだと実現できないLチカ(つまり論理的に単純なプログラム)さえあるのに、
<いいのか、それで?プログラミング力を伸ばしたいと思わないのか?>
と気になるんだよね、ジジィとしてはw 536が唯一可能なのはNOPを全面敷き詰めて最後LEDトグルして戻るって奴なんだろう。
PiC古い奴はメモリ小さくて点滅ならないって奴。 すべてをポーリングでこなし、それゆえ必要となる工程数のカウントを高度なプログラミングと勘違いしてる人 さて、もうちょっと有意義な話をしようよ。
例えば、PICのADCは結構高性能とか。
Seeeduinoに使われているATMELのSAMDは32bitマイコンだが、
ADポートをGNDに接続してAD変換やってみなよ。
0Vといわず0.8Vあたりから非線形になっていくので、
ちょっとレンジをとりたいAD変換にはまるで役に立たない。 >>536
ジジィだったんか ( ;∀;)
もしかしたらツンデレ美少女(金髪ツインテール)って思ってたのに
なんてこった\(^o^)/ >>542
PICのADCは実測だとかなり良いですね〜FVRの電圧もかなり正確に出てると思う
それで、ちょっと気になって手持ちのXIAOで測定してみたんだけど
急ぎだから測定方法は簡易的だけど問題ない値に思える\(^o^)/
100mV 102mV
200mV 199mV
300mV 304mV
400mV 397mV
500mV 498mV
600mV 597mV
700mV 694mV <ドン詰まりのCプログラマに贈るサンプル2本>
久しぶりだな、オイ、もうpastebinのサンプルは腐ったかと思ってた
タイマ1個で8個のSWのチャタリング除去やLEDの点滅などをやってるんだぜ
しかもCPUはFlashROM2KB、SRAM128Bのtiny2313なのにゲームまで付いてるw
https://pastebin.com/hZ4EiF7m
おまけ タイマ1個で済む理由、リエントラント
https://pastebin.com/ZYFYsR3S
>>543
心は「永遠の紅顔の美少年」、しかして実態は死に損ないのジジィだ、悪かったなw
最近階段の上り下りがツライ・・・
電電板ライターとして技、心共になかなかのもんだと感心している。
これからもイヤがらずたまにはフォローさせてくれ。 >>545
いつものを見ると少し嬉しく思えてきた( ;∀;) 愛だね〜
これ、僕のPIC愛なら8ピンのPICでできま\(^o^)/ PICとは直接は関係ないのですが質問なのですが
マイコンで良く使われるキャラクタディスプレイ16x2行ってあるでしょ。
それを7セグLED数個に置き換えたいのですが(数字だけ表示出来れば良い)、
プログラムはなるべく変更したくないのですが、どんな方法がお勧めでしょうか?
LCDキャラクタディスプレイ互換の7セグLED表示器なんて売っていないですよね? LCD相手に出力してる関数とかをなんで変更したくないのかわからんけど、
本気でその方針でいくなら(HD44780U系のLCDドライバを用いた
キャラクタLCDだと仮定すっと)
・一文字出力
・一行出力
・制御コマンド送信(カーソル位置とかカーソル形状・点滅とか)
そーゆー呼び出し関数を組んであって使ってるのかな。
だとしたら、関数の定義部をまるまるコメントアウトして、
7セグ用のドライバを、既存のと互換の仕様のインタフェースで実装して
呼び出し関数は同名のモノを用意するって感じなのかなぁ。。。
そんなしちめんどくさい事せずに(呼び出し関数なんて無理に残さずに)
直に表示するよう書き換えた方が よっぽど楽じゃねえかという気もするが。
いや、事情しらんけど;^p^) >>542
レールに近い電圧は、性能落ちるのは仕方ない。 >>547
LCDって秋月とかで売られてるこれ系の奴かな?
https://akizukidenshi.com/catalog/g/gP-00040/
>プログラムはなるべく変更したくないのですが、どんな方法がお勧めでしょうか?
いや〜プログラムを変更するのが一番楽だと思うけど・・・
プログラムの変更が困難ならLCDのバス信号をマイコンで読み取って7セグのLEDを表示させるってのもあり
>LCDキャラクタディスプレイ互換の7セグLED表示器なんて売っていないですよね?
作るのは出来るけど見たことは無いね〜 何でそれが必要なのかとか二行いるのかとか16桁もいるのかとかようわからん >>545
「自動車の模擬ライト」
これ、僕のPIC愛なら8ピンのPIC(16F1572)でできま\(^o^)/
(数年後)・・・
したーーー!\(^o^)/ >>553
>何でそれが必要なのかとか二行いるのかとか16桁もいるのかとかようわからん
LCDだと一色で地味なので。
二行欲しいです。4桁くらいで十分です。 microchip fourm 行ったら過疎ってて泣いた 4桁二行か・・・
はたしてこの子のスキルで
ダイナミック点灯(と言う点灯方式があるのよ)が
できるのか・・・おぢさん心配よ(^p^; >>555
表示器とのやり取りに使うインターフェイスは? ダチョウ倶楽部の
初めて来たんだけど
何でAVRのスレに比べて過疎ってんの?
AVRのほうが優秀なの? シラフで比べればAVRが優秀です。Arduinoというデカいゲタもありますし、賑わうのも当然です。
ここの皆さんは「こんな制限ついてるPICを使い切ってる俺イケてる!」って風に自分に酔ってます。 picスレは分裂してるからな
こっちは初心者向けのスレ XIAOって実はRP2040のバージョンもあるんだが、どっちを測定されました? >>564
ここに来た人たち全員に(((*・ω・(ε・* ))) チュッ♪ してたら
誰も来なくなりました
>>565
PIC使ってる僕SUGEEEE!!って思ってたのに
もしして、僕って行けてないの(;´・ω・)
なんてこった/(^o^)\ >>568
測定したのはSAMD21G18の方です
測定した時の環境は
・配線長め(90cm位?)
・電源PCからのUSB供給
・電圧基準 内部基準1.0V・ゲインコントロール x1
・本体付近にコンデンサ等の設置無し
・ADCへの入力電源誤差最大2mV程度有
もし必要ならもう少し精密に測定します~
RP2040のバージョンは存じませんでした
面白そうなので今度一個買ってみます\(^o^)/ AVRが好みの私からPICファンの皆様に捧げる言葉 「蓼食う虫も好き好き」
世の中にはおいしい葉っぱが他にいっぱいあるだろうに。
我が家のバラも毎年必ず虫がつくので対策が大変です。
・・・イヤ待て、人間は蓼を和え酢にして食するぞ?!w 世間様からみれば、AVRでもPICでもマイナー愛。
マイナー愛の人が、ほかのマイナー愛の人を、お前の好みはマイナー愛だと嗤うようなのってみっともない。
まして、32ビットのメジャーマイコンを欲しくてよそのメーカーを買ったメーカーの中の、8ビット村の中の隣組同士じゃないか。 なんでこっちに来るの?
バカなの?
バカなのに人に物を薦めるの?
向こうで誰にも相手にされないの?
自分の自慢話を聞いて欲しいの? >>572
内部基準1V、ここが私の測定と違うところかもしれません。
電圧基準Vcc
使うのはほぼ1V以下なんですができるだけ広いレンジを取りたいという要望がありまして。
で、例えばGNDを測定すると、12bitとはいえ30くらいの値を返すんですね。
どうも個体差があるようで、もっと出るものもありました。
PICでは12bitでもせいぜい3とかくらいなので、PICは優秀だなと思ったわけです。 >>574
間違えたー\(^o^)/
ついでに「×行けてない」も変じゃない?「イケてない」だ(;^ω^) >>532
ご丁寧にありがとうございます。
古い評価ボードは入手が難しいのでやむを得ず新しいボードとなりました。
AVRと言う選択肢は見落としていたのは正直なところです・・・
>>534
評価ボードがお勧めではないということですか?それはどのような理由なのですか? >>578
すでに何らかの方法で解決した後だと思いますが
(基準VDD以外にも詳しい状況がわかれば再現してみますが?)
>例えばGNDを測定すると、12bitとはいえ30くらいの値を返すんですね。
この値になるとデータシート範囲も超えてるので何か解決可能な手順が有るのではないかと思います
(Offset Error Ext. Ref. 1x -5.0 typ1.5 +5.0 mV)←条件は違いますが大きくは変わらないはずなので
・VRef(-)を外部入力にする
・サンプルタイムを長めに設定する
・入力インピーダンスの考慮
・サンプリング時間や変換速度の調整
・オーバーサンプリング
入力がVDD~GND間の相対電圧ではなく絶対値の場合は
内部基準1Vにして入力ゲインを1/2にすれば0~2Vまでは測定できると思います
入力電圧を分圧等で変換してからゲインコントロールにて入力レンジを拡大すると良いかと思います XIAOのGND測定。スレチだけど
https://forum.seeedstudio.com/t/xiao-adc-problem/255530/4
マイコンの問題なのか、ボードの作りの問題なのかどっちだろう。
アナログとなると、素のマイコンICを扱うのと完成ボードを使うのとでは、
自分でコントロールできる範囲が違ってくるね。 スレチだからもうやめますけど
結局XIAOを使うのをあきらめ、PICの巣へ戻りました。
時間は1日3時間もとれないのと、
それでも1日程度で片付けてしまわないと他のことが進まないため、やむを得ずといったところです。
補正レジスタがあるのはわかりましたが、1次関数の切片と傾きを変えたところで
測定した結果が曲線になっていることもわかっていたので、意味ないと判断しました。
もっとやればなんとかなったかもしれませんが、ADCは他のマイコンにもありますし、
個体ごとに違うのでキャリブレーションを毎回しないといけないのも問題ですし、
Arduinoでレジスタを直に叩くというのもなんだか・・・といったところです。
Arduinoには詳しくありませんが、ライブラリが非常に豊富で、ちょっと書いただけで
目的がすぐ達成できる点はすごいと思いました。 >>582
while(!Serial);
こんなんで解決するのかなぁ・・・・。
月曜日にやってみるか。 >>583
スレ違いではありますが、PICの話題も途切れてるので今のうちに(汗)
XIAO(SAMD21G18)のADCを使い電圧をもう少し丁寧に測定しました
正直なところ自分自身で詳細を把握しときたかったのが理由ですが
https://i.imgur.com/tRcHRKK.png
概ね入力のgainコントロールで解決できそうに思います
(VDD比でフルスケール読むとGND付近の数値は誤差が大きいです)
(これは入力ゲインをコントロールすることで改善可能です)
Arduino環境(当方PlatformIO)ではメーカーがNVMに書き込んだキャリブレーション情報は
ADCレジスタに反映されてました(起動時に適応されてるみたい)
>while(!Serial);
これは関係ないと思います(当方、無有で変化なし) 何を開き直ってんだ?
完全にスレチだろ、いいかげんArduino互換スレ行けよ。 PIC18Fのタイマー1を学習中なのですが、正しく設定できているか不安です。クロックやタイマの割り込みをオシロスコープなどに繋げて観察などできるのでしょうか?皆さんならどうやって確認するのか教えて下さい。 >オシロスコープなどに繋げて観察などできるのでしょうか?
できるよ。
皆さんそうやってると思う。 >>589
>クロックやタイマの割り込みをオシロスコープなどに繋げて観察などできるのでしょうか?
出来ます
不安なときはオシロスコープやロジックアナライザーで確認します
たまに本体のクロック設定をミスする事も有りますので
タイマーは割り込みでGPIOをトグルすることで確認するのも良いと思います
また、クロックはGPIOに出力する事も可能ですが(コンフィグレーションレジスタ等の設定で)
PLL等やの影響も受けるので実際の動作で確認するのも良いかと思います
GPIOをHIGHにしてNOP();を50個位書いて(ループは使わない)GPIOをLOWにする
このHIGHの時間を測定して命令サイクル的に妥当な間隔であればOKとできます
システムクロックでPLLやFOSC/INTOSCは間違いやすいです 文句言うくらいなら、18F27Q43あたりのADCの性能でも見せつけてやれよ。
PICスレらしいだろ。
話題もないんだし。
とりあえず測定お疲れ様です。
ほんとは上に書いたようなPICのADCの結果でも載せればよいのでしょうけど、
時間がなくて・・・。
でも、とりあえず0を入れるとほぼ0が出るのは間違いありません。
特性を詳しく調査したことはないのですが5VとFVR4.096Vくらいを
比較に乗せられるといいですね。
時間ができたらやってみます。 >>589
手軽な方法としては、Timer1割り込みでGPIOをトグルなりパルスなり出すのが楽でいいでしょうね。
本当に厳密に瞬間を見るなら、CLCでT1_overflowを入力にして、どこかのピンに出してやるといいと思います。
まあでも、この件では前者でいいでしょうね・・・。 バカついでにもっと簡単に目で確認したいなら、Timer1割り込み内でカウンタをカウントし、
適当な周期でLEDを点滅させるのもおすすめです。
極端に周期が違えば、設定が違うということになります。
私は適当な人間ですので、たいていオシロも使わずそうやって確認してきました。 GPIO見るだけならロジックアナライザが最適だよね
値段安いしサンプリング速度は早いし
持ってて損はないと思います >>585
一個300円くらいでアマで売ってる
デジタル電圧電流計はどんなICで作っているんだろう?
そのMAX10ってのは便利なの? >>598
賃貸です。今月更新しました\(^o^)/
お城は低所得なので買えそうにありません( ;∀;) >>603
変に絡んでも顔文字を使うようなふざけた奴は調子乗るだけだから
実害が無いならほっといた方が良いよ >>592
18F27Q43はADC四天王の中でも最弱
もし18F27Q43が負けても次にPIC24FJ128GC010が待ち受けてる
そして最後にはADC魔王PIC18F87J72が待ち受けておる\(^o^)/ >>549
PICの名称由来を踏まえると、案外本道のような気がする・・・(^p^;
LCDドライバ互換インタフェース作成のためのPIC活用=PICでマイコン周辺機器を作る そういえば、Microchip社のUSB-シリアルブリッジICは、ベースはUSB機能内蔵のPICって何かで読んだ。
昔のキーボードコントローラも8048のカスタムじゃなかったっけか。
ワンチップマイコンを周辺の単機能デバイスとして使うのはよくあること。
FM8もサブCPUを使ってた。(ワンチップマイコンじゃないけど) >>605
最後の顔文字は、何の意味があるのですが? 「無意味」という深遠な意味がある
「無常」などと同じく、凡人には理解し難いが
「無常という事」(小林秀雄)を読めば少しは理解できるかもしれない まあコテやってNG食らう気概もないのに顔文字で出さなくていい個性出して半コテやるみたいな奴が好かれることはないわ ちょっとだけ自己主張してみる・・・慎み深くていいじゃないかw
誰が書いたか責任者もすぐに分るしw
俺は好きだな タイミングチャートの勉強をしています。DMTxTMRの数字はビットなのでしようか。0はずっと上書きされているイメージですか?
https://i.imgur.com/S6CWNam.gif >>615
>DMTxTMRの数字はビットなのでしようか
SMTxTMRはタイマー内のカウンター(カウンターの値)
タイマーがカウントアップされる条件だと0>1>2の様にカウントアップされる
>0はずっと上書きされているイメージですか?
画像で0が連続してるのはカウントアップの条件を満たしていないため
設定やデバイスにもよるけど0が書き込まれるのはリセット条件や0を書き込んだ場合かな
実際の動きはタイマーの設定によって変わるから細かな点は追加質問してくれ レジスタ名 PR の内容が11だから
EN で かつ GO した後同期クロック後に 「反転」を開始して
11回目の反転後に割り込み発生、という動作なのかなぁ。
0に上書きならロー側だけ書いてあって、
このグラフみたいにハイ・ロー両方に書いてあるときは
「不定」という意図があると思いまするぞぃ。 microchipよ日本語マニュアルを増やしてくれ
xc8コンパイラとかMCCとか英語じゃ読めんのよ >>618
英語読めんしアピールだけでも馬鹿丸出しなのに
それをここでほざくとか馬鹿の上塗り ある程度読めたほうがいいのは確かだが、馬鹿とまでは言わない。
小国というか、人口1億ちょいの国のために、データシートを
日本語にしてくれるかというと難しいよね。
最終的に無理ならGoogle翻訳だ。 英語なんて字の種類は少ないし 読むのは簡単だよ? ちょっと勉強すれば小学生でもできる。
とはいえ、俺様もよめるというだけで、発音が正しいとは到底言えず、意味を正しくは理解できていないわけだが!(^p^)
web上にHTML形式で読めるならブラウザ先生が翻訳してくれるんやけど
ご丁寧にPDF形式に整えられていると、ゴグル翻訳先生画面へのコピペが
なにげに面倒なんよなぁ・・・メモも取りにくいし;ぐぎぎ 字の種類が少なければ簡単と言うなら
16進の機械語コードなんて当然すらすら読めるよね? >>620
データシートの英語は簡単だからな。
英語よりも、ソフトやハードの知識の方が重要。 >>623
たりめーじゃん 音読だってばっちりよ!!(^p^)
(メタなプログラム機能は 到底理解できないが) >>616
ありがとうございます。
SMT1CPWの値が想像と違くて苦戦中ですが、整理できたらまた質問させて頂きます >>622
>web上にHTML形式で読めるならブラウザ先生が翻訳してくれるんやけど
>ご丁寧にPDF形式に整えられていると、ゴグル翻訳先生画面へのコピペが
Google翻訳の「ドキュメント」タブで、アップロードはしないのかな。 日本語で読んだって最初は専門用語だらけでちんぷんかんぷんなんだから
いっそ英語で読んでも同じだろ。
気づけば大抵の技術系の英文は用語の補充だけで読めるようになってるはず。 10人中9人ができるからといって目の前の1人ができるようになるとは限らない。
その1人ができることをほかの9人ができるとは限らない。
できる人ができない人にできるだろというのは他者を理解することができないからかもしれない。 少し努力すれば誰でもできるようにはなるだろ
プログラミングは10人いたら10人できるとは思わないが
英語圏の人は10人が10人みんな英語を読んでるんだから
(もちろん読んだ結果を理解できるかどうかは別よ) PIC18F571Q43を使っていますがsmt x CLCKの周波数をどこかのピンに出力する方法あるのでしようか? >>626
どういたしまして\(^o^)/
解らない点はどんどん質問してくれ
その為のスレだから
質問でSMTの動作モードまたは計測目的(種類)が書いてあれば回答しやすい
SMT1CPWは条件にもよるけどSTM_Signal(かSMT_Windows)の立ち下がったタイミングで(入力の反転も可能だと思う)
SMT1CPWの値はSMT1TMRの値にコピー(更新)される ( SMT1TMR --> SMT1CPW )
↑のタイミングで設定(モード)によりSMT1TMRの値が継続してカウントされるか0からカウントされるか変わる >>619~622
僕なんて英語だけでなく日本語も苦手だけど
データシートはふいんき(←なぜか変換できない)で何とかなってる
XC8 ComppilerのPDFをGoogleで翻訳したらページ数オーバーで変換できず
DeepLで変換しようとしたら文字数オーバーで変換できなかった
\(^o^)/ ←お手上げ >>631
知ってる範囲&少し調べた範囲では直接出力する方法はなさそう
間接的ならPeriodに適当な値を入力してPeriodの割り込みでGPIOの出力をトグルさせ
その周期化からSMTxCLKを計算(確認)できる
( 64MHzのシステムクロック(Clock Select FOSC)でPeriod 500(0x1F4)の場合GPIO出力は64kHz )
周波数カウンタ・ロジックアナライザー・オシロスコープなどが有れば簡単に確認できる
もし↑の様な機材が無い場合は16MHzのクロックソースでPeriod->[0xF4 400]の設定を使い
1秒ごとに割り込みを発生させてLED等をトグル(0.5Hz)させれば時計と目視で確認できると思う >>633
pが一個多い( ;∀;) 赤の波線出てたのにスルーした >>634
オシロスコープで測ってみたら63.7kHzになりました!
計算方法教えて下さい。
1/64MHz*500(Period)*? 字面だけ見ると
64MHz / (500 x 2) みたいやな。しらんけど とすれば、1000分周してるだけなら1000倍して復元
63.7kHz x 1000= 63.7MHz が実周波数なんじゃね? しらんけど
ほんとわかってないので 全然違うこと言ってるかもしれんスマン >>636
割り込み周期が 64MHz / 500(period) = 128kHz
GPIOのトグル周期が 128kHz / 2 = 64kHz
(プリスケーラー1:1の場合)
トグル周期 × period × 2 = SMTxCLK
63.7kHz × 500 × 2 = 63.7MHz(SMTxCLK)
64-->63.7は内部発振回路使ってるなら誤差範囲です いつもありがとうございます。PICはクロック理解していないと駄目なことを覚えました。
各パターン測定してみましたので、結果を残しておきます\(^o^)/
clock divider Clock prescaler measument
64MHz 1 FOSC 1 63.83kHz
64MHz 2 FOSC 1 31.90kHz
32MHz 1 FOSC 1 31.92kHz
64MHz 1 FOSC 2 31.91kHz
64MHz 1 FOSC 4 15.951kHz
64MHz 1 FOSC/4 1 15.951kHz
*Periodは500 >>640
貴重なデータ、ありがとう。
顔文字、やめてね。 >>640
データシートのSMTの項目だけではなくクロックの項目を読む必要が有りますね
マイコンのクロックソースは図面を見ると理解しやすいです
慣れないうちはPDFを印刷して蛍光ペンやサインペンで図面にメモ取ると楽できるよ〜
https://i.imgur.com/aKjjgYd.png
https://i.imgur.com/JFwd5W8.png
蛍光ペンがガタガタなのはアル中だから\(^o^)/ ピン出力の1バイト、charとint8_tどっち使ってる?
まあ内部的にはどっちもcharだけど >>644
charは設定次第で型が変わってしまうから、int8_tの方が安心かな? ( ꒪⌓꒪) 500で割ってトグルさせたいなら、Period=499じゃない? いやーしかし、654さんが現れるまで誰一人気付かないというへっぽこぶり(^p^)穴があったら挿入したい!ぱこぱこ >643
秋月で売っているPICのデータシートを何種類か見てみましたが、
Signal Measurement Timer Block Diagramが見つけられませんでした。
Clock Source Block Diagram も種類によっては掲載されていません。
どちらの型番のPICのデータシートの情報化教えてください\(^o^)/ Period 499に変えて測定してみました。
63.94kHz〜63.95khzになりました\(^o^)/
※気温が熱いのでPeriod500でも再測定しましたが結果変わらず63.83kHzでした。
64MHz / 499(period) = 128.256kHz
GPIOのトグル周期が 128.256kHz / 2 = 64.128kHz
トグル周期 × period × 2 = SMTxCLK
64.128kHz × 499 × 2 = 63.99MHz(SMTxCLK) まだ一致しないんやな;残る差は何だろう・・・
あ。最近PICに触ってないから どーいうブロックだったかとか うろ覚えだけど、
昔はMPLABIDEにシミュレータが入ってたから
割り込み処理の処理カウント数をシミュレータで確認して、
タイマをゼロから始めずに 割り込み処理コスト分、
初期値を入れる(or 待ち時間定数を減らす) 様な工夫で
精度稼いだようなきをくがありまするぞい(^p^; 以前教えて頂いたCLKOUT(RA6)を測ってみましたので再計算してみました。
CLKOUTオシロの測定結果 3.995MHz
Period499 GPIO オシロ測定結果 15.98kHz
3.995MHz*4/(499+1)/2=15.98kHz
Period500 GPIO オシロ測定結果 15.95kHz
3.995MHz*4/(500+1)/2=15.954kHz
条件
PIC18F57Q43
Oscillator Select HFINTOSC
HF Internal Clock 32MHz
Clock Divider 2
Current System Clock 16MHz
※オシロスコープの性能が低いので周波数落としました >>663
ファイル内検索したのですがスペルミスしていたようです。無事見付けられました(秋月のデータシートのリンク先は古いっぽいですね。やはり公式からDLが良さそうです)
periodは激おこプンプン丸です(経験者でも見落とすということは精度重視の場合は要注意だということが分かりました) DualCHの周波数カウンターを作ってCLKOUTとGPIOの周波数測定してみた
間違いなく499が正解\(^o^)/
■・CH1-> GPIO_Toggle ・CH2->CLK_OUT ・HFINTOSC(64MHz)
◆Period 500
<sample1>
CH1 frequency > 00,064,154.4 Hz
CH2 frequency > 16,070,675.3 Hz
<sample2>
CH1 frequency > 00,064,158.3 Hz
CH2 frequency > 16,071,645.7 Hz
◆Period 499
<sample1>
CH1 frequency > 00,064,334.1 Hz
CH2 frequency > 16,083,545.3 Hz
<sample2>
CH1 frequency > 00,064,328.1 Hz
CH2 frequency > 16,082,008.9 Hz
おまけでロジアナも(Period500のみ)
https://i.imgur.com/EGedh43.png
https://i.imgur.com/ZqlWHvo.png
>>激おこプンプン丸
お詫びに一生使わないと思うAT90S2310を2個あげる ■■~*⌒ ヽ(´ー` )ホレ TOSCってなんの略なの?
FOSCはfreqency ociratorの略だと思うんだけど >>666
流石悪魔の番号 悪化しとるほうを正解と主張や・・・ >>667
High-Frequency Internal Oscillator (HF INT OSC)みたい
FOSCがSystem Clockってのはわかるけど公式が何の略なのか発見できない
>>669
666にレスしたあなたは同じレスを666回書き込まないと
祝われます\(^o^)/ 冷静に考えてみると、1起算なんだからやっぱ500であってんじゃね?(^p^;
0起算じゃないなら、ー1が何処で生じるのかわからんのデス;オーナンテコッタ
>>671
それは自分がアプリケーションノートとデータシート見て
アプリケーションノートを優先してしまった為です
https://i.imgur.com/KX2rv9K.png
アプリケーションノートとデータシートで仕様が違う罠が有りまして・・・ >罠
そういうことでしたか、すみませんでした><; 日本語翻訳版TB3129も1起算表記のままでした;
>>662
>3.995MHz*4/(500+1)/2=15.954kHz
これは計算ミスかもで、3995000*4/501/2≒1594.8ですから
662の方のは、666のとちがって0起算解釈が実測値にほぼ一致してるみたいですねぇ・・・;
えいごよくわからんけど関連語ググってひっとした↓は、較正に使う感じなのかな。
https://ww1.microchip.com/downloads/en/Appnotes/00002030A.pdf >>666
Ch2÷Ch1の比で見るのかな
500sample1:250.49997
500sample2:250.4999
499sample1:250.0000
499sample2:249.9997
倍にすれば丁度501と500ですな;やっぱゼロ起算なのか。 >>668
周期の単位ってTなんだね
多分それだわ MCCが生成する関数郡のリファレンスってどこにありますか? PIC難しすぎオワタ\(^o^)/
>>666 何やっている変わらなくて草 誤差が大きいクロック(水晶)って個体差があるということでしょうか。
それとも電圧や電流の影響でしょうか。気温や湿度の影響でしょうか。
誤差の最低と最大を実際に観測する方法あるのでしょうか? >>674
CH2はFOSC/4を外部出力したもの
CH1はSMTモジュールにてFOSCをクロックソースにしてPeriod499or500に設定し
割り込みを発生させてGPIOをトグルしたもの
(CH2*4=FOSC) / (500 * 2) = CH1 なら有ってるのでPeriodは499が正解でした >>677
MCCでコードを出力するとHeader Files>MCC Generated Files>にヘッダーファイルが作成される
ヘッダーファイルに関数の説明やサンプルコードが書いてある >>679
666で測定した周波数は内蔵発信回路の物です
水晶等を使ってないので誤差が大きいです(多分CR発振回路と言われるものだと思う)
https://i.imgur.com/NnTuAD1.png
温度や電圧により誤差が出ます
このデバイスの場合は通常の温度でも±2%の誤差が出る可能性が有ります
誤差を少なくしたい場合は外部に水晶等の発振器を使います >>678
落ち着いてやれよ。
いつも慌ててやるからそうなるんだよ。
顔文字やめてください >>677
生成されるヘッダファイルに書いてあるけど、
全部英語だしら分かりにくい。
自分がしたいのはこれだけなのに、
お節介な細かい関数まで、タップリ生成してくるので
理解するまでに時間がかかる。
こんなことなら初めから、自力で組んだ方が早かったと思うけど、
その時はもう、引き返せないところまで来ていることが多い。
たくさんの関数を生成するなめ、
各関数の包含関係を理解するのに時間がかかる。
1番上にある関数がどれなのか、説明が欲しいが、
全部の関数が同一のフォーマットで、ダラダラと説明してあるので、
とても分かりにくいし骨が折れる。
さらに、この書き方の関数もあるけど、今後は無くなっていくからね、と言う関数も生成。
しかも最新の関数と衰退する関数の関数名が同じ。
よーく目を凝らしたら、1文字だけ大文字が小文字に変えてある。
あの時は流石にキレそうになった。
総じて、簡単に誰でも使えるよと言う雰囲気を出しながらも
初心者にはハードルが高すぎる。 フルアセンブラが一番単純だよ、よけいなムダは一切無い。 一般的に自分が勧める方法のデメリットを伝えない人が言ってることは信用できないですね。
現在の使われ方の大小は、メリット、デメリットを反映して、世間が選択した結果です。
(´^ω^`) < 世間に合わせる義理は無いけどな
ないとはいえ、義理というと倣う事が素晴らしいようなニュアンスにも聞こえるけど、
常識賛美を保留して頭から考えてみると、「自分で能動的に世界と対峙」して(=人間的な生き方をして)
「苦痛や苦労を味わう」よりも、世間の常識に阿諛追従して 頽落 して生きれば
人生は格段に「楽」になって、そういう 世間に迎合 して
流される(非人間的な)生き方をする人のことを
ハイデガーはDas Man(世人/せじん)と表現したようですな・・・
このあいだテレビで、そんな話を見かけたきがする(^p^;)記憶が正しいか しらんけど pic にデュアルコアモデルがあるなんて知らんかったあ USB付きとかCPUコアと同じくらいトランジスタくってるんでないか? >>688
デメリットはいくつかあるだろうけど、私が感じているものは主に2つ。
1)プログラミングに時間がかかる。
アセンブラを始めた頃はCの3倍以上の時間がかかったけど、
サンプル部品のストックが増えてきたので、大分、早くなった。
(通信リングバッファや秋月I2C液晶の初期設定、16進<>ASCII変換・・・などなど)
それでもCの2倍以上は時間が掛かっていると思う。
2)可読性が悪い。
これは私が単に記憶力が無いせいかもしれないがw
リストのサブルーチンに機能や受け渡し情報などを詳しく書き
しかもほぼ1行毎にコメントを入れているのに、
半年ぐらい経過してハージョンアップなどで手を入れるとき、
何をやっているのか理解するのに時間がかかる。
最大のメリットは「プログラミング作業が楽しい」でしょうか。 ま、天上天下唯我独尊 孤高 敢えて群れず という事でお見逃しをw >>696
アセンブラーは保守性が悪いからなあ。
Cのように(ちゃんと)モジュール化・カプセル化しておけば、使い勝手の良いものが出来ていくって感触が、アセンブラーだと得られない。
それにCだと、機能によってはPIC以外でも使い回せたりするよね。
という訳でCが良いと思います。
アセンブラーは速度が足りなくなる箇所だけインラインで。 最近じゃ中国語のデータシートしかない中華カラー液晶のArduino用のライブラリをPICに移植したりした
Arduinoの裾野の広さの恩恵をCならちゃっかり拝借できるよね
アセンブラを使う意味なんて自己満足のオナニー以外には思い浮かばない >>698
最大クロックが速くなったので、
Cで遅く感じる部分は、無くなってきた。
画像処理とかは知らないけど、PICには荷が重いと思うし 12,16,18シリーズはアセンブラ化したコードが生成されるのが便利。
XC8ね。何やってるかよくわかる。
2bit以上のビットシフトが遅いのは、最適化されていないせい。
シフトがループ展開される。
uint8_t型だと足して2倍すると4倍が高速にできる。
でも、普通は少し最適化のことを念頭に置いておけばCで書いても、そこまで遅くならない。 為替レートをLED7セグで表示させるには
むりがある? >>705
PIC単独でリアルタイムの為替レートを取得するのが大変だと思う
PCと通信して表示するとかPICとESP8266を組み合わせて取得する等の方法なら出来る >>699
それこそ作り手側の自己満足のオナニー以外には思い浮かばない
結局は手を抜いて早く終わらせたい、楽をしたい、甘えたい
とにかく形だけできれば良い、動きさえすれば良い、クオリティとかどうでも良い
そんなの顧客側が認める訳が無いじゃん >>707
CならArduino用のライブラリも移植可能という話のどこが
>結局は手を抜いて早く終わらせたい、楽をしたい、甘えたい
>とにかく形だけできれば良い、動きさえすれば良い、クオリティとかどうでも良い
につながるのかわからんけど、君のレスでアセンブラ信仰の本質がだだの根性論なのはわかった
高級言語全否定とか、それただの精神論だよね、全くくだらない >>709
全く理解していない、学ぼうとしていない、子供が玩具を弄ってるだけ
それもただの精神論だよね、全くくだらない >>709
まぁ、ど初心者なら理解できなくても今はそれで良いよ >>710
なぜこの世に高級言語が存在するのか冷静に考えてみな
わかるまでレスしなくていい >>713
スクラッチは多くのプラットホームで実行可能だから確実に高級言語で書かれている
決してアセンブラじゃ書かれてない
自分で墓穴掘っちゃって、お前どうすんのさw >>715
は?何言ってんの?
俺が高級言語を否定してるとでも? >>716
じゃあ何の話してんだ?
何に吠えてんだ?
>結局は手を抜いて早く終わらせたい、楽をしたい、甘えたい
>とにかく形だけできれば良い、動きさえすれば良い、クオリティとかどうでも良い
>全く理解していない、学ぼうとしていない、子供が玩具を弄ってるだけ >>717
>アセンブラを使う意味なんて自己満足のオナニー以外には思い浮かばない
この辺の視野が狭いって言ってるのだよ >>718
他のプラットフォームとコードの融通が出きないアセンブラこそ視野が狭い
それをオナニーだと言ってるんだ、前時代的な精神論に似てると言ってるんだ
そして
>結局は手を抜いて早く終わらせたい、楽をしたい、甘えたい
>とにかく形だけできれば良い、動きさえすれば良い、クオリティとかどうでも良い
>全く理解していない、学ぼうとしていない、子供が玩具を弄ってるだけ
はどういう関係があるのかとお前に聞いてるんだ >>719
高級言語もアセンブラもそれぞれ一長一短がある訳だから
そういった偏りすぎた考え方は良くないと言っている はじめてのスレなのにこんなの見せられたら誰も来なくなってしまう👼👼👼 >>720
へえ、いつからそんなに大人になった?
>結局は手を抜いて早く終わらせたい、楽をしたい、甘えたい
>とにかく形だけできれば良い、動きさえすれば良い、クオリティとかどうでも良い
>全く理解していない、学ぼうとしていない、子供が玩具を弄ってるだけ
これ、C言語へのヘイトにしか読めないけど、幾度も聞いてるのにまだ関連性を説明してもらってない。 アセンブラ専用スレ作れば👼👼👼 >>720
アセンブラなんて「短」のみだろ
「長」があるなら教えて、自己満、自慰、以外で >>704
最適化レベルは -O2 にしてますよね? このスレを閲覧してる幼女〜美少女が逃げ出すので「オナ〇ー・〇慰」と言う様な
下品な表現の使用は控えて頂きたい\(^o^)/
>>721
それは困る凄く困る・・・( ;∀;)
僕は誰にチューすればいいんだ??? (*´з`) EEPROMてアセンブラじゃないと操作できないんじゃなかったっけ?
ていうかxc8はアセンブラも入れられるんだから MCCでアセンブラ出力するようにmicrochip に言うのがいいんじやね >>727
CでEEPROMは出来るとして、HEF(ROM)も書き換え出来る >>732
わーい🙌
トランジスタのエクボ覚えたのにFETだといい方違う理由がわからんち 状況に応じて、必用に応じて、アマなら好みに応じて、プロなら利益に応じて、
Cとフルアセンブラの両者を使い分ければいい。
老婆心ながら、「Cでしか書けません」は少し困ると思うけどな。
CPUが持つ機能を余すところなく発揮できるのはアセンブラだけで、
たとえばPICやAVRのような、小さなCPU向きのLチカでさえ、
ちょっと複雑になるとCでは書けない。 >>686
組み込み用CPUなら兎も角、
高性能な奴だと、パイプライン乱さない様に順番入れ替えたりしないとならないから、アセンブラだと速度出ない事も。 俺はCしかできないけど
ビット回転命令とかはアセンブラじゃないと無理? そろそろ、マイコンの世界でも「Cでしか書けません」「それは困るね」の意味が変わってきてるよな。
それとプロだと職場によって求められることが変わってくる。
分業が進んでいるところだと、アセンブリ言語を使う可能性のある部分を担当する人とか
C以上の高級言語しかタッチしない (←簡単って意味じゃないよ) 人とかに完璧に分かれていたりする。
PICスレなんだし、Cを超える高級言語の話は無意味って考える人もいるだろうけど、
プロなら、というコンテキストでいえば「マイコンは8ビットPICしかできません」はあまり通用しないと思う。
むしろ、ルールや生産性、他人からの推奨など一切のしばりなしに、
いろいろなマイコンや言語(アセンブリ言語も含めて)を楽しんだり避けたりできるのは、趣味じゃないですかね。 >>734
ArduinoのRGB LEDのライブラリのAdafruit_NeoPixelのコードを覗いてみると
クロック周波数の低いボード向けのコードはアセンブラコードだらけだな
ある程度クロックの高いボード向けはCで書かれてるけどね
クロックが数十MHzクラスのボードではCPUが32bitのARMでもアセンブラコードで書かれてるね
それだけRGB LEDの制御はタイミングがシビア >>739につらなっているレス
アセンブリ言語、C言語論争において、手を抜くだとか甘えだとかオナニーだとか
感情に火をつける言葉の応酬をして、有益が結果が得られるかどうか考えてみてはどうでしょう。
絶対的な相手意見の否定ができない話において、議論をするなら、落としどころはどこかに必要です。
よりよいすり合わせや合意が形成できるのは、感情抜きで議論できているときじゃないですかね?
そうでもなければ、声が大きい人、強引な議論をふりまわす人、地位が高い人、わからず屋、
その場で応答性が速くばらまける知識の豊かな人の主張に結果が偏りがちです。
そういった結論が(仮に自分か相手にとっては望ましいものであっても)必ずしも望ましいものではないことは
仕事で自社内や顧客と議論をしてれば多かれ少なかれ経験はしてるんじゃないですか? >>1
〉・威張らず、偉そうにせず、上から目線にならず、優しく答えてあげましょう PIC初心者ですが質問があります。
PIC18F25K80というマイコンを初めて使います。
A/Dコンバーターを使いたいのですが設定がわかりません。
それは、データシートの352ページのトリガー設定です。
bit 7-6 TRIGSEL<1:0>: Special Trigger Select bits
11 = Selects the special trigger from the CCP2
10 = Selects the special trigger from the Timer1
01 = Selects the special trigger from the CTMU
00 = Selects the special trigger from the ECCP1
とありますが、私はこの中のどのトリガーも使いません。単にGO bitを手動でsetして、Doneをポーリングするつもりです。
一般的には「特別トリガを使うか/使わないかの設定bit」が別にあったり、
上記4種類のうちの1つに「どれも使わない」という設定があると思うのですが、それも見当たりません。
試しにMCCで設定してみたのですが、上記の4つの選択が出て、どれかにすると、下の窓に
「ADC Warning Configure ECCP1 module」と表示されます。
こういう場合は、どのようにしたら良いのでしょうか? eccp1の中にお望みの選択肢は無いかしら。知らんけど >>740
あー経験してる。会議で貴方みたいにそもそも論あるべき論を語り出してちゃぶ台ひっくり返そうとする奴、あれホント迷惑だったな。 >>745
その人、常駐の「説法マン」だからな。
見てるとわかるけど、みんな知ってるから誰も相手してない。
久しぶりにあんたがレスしてくれて励みになったはず。 >>743
他のPIC類だとAutoConversionにはdisabledの項目(設定)が当たり前の様にある
PIC18F25K80のADCが異例なんだと思うけど
TriggerをCCP2かECCP1に設定してCCP2 or ECCP1のModeを[off/reset]にしておけばいいのでは?
(これが正しい手段かはわからない) >>744 747
ありがとうございます。
MCCでECCP1を追加してみたら、
ECCP1の設定タブは、すでに off/RESET になっていました。
>他のPIC類だとAutoConversionにはdisabledの項目(設定)が当たり前の様にある
ですよね。
>PIC18F25K80のADCが異例なんだと思うけど
ですよね。
もぅ、わけがわからん。
そんなことで悩むのもツライので、品種変えることにしました。
ありがとうございました。 すみません、もう一つ教えてください。
このPICですが、UARTのRXピンと、PGDが兼用になっています。こんな感じです↓
https://imgur.com/M7bq23S.jpg
これってヒドくないでしょうか?
UART ICから低インピーダンスで電圧が来ているところを、
PICKitで満足にH/Lできるんでしょうか。
PICKitの出力はLCV245はバスバッファなのでいいじゃん、ということなのか
そのときはSWで切り替えてください、ということなのでしょうか。
UART ICからの信号に抵抗を入れて誤魔化してもいいけど、
抵抗入れたらボーレートが上げられないと思うんです。 顔真っ赤にして反論されそうだけど、ICSP端子と他の端子兼用にする事はまず考えない。 >>749
経験上での話で申し訳ないが
最適な方法はわからないけどUARTから1kΩ程度の抵抗を入れてPGDに接続して使ってた
その状態で書き込みも通信も問題なかった
速度に関しては高速な状態は試した事が無いけどPICkitやUART配線が短ければPICのGPIOの寄生静電容量は低いので
高い速度でも通信出来ると思う(1Mbps以下なら問題ないと思う)
PICkit3側で4.7kΩでプルダウンされてるので1kΩより大きい抵抗だとHigh時の電圧が足りないと思う
PICkit4ならプルダウン抵抗を切り離すらしいので、もう少し大きい抵抗でも大丈夫だと思う
悩むのが辛くなったらPIC18F25K80を窓から捨ててPPS使えるPIC使おう\(^o^)/
あとどこかのPIC関連のデータシートかアプリケーションノートにPGD,PGCにICSPとその他の接続を汎用する方法が載ってた気がするけど
思い出せない・・・・(;´・ω・) >>750
ありがとうございます。
確かにそれが一番ですね。これまでは逃げて使っていましたが、今回はダメでした。
UARTとPGC/PGDって どうよ? もっと他のものに組み合わせてくれと。
他にもこのPIC、UART1とCANが全く同じ兼用。重要保安部品同士を兼用しないで欲しい
>>751
ありがとうございました。
>最適な方法はわからないけどUARTから1kΩ程度の抵抗を入れてPGDに接続して使ってた
>その状態で書き込みも通信も問題なかった
その手法で逃げようと思っています。
最悪はSW切替か、ROMライタで書いてもいいかもしれない。
>PICkit3側で4.7kΩでプルダウンされてるので1kΩより大きい抵抗だとHigh時の電圧が足りないと思う
4.7kは小さ過ぎと思います。10kでも22kでもHi-Zでなければ、問題ないと思うんですが。
PICKit3でも、出力段はトライステートのバッファがいるけどHi-Zにしないのかな。
>PGD,PGCにICSPとその他の接続を汎用する方法が載ってた気がするけど
確かPIC16F873/876/877の頃のデータシートの、
ICSPのところに書いてありました。抵抗を使えと。 UARTが2チャンネル乗ってるからピンアサインが苦しいんでしょう
もうひとつの方のUARTじゃだめなの? >>698
>Cのように(ちゃんと)モジュール化・カプセル化しておけば、使い勝手の良いものが出来ていくって感触が、アセンブラーだと得られない。
これは >>698 がアホ自慢してるだけ
良い子は真に受けないように 確かに「アセンブラーだと得られない」は間違いだと思います。
俺もZ80が大人気だったころに、アセンブリ言語で定番ルーチンを作って活用してました。
「アセンブラーだと高級言語に比べると相対的に得られにくい」が正確だと思います。 >>755,756
君らは発想が近視眼的
モジュール化したものが他のチップでも生かせる
アセンブラーだと決してそうはならない
そういう意味も含んでる デジタルを触りすぎて、思考までデジタルになっちゃった?
インラインアセンブラだって、リンカーにアセンブラのルーチン呼ばせる事だって出来るでしょ?
なにそのAll or Nothing。 >>757
>モジュール化したものが他のチップでも生かせる
>アセンブラーだと決してそうはならない
それを含んでの>>756だよ。
というか、Z80でアセンブリ言語の定番ルーチンを作った手法が、現代でPICに置き換えて広く受け入れられるわけないよね。
>>698の当該行が「他のマイコンでも」を前提としているかどうかが曖昧なのと「得られない」という表現で>>755のようなコメントが付いています。
「得られにくい」の意図で「得られない」と書かれたものだと理解できない人もいます。
意図的に理解していないふりをして反論する人もいますが、曖昧さを含めて正確に書けばこの手の反論は低減ができます。
次の行の「機能によってはPIC以外でも使い回せたりするよね」を含んだ形での読み取りが>>755はできていないのです。
これも意図的にしていない可能性もありますけどね。 >>758
相手をやりこめる討論番組みたいなのが人気になるぐらいだし。
わりと多くのことで、イチゼロに収束するのはわかりやすい傾向があります。
「で、結局どっちなん?」みたいに結論を求める人って多いよね。 初心者は、アセンブリ言語は使わないものだ、という意図なのか、
初心者は、ライブラリを書き溜めたり、ほかのものを持ってきたりしないものだ、という意図なのか、
1行レスは語った本人の満足とは裏腹に、どうとでも取れるものですね。 常駐「説法マン」今日もまた参上
レスを追うごとに長文化癖が発症
皆慣れたようで誰も反応せずスルー おまえは長文書きたいならブログで初めてくれよ。初めてのアセンブリ言語。アセンブラやりたい人は喜んで読むよ。頼むよ。お願い。 >>763
「常駐説法マン」か、いいね、この蔑称。
無駄に長文で説教臭いから文章から確実に特定できる。
>>766
ここでは偉そうだけど、所詮はただの5ch弁慶で、
書いたものが残るような媒体で発信するだけの度量やスキルは持ちあわせていないと思う。 本当に後に使い回ししたいのは プログラム言語やCPUに依存しないアルゴリズムや考え方なんだよね。
アセンブラかCかなんて小っちゃいねえ… >>768
それはアイデアを創れる人の発想で、実装作業の生産性や工数に関心が向いている人の発想ではないですね… フルアセンブラでは書ける仕様がCでは書けない、には誰も触れないね まあ極論だけど、Cってのは、一切のライブラリを使用しなければなにもできない仕様だから
まちがっちゃいない >>770
そこはアセンブリ言語のメリットでいいんじゃないですか? >>770
あのお方の言う仕様はC(言語の種類関係なく)で簡単に出来るLチカの事だから触れてはいけない
長い人はみんなスルーしてる MPASMのビットシフトはステータスフラグが効く分、
Cのビットシフトとちょっと違ったような…(^p^;
あれをビット演算用いてCで無理に実装すると
冗長なコードになりそうでモヤりますな PICの売れ筋はPIC16シリーズとPIC18シリーズなんですかね? >>778
個人(趣味)用途なら12F,16F,18Fシリーズだと思う
24,32,dsPICは少ないと思う
規模や速度が必要な用途にはPIC以外が人気なんじゃない?(STM32とかESPとか) 10Fの事も忘れないでください
あれでも一応プログラムが組めるので(´;ω;`) Cで書けることをあえてアセンブラで書く必要はないけど
アセンブラが全くわからないとデバッグにも支障をきたすと思うけどな ブレークで止めた時アセンブラのニモニックがずらずら出てきてもパニックにならない事は必要だな >>779
٩(๑òωó๑)۶
>>780
ありがとうございます。
やはりローエンド向けが良いっぽいですね。
24,32,dsPICとかって何に使うんだろうか。 このスレじゃないけど
デバッガもつかえないでどうやってデバッグしてんだとかって、ディスられたことあるんだが
デバッガがないとでデバックできないほうがよっぽどしょぼいよな この人Cで書けないんだな
Cで書いてたらブレーク掛けてもソースレベルデバッグだし
ニーモニック出るようにするやり方教えて下さい >>789
ブレーク掛けてニモニック出るんでしょ?デフォルトの状態で出ないよ?
出す方法を教えて下さい
因みにMPLAB X IDE 6.00ですが きみのようにえるちかばかりつくってるわけではないので、
つかえるものはつかいます。 >>792
で、デバッガがないとデバッグできな君なのか?君は デバッガ使い方わかんねえって言ってんのに、教えろ、教えろっなんなのて
バカなの >デバッガもつかえないでどうやってデバッグしてんだとかって、ディスられたことあるんだが
>デバッガがないとでデバックできないほうがよっぽどしょぼいよな
この2行目は余計だけど、ここにはC言語ではないとかアセンブリ言語だとかそんなことは書かれていない。
ましてデバッガを使わない(使えない)ことを匂わせているID:uSnctXcmに対して
C言語ができないとか「ブレーク掛けてニモニック出るんでしょ」は外しすぎ。バカのふりもたいがいに。 ID:uSnctXcmさんのどのレスが、
どんな人に対して、
どんな絡み方をしたことが、
いざこざの起点になったっていうんだろう。 誰にでも過ちはあるので次の話題に行きましょう\(^o^)/ なんで毎回、毎回こうもレベルが低いケンカになるかねぇ・・・
「アンタが大将!、アンタが大将!」と言って終わらせられるのに
「金持ちケンカせず」という言葉があるから、きっと貧乏人なんだろうなw
冗談はともかく、こんな所でエネルギーを浪費するな xc8 のライセンスは2種類あるようですが
今探すとPROしかない?
もう一つはどうなったん >>804
このエネルギーを使った発電方法はないでしょうか?(^p^)これからの時代はマイクロ発電ですよ!!しらんけど >>806
喧嘩してる人(怒ってる人)から
・怒りのキーボード打撃を利用した発電
・怒りの心拍数上昇を利用して血液による水力発電
・怒りの頭の湯気を利用した発電
・怒りの粗い鼻息を利用した風力発電
・怒りのマウス操作の加速度を利用した発電
全部やれば低クロックのPICでLチカ出来るかもしれない
ちょっと発電機装着させていただきますね\(^o^)/ 発電と言えば、太陽電池はだいぶ普及してきた気がするけど
MPPT(最大点追従なんたら、しらんけど)はあんまし耳にしない印象。
それなりの規模になれば、パワーコンデショナーが備えてはいるんだろうけれど。
MPPT機能をPICで実装するというのはテーマとして面白いかもですな。 太陽光発電は、負荷を大きくし過ぎても小さすぎても取り出せる電力が減少してしまいます。
最大のパワーを取り出せるように負荷を調整するのがMPPTです。
怒りのパワーも垂れ流ししすぎても、ため込ませ過ぎるのも、
取り出せる量は小さくなってしまう事でしょう。だから、>>808
適度な怒りを持続させることも重要なんじゃね?知らんけど(^p^)
>>807
鼻息発電名目で 湯沸し器君に過剰な負荷を設定して
呼吸量0という不幸な事故を装う完全犯罪を目論んじゃらめー!! 太陽光発電ネタ
パネルを太陽の方向に追尾すれば発電量最大になるんじゃね?と思って
手でパネルの向きいじってみたのよ、そしたら発電量最大点が太陽の方向じゃないのよ
びっくりだね(汗
ピーカンだったら太陽の方向かもしれんけど雲あったり、もやってたりすると散乱光の影響なのか
ちょっと違う方向になるようだ
時計仕掛けで簡単追尾という計画が一瞬で崩れ去ってしまった >>807
それよりあんたの無駄な顔文字を入力エネルギー、
やめた方がいいですよ。 >>812
それマ? Σ(゚Д゚)
自分も自動追尾最強だと思ってたのに\(^o^)/ >>817
リアルタイムに最大点追尾できれば最強だと思う
太陽を追っかけても無駄ってとこがガッカリポイント 最大になる点が鉛直方向じゃないにしても、その方向を太陽に常に向ければいいんじゃね?
電極の配置に拠るのかなぁ・・・ 結晶構造なのかな? >>819
いや、そういうことじゃなくて、直射が雲にさえぎられて、隣の雲からの反射が強いとか
そんな感じじゃないかな、まあ継続して計ってないからなんともいえんけど 固定の場合と
常に太陽に向けている場合と
常に最適方向を探している場合と
たとえば年間平均でどれが最適か、ってことになるのでは。
http://www.kyushu-eneco.jp/20180316-1229/
熱くなりすぎてもだめだとか。難しいな。真正面だと温度が上がりやすくなるかも。 >>821
うん、追尾するより、パネル枚数増やしたほうがましみたいなことも、どっかに書いてあった
それみて、モチベーションさらにだだ下がり >>821
うん、追尾するより、パネル枚数増やしたほうがましみたいなことも、どっかに書いてあった
それみて、モチベーションさらにだだ下がり __________д_
Σ___________Γ
ヽ(´・ω・)ノ
| /
UU あと、あれか。日照量によって電圧・電流グラフがかわり、
電力測定系の負荷が、最大負荷点と一致するような日照量が、
鉛直方向より傾いた場合の値だった説。
日照量が強すぎて鉛直方向にむけると高温で効率低下という可能性もゼロではないけど
(太陽電池は実質はPNダイオードで、順方向電圧にたまった電圧を取り出している手前、
高温になりすぎると順方向電圧が下がって内部で漏電・加熱という悪循環になってまうんよな)
そこまで高温にはしていないんじゃないかとなんとなく思うのでこの可能性は低そうとおもった、しらんけど(^p^; MPLABで教えてください。
MCCを使ってTIMER1を生成したら、コンパイル時に、以下のようなwarningが出ます。
mcc_generated_files/pin_manager.c:92:: warning: (520) function "_PIN_MANAGER_IOC" is never called
mcc_generated_files/tmr1.c:99:: warning: (520) function "_TMR1_StopTimer" is never called
mcc_generated_files/tmr1.c:105:: warning: (520) function "_TMR1_ReadTimer" is never called
mcc_generated_files/tmr1.c:142:: warning: (520) function "_TMR1_Reload" is never called
mcc_generated_files/tmr1.c:147:: warning: (520) function "_TMR1_StartSinglePulseAcquisition" is never called
mcc_generated_files/tmr1.c:152:: warning: (520) function "_TMR1_CheckGateValueStatus" is never called
MCCが勝手に作った関数に対して「使ってないぞ! ええんか?」と言われても
私が作ったものではないので困るのですが、みなさん放置しているのでしょうか?
気持ち悪いので、warningは全部消したいのですが、どのようにすればよいでしょうか? 無視
#if 0 〜 #endif
#pragma >>829
ありがとうございます。
無視ですか。できるなら消したいです。
すみません↓の意味がわかりません。
#if 0 〜 #endif
warningを表示させたくない関数だけをifdefで切る、ということでしょうか。
生成されたtimer1関数のなかには、使うものもあるので、
いちいち手間がかかるのと、
次回にMCCをかけたときに、MCCがうるさいんです。
#pragma
これは何をすればよいのか、わかりません。
warningの1つ1つを読んで「よし、これは確認済みOK」とかチェックして、
warningは放置するしかないでしょうか。
MCCは面倒ですね。 逆の発想
int nAlwaysZero = 0;
if(nAlwaysZero){
_PIN_MANAGER_IOC();
_TMR1_StopTimer();
_TMR1_ReadTimer();
_TMR1_Reload();
}
・・・みたいに、絶対 使わないところでよんじゃえばいいんじゃね(はなほじ ありがとうございます。
そういうことですか、なるほどすばらしいです。感動しました。
これは、if(0)なので 一生実行されないけど、
どこかに書いてあることに意味がある、という理解で良いでしょうか。
であれば、
main(){
unsigned char a;
while(1){
・・・・
}
PIN_MANAGER_IOC(); // MPLABのoutputに表示されるときは
TMR1_StopTimer(); // _PIN...と先頭に_が付くみたいです
TMR1_ReadTimer();
TMR1_Reload();
}
という場所に書いてはいけないでしょうか。
あと、もう一つご教示ください。XC8で、
MCCはPIN_MANAGGER.hを生成して、GPIOの表記をdefineしています。
IO_RA0_LAT IO_RA0_PORT とかです。
ところが、昔ながらの RA0=1; というのも可能です。
どのように言葉で書くことができるのか知りたいのですが、どこを見たらわかるでしょうか。
MPLAB8.92のころのXC8は、PIC18....hというファイルがあって、
その中に構造体や共有体などが書かれていて、便利に見ていたのですが、
XC8 Ver1.70とかだと、どこを見ても探せません。 きょうびの開発環境だと、到達しないコードがあるぞって
警告してくる場合があるから、それに引っかかるかもですな。
MPLABがどうだか覚えてないけど、 RA0=1; のRA0の部分を右クリックで
ポップアップメニューを出すと宣言位置を参照 という項目ってなかったっけ?
それが使えるなら手かもですな。 >>832
warningはProject Properties > XC8 compiler > Warning level
がデフォルトで-3なので0にする
RA0の定義はctrlを押しながらカーソルを持ってゆくと指に変わるから左クリックするとヘッダファイルにジャンプする
関数とかも同じようにするとジャンプしてくれる >>834
ありがとうございます。バッチリ出来ました。warning消えました。
というか、自分でコンパイラに指示が出来ることを初めて知りました。
どうもありがとうございました。
また、ヘッダーも、できました。これです、これです、これが欲しかったです。
どうもありがとうございます。大変助かりました。
ありがとうございました。どうもありがとうございます。
大変たかりましたるありがとうございました。 ADCで読んだ数値を毎秒加算してログを取りたいんですがlongとfloatどちらが良いんでしょうか?
最終的には掛け算やら割り算やらして少数を含む数値になるのですが ログなら換算前の整数値でとった方が便利そうじゃね?
換算計算は あとでエクセル上で 一気にできるんだし。 >>837
整数のほうが誤差なさそうですよね
そうしますありがとうございます 夕方は、ありがとうございました。
あのあと、再び問題が出て、ずーっと戦っています。
すみませんが、また教えていただけないでしょうか。
#define についてです。
LATBbits.LATB5 という書き方が長くて書きにくいのと、
timer1割込の周期確認LEDが接続してあるので、
#define LED LATBbits.LATB5 と短く書きたいです。
このマクロを、ソース全体に有効にしたいので、
main.c ファイルの先頭に書きました。
ところがコンパイルすると、timer1の割込部分でエラーとなってしまいます。
「LEDなんて知らん」と言われてしまいます。
この例に限らず、#defineをプロジェクト全体で有効にするには、
どの位置に #define を記述すれば良いのでしょうか?
宜しくお願いします。 >>839
また質問内容の回答だと
#define LED LATBbits.LATB5 を記載したヘッダーファイルを作り
各ソースファイルでそのヘッダーをインクルードすれば可能だと思います
またMCCを使ってるなら
Custom nameでLEDと定義すればLED_LATで操作できますよ
またLEDまで打ってctrl+speceで様々な候補出せます
https://i.imgur.com/IzAh5Vs.png
https://i.imgur.com/F5N45TJ.png
各ソースファイルで#include "mcc_generated_files/mcc.h"を追加すればOK
インクルードの無いソースファイルでLED_LATの様な入力をした場合には
自動的に#include "mcc_generated_files/pin_manager.h"が追加されるみたいです
(この仕様は知らなかった) >>840
ご回答、ありがとうございます。
お話の内容は理解できました。なるほどです。
1. 自分で作った #define
各ソースファイルに置かないとダメなのですね。
main.c の先頭に置くだけで、コンパイラーは全ソースに対して
効果を出してくれると思っていました。
2. MCC上の表の中に書き込む
これは便利ですね。ありがとうございます。
末尾に _LAT とか _PORT(?)が付いてしまうのですよね?
I/O方向がわかっていいのかもしれませんね。
例まで出して画像でupして頂いて、本当にありがとうございました。
以前 MPLAB IDE 8.92とかでは、
#include で、全体を1本のソースコードにしていたので、
先頭に1回置くだけで全部にグローバルで効いたので便利でしたが、
MOPLAB X になってから、ファイル毎に記述しなければならないのは、
少し面倒ですね。
でも、正しくはどうすべきものなのかが、わかって勉強になりました。
どうもありがとうございました。 PIC初心者です。質問教えてください。
PICの書き込みには、LowVoltageProgrammingというのがあるようです。
PICKit3や4を使って書き込みはできていますが、どうしたら良いのかわかりません。
1. なぜ2種類あるのでしょうか?
2. 本来、どちらの方式で書き込むべきなのでしょうか。
3. 2種類は、どのようにして切り替えるのでしょうか?
4. なぜ2種類が共に残っているのでしょうか?
どちらか片方あればよいと思うのですが。
よろしくお願いします。 なんかネット見るとDACが付いてるマイコンは珍しいって書いてある
PICにも誇れるところあるじゃん >>843
PICの書き込みには高電圧と低電圧(これはVDDレベルの通常電圧の事をさしてる)のモードがある
・古いPICは書き込みする為に高電圧が必要だった(ハードウェア的な制限)
・次に古いPICで書き込みする為の識別に高電圧が必要だった
・ある時期からのPICはMCLR(リセットピン)に専用のコードを送信する事で高電圧を必要としない書き込みモードが追加された
古くないPICは通常はLow Voltage programmingに設定されてると思う
今のPICでも高電圧書き込みが出来る
高電圧書き込みモードに変更するとMCLRピンを入力ピンとして使える
一度高電圧書き込みにセットすると解除する為には高電圧書き込みでないと解除できない
PICKitで高電圧書き込みにセットしたPICはSNAPとかだと書き換えできない(低電圧に設定し直す必要がる)
高電圧書き込みモードを有効にするには
デバイスコンフィグレーションレジスタのLVPを0にセットして書き込み
たぶん\(^o^)/ >>843です。
すみません、もう1つ疑問があります。
MCCの生成した型の名前の末尾に "-t" が付いています。
一律に付いているのですが、どのような意味なのでしょうか?
例えば、
adc_result_t ADC_GetConversion(adc_channel_t channel);
とか
typedef enum
{
channel_CTMU = 0x1C,
channel_Temp_diode = 0x1D,
channel_Vdd_core = 0x1E,
channel_1_024V_bandgap = 0x1F,
channel_AN0 = 0x0,
channel_AN1 = 0x1
} adc_channel_t;
とかです。 >>842
そんな時は
youtubeでASMRでも聞きながら横になると良いよ
ASMR『頑張らなくていいの、そのままでいいの、きみは大丈夫』〜
ASMR『頑張ってる君はかっこいいし すっごく大好き…』〜
しばらくするとやる気出るよ\(^o^)/ >>846
uint8_t と同じ。
型type宣言なので、変数を別に宣言してちょ。 割り込みピンって出力モードにしたら無効になると思ってたけどならない!?
HIGHにしたら割り込み反応しちゃう? >>846
> _t
前もこれに引っかかっている人がいたけど、typedef で定義された型に習慣的につけられるもの。 >>843
こういうことじゃないかな。
1. なぜ2種類あるか。
昔から、MCLRピンに12.5Vを印加しながらRESETピンを↓↑することで、書込モードになる。
そのために、5V→13Vの昇圧電源回路が必要。TL497が有名。
しかし、5V電源のみで書込できたほうが便利なので、5Vだけで書けるようにもなった。
これをLowVoltageProgrmming LVP書込と言う。
だから、今でも2通りのやり方が共存している。そのうち12.5Vのほうは無くなるかも知れない。
2. 本来は、
どちらでも良い。いずれにしろPICKit3が自動でやってくれるので、僕らが気にしなくても良い。
3. 2種類の切替
わからん。
4. なぜ2種類が残っているのか
Microchipの考えでしょう。両方できるようにしておけば、便利。 >>846
疑問に思うのは普通のこと。
>>850も言っているけど、_tは typedefの t で、typedefで定義したものだよ、という意味。
channel_AN0 = 0x0,
channel_AN1 = 0x1
} adc_channel_t; なので、
adc_channel_t.channel_AN1 とか使うのだろうけど、
・_tがあってもなくても、何がどういう定義なのか、調べなければならない。
・_tがつくと変数名が長くなるだけ。
「typedefで定義したものだよ」と表示したところで、何が嬉しいのか?という話。
何かの言語に沿った表記なのでしょう。 >>725
XC8をライセンス購入していないもので、-O2でも3でもビットシフトを2以上にすると
ループ展開されました。
.lstファイルにコードが出るだけましと思ってます。 >>852
知ったかでハズすのはみっともないな
_tは型を現すサフィックスだから変数名には普通つかないだろう
size_tがsizeと定義されてたら使いにくいでしょって事 _tは、データ型であることを示す識別子の接尾辞
tはtype(型)の頭文字ね Low-VoltageでICSPモードに入るときに送る4D434850というコードはASCIIでは"MCHP"だから
マイクロチップ・テクノロジーの略称そのものなんだな int64_t とか int32_t とかが int と定義されててとても使いにくいです >>857
我慢して使ってる。
押し付け感が、困ります。 >>847
ありがとう。でも苦手かも\(^o^)/
>>859
:( MPLAB X Ver5.4で、XC8言語で書いています。
unsigned char test(){
if(...){
return(1);
else if(...){
return(0);
}
}
と書くと、
hoge.c:154:1: warning: (343) implicit return at end of non-void function
返値を持つ関数なのに、しれっと戻るんだ? と言われます。
文章の途中でretrun()で抜けてはいけないのでしょうか?
でないと、break; を書きまくることになると思うのですが。 >>861
unsigned char test(){
unsigned char a;
if(...){
a=1;
else if(...){
a=0;
}
return a;
}
と書くのが標準的なC言語での書き方。
breakしまくれば良いですよ。 >>859
「割り込み」な
そんくらい知っとるわアホ unsigned charならswitch case defaultで良くない?
そのほうが見やすいと思うけど? returnにカッコを付けるとトラブルの元と聞いた if(...){
return(1);
else if(...){
return(0);
}else{
return 2;
} ぼきは途中でリターンで良いと思う派
エラーの原因はこの最後のエルスの部分が
略されてて値かえせてない事じゃね? しらんけど(^p^; ありがとうございました。
>>862の書き方に変更したところ、warningは無くなりました。
本来の書き方がしたかったので、助かりました。ありがとうございました。
>breakしまくれば良いですよ。
while(){ と、if(){の組み合わせでしたので、抜けるのを記憶する値と
そののif()を各ループに書かなければならないので、
見にくくなるり、「その場return()」で誤魔化していました。
>>864
なぜ charならswitch ということになるのでしょうか?
>>865
そうなんですか? なぜでしょうか。()を付けて、区切りをしっかりしたいと思うのですが。
>>866,876
ありがとうございました。 >>862
最後にelseが無くてリターン値が不定になるケースがあるが、warningは出なかった? >>869
Cコンパイラーは変数宣言時に、指定がないなら中身を 0 にするで。
なので、変更しないなら return 値は 0 になる。 >>868
昔読んだ本だったから詳細は覚えてないが、例えばreturnの綴りを間違えた時に関数呼び出しに見えて編なエラーが出るとかうんたん >>870
自動変数だと不定ではなかったっけか。
環境によってはデバッグモードかどうかで自動変数もゼロ初期化するしないが変わったりとか。 それより>>861は条件が抜けてるのに本人は気付いてないのか? そこは>>866-867に「ありがとうございました」って言ってるぐらいだから気づいているのでは。 >>869
>最後にelseが無くてリターン値が不定になるケースがあるが、warningは出なかった?
すみません、投稿内容のソースは、適当に書いた物で、
breakの位置を示したかったのです。なのでelseがありませんでしたね。
>>871
>昔読んだ本だったから詳細は覚えてないが、例えばreturnの綴りを間違えた時に
>関数呼び出しに見えて編なエラーが出るとかうんたん
なるほど、なるほど。確かにそうなりますね。
でも、()が無いと締まりがない文章に見えるので、いつも()を付けていました。
すると、if()の中にreturn書いて抜ける書き方をしないようにして、
必ず関数の最後に return () と書けば、少しは事故は減りそうですね。
ありがとうございます。勉強になりました。
>>873
>>861は条件が抜けてるのに本人は気付いてないのか?
}が抜けていますね。条件とは何でしょうか。 >>875
カッコは付いていても問題は無いが、文法的には無いのが標準なので余計な文字を打っていると言う事になる
あと、returnで関数値を返す時も()付けてるの?
return (hagehage()); >>876
そのreturnの呼び出し元で
a=hogehoge();
しないのは何故? >>876
ありがとうございます。returnは、()なしが正しいのですか。
勉強になりました。
return (hagehage()); は、書いたことがありません。
戻り値が関数って、考えもしませんでした。常に数値のみです。
戻り値を 複数持って帰れると便利なのに、と思うことはあります。 >>877
xcの場合はどうなるか知りませんが、ローカル変数を割り当てて無いと内部的に関数の返り値がレジスタに入ったままreturnされる事で高速化を期待ですね >>878
複数持ち帰る場合は構造体とか配列のポインタ返しだっけ? 全然関係のない話ですが、PIC18F25K80とかだと、
UART通信の信号の反転が出来るんですね。
通常は、TXD/RXDピンの非通信時はHレベルですが、
反転設定すると、非通信時はLレベルになるというものです。
でもよーく見たら、TXDだけでRXDは反転できないでした。
あやうくハマるところでした。 >>879
asm(CALL HOGE);
asm(RETURN);
の4clock分増えるより幸せなの? >>883
ああ、そう言う意味ですか
関数内で条件によってreturn呼ぶ関数が違う場合がありますよね
if(...){
return hogehoge();
else if(...){
return hagehage();
}else{
return honehone();
} >>878
括弧は不要ってだけで、付けてはいけないって事は無い。
return は関数じゃなくて、後ろの式を評価して結果を返す。 >>885
これって、どう言う動きをするんですか?
リターンして、すぐさまその関数を実行しに行くんでしょうか? >>888
>>870は静的変数と自動変数をごっちゃにしたんだろう >>875
> >>861は条件が抜けてるのに本人は気付いてないのか?
> }が抜けていますね。条件とは何でしょうか。
>861に書かれた関数において、ふたつのif()の条件にひっかからない条件で
return がないことには気づいてるよね? >>866が指摘している通りだけど。 >>887
>>886なので、関数を実行してその返り値を返す(リターンする) PICやAVRのプログラミングで
いっそCなんか辞めたらスッキリと楽になれるのに。。。
文法から離れてCPUだけに注力できるのに。。。
しょせん3流プログラマには無理な話か。。。
なんて思ってしまいましたw >>892
>いっそCなんか辞め
時代はC++やMicroPythonだとおっしゃるのですね
さすがです\(^o^)/ 初めてのスレで他人を「3流」呼ばわりする人ってアレだよな。 CPUだけで組み込みのプログラミングが出来るとか一流違うな ×値踏みしない
○値踏みを表にあらわさない
かな。 ネット(とりわけ匿名)なら弁慶になれる人って自己評価はどうなんだろう。自分の腐った体臭で苦しまないものなんかな? >>891
なるほど、わかりました。難しく考えすぎていました。
便利な使い方ですね。
ありがとうございます。 >>900
char *pChar = 0x00; // これがほんとの Null pointer‼!(^p^) >>901
「狭き門より入りなさい。滅びに至る道は広くこれを選ぶ者は多いけれど」
おれはキリシタンか。
なんだかんだといいながら、小規模マイコンにおいて、学習コスト、得られるメリットのバランスが優れているのがC言語なんだと思う。
初心者はちょっとぐらいは苦労すればいいと思うんだ。といってもC99に対応した「プログラミング言語C」って出てないんだよな。
もっとリッチなマイコンだったらPythonで良いのかもしれないけれど、8ビットPICではしんどいと思う。 PICやAVRのような8ビットのメモリ容量の小さなCPUで、
数KB、せいぜい数10KBの制御用プログラムを書くなら、
そりゃCPUが持つ能力を100%発揮できるアセンブラでしょ。 あとマルチタスクは必須だな。
周辺入出力機器の簡単な制御プログラムしか書かないなら話は別だけど。 PIC初心者です。
すみませんが教えていただけないでしょうか。
1. MPLABのBuildのボタンには「トンカチ単独」「トンカチ+刷毛」の2種類がありますが、
どのように使い分けるべきでしょうか。
いつも +刷毛 で行っていて 単独 は使ったことがありません。
トンカチ単独を使うのはどのようなときなのでしょうか?
2.「↓」のボタンを単独で使うのは、どんな場合でしょうか?
Buildせずに書き込むことは無いと思うので、常に△ボタンで良いと思うのです。
もしBuildでエラーが出たらそこで止まって書込には進みませんし。
3. すでに書込済みのPICの中身とMPLABのBuild結果と比較したいときは、どのようにすれば良いでしょうか。
書き込んだ後で「あれ?書いたっけ?」と思うときや、
コメントなど影響のない修正をしたときに、念のため確認したいことがあるのです。
4. これは参考までにお聞きしたいのですが、
時間の長いBuildでは、例えば何秒くらいかかることがあるのでしょうか?
今自分がやっているのは、だいたい10秒くらいで終わります。
「そんなの甘いよ、3分とか平気でかかるよ」みたいなことがお伺いしたいのです。
宜しくお願いします。 >>900,902
Λ_Λ \\
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >_Λ∩
_/し' //. V`Д´)/
(_フ彡 / >>902
はポインタを作ってるだけなのでガッはされないと思う。
char * pChar = 0x00;
*pChar = 0;
でようやっと例外が発生するわけだが、PICでは例外は生成されず
0番のレジスタにアクセスして終わるので、やはりガッされないと思う。 PICのUARTのレジスタの中の CREN という設定に出てくる「連続受信」とは、
どういう時のことを指すのでしょうか?
連続とそうではないとき、例えばどんな時なのでしょうか? >>907
>1. どのように使い分けるべきでしょうか。
コメントがつかないので、誰も使い分けをしていないと思う。
なぜ分かれているのか知っている人は、いないと思われます。
だから ほとんどの人は、常に▽ボタンではないでしょうか。
>3. すでに書込済みのPICの中身と
Verifyのことですね。俺も知りたい。
>4. 時間の長いBuild
FPGAに比べたら、コンパイル時間はアッという間ですね。
それよりMPLABの起動時間をもっと早くして欲しいわ。 >>912
>CREN: Continuous Receive Enable bit
>Asynchronous mode:
>1 = Enables receiver
>0 = Disables receiver
>Synchronous mode:
>1 = Enables continuous receive until enable bit CREN is cleared (CREN overrides SREN)
>0 = Disables continuous receive
非同期モードでは関係ないんじゃないの? >>903
アセンブラの門は広いのか?
ま、確かにアセンブラは習得が簡単で、初心者向きだと思う。
ORGやDEFBなどのアセンブリ制御命令をいくつか覚えて、
(最初はifやmacroは要らない)
あとは実行命令のld、st、call、jumpなどをその都度覚えていけばいい。
で、一番最初に人が作ったLチカを入力して動かしてみるとか。
アセンブラはCPUに密着しているので、CPUに対する理解度を深めると思うし、
アセンブラを習得してからCを始めれば、両者の良いとこどりが可能になる。 一番メンドクサイのってSFRの働きと周辺モジュールの機能覚えることだよね >>586
PIC18F27Q43のデータです。
ADChは測定中変更していません。
電源電圧は3.3Vです。64MHzで動かしています。
設定はMCCのほぼデフォルト値です。
他の作業をさせるプログラムを改変したので、別に
液晶表示、I2C温度計、PWM、UARTなどが裏で動いています。
以下はFVR2.048Vでの測定値です。
リファレンスは申し訳ないですが、サンワのCD5000のテスタの値です。
電圧の高いところでわずかに(4~5程度?)値が振れます。
FVRが振れているのか、電源電圧が振れているのかはわかりませんが、
まあ電源が振れているんでしょう。
誤差は電圧が高くなると大きくなり、MAXで1%ずれます。
FVRの電圧の誤差と思われます。
min max (min+max)/2(Volt) CD5000(Volt) 誤差%
4062 4066 2.032 2.053 1.02
3978 3980 1.9895 2.01 1.00
3342 3346 1.672 1.69 0.87
2448 2448 1.224 1.2378 0.67
1139 1142 0.57025 0.5787 0.41
936 938 0.4685 0.4744 0.28
724 724 0.362 0.3674 0.26
513 514 0.25675 0.2612 0.21
246 246 0.123 0.1258 0.13
107 107 0.0535 0.0557 0.10
8 8 0.004 0.0057 0.08
0 0 0 0.0001 0.00 うお、見づらい。3.3Vの電源をVrefにしたものは画像にします。 https://i.imgur.com/t6PtHmg.png
Vrefを3.3Vにしたときの測定です。
書いていませんでしたが、10kΩのアルプスの可変抵抗を使用しています。
コンデンサ1uFを抱かせています。
測定値はAD変換の生値がぶれるときでも1しかぶれなかったので、1個だけしか表示していません。
PICユーザーとしてはぜひともSAMDと比較していただきたいものですが
どの値もずれて4mVです。
SAMDのVccでの測定と比べて精度がどちらが高いかはおわかりになると思います。
さらに、向こうの精度の良いのは1Vのときですが、抵抗で分圧したり、電圧を下げたりと
もとの電圧に換算すると誤差が増える方向にしか向かいません。 >>915
アセンブラだと命令数は少ないから覚えやすいけど命令が単純でレジスタが1個しかない分
プログラムの構造を考えなければならずパズル要素が強すぎるんだよねぇ
それを乗り越えられれば直接ハードを弄る事が出来るから
その命令がどんな事をしてるのか悩む事は減るだろうな なんかさ、ここってPIC32の話殆どでないね
誰もやらんからかな? >>921
誰もやってないって事はないと思う。
俺もPIC32の趣味プロジェクトあったし。
熟達した人だけが選んでるから、
ここに書く様な困った事もないのでは。
Harmony もかなり助けてくれるし。 いずれにせよPICやAVRのプログラミングで「Cしかできません」はチョットまずいと思うなぁ
しかもCではあるアプリ分野が書けないのに
それをマズイと思っていないプログラマがいるのが大いにマズイw >>922
なるほどねえ。何かと8ビットの話題しか出ないから誰も使ってないのかと思った
ブログとかは見るんですけどねえ >>912
メモリー保護とか仮想記憶付いてる奴は、
前半は多くの場合、ユーザプログラムからはアクセス禁止になってるから、例外が発生する。 >>923
あと、PIC24とかは、初期化してないレジスタを使って間接アドレス指定して、メモリアクセスするとトラップ発生する。
0x0000であっても初期化すればトラップ発生しないが。 >>924
流石にPIC32を使う人に掲示板で質問する様な素人は居ないだろう アセ爺とマルチタスク君が登場するイヤな予感がしてならない アセ爺ってPIC32使えるの?
アセンブラで書くの? アセンブラって互換性あるの?移植できるの?PIC12 〉PIC32 とか Cだとある程度直せば使えるよね
PIC8からMIPSなりARM(だっけ?)だから偉い騒ぎだよ。しかもバスクロックとかキャッシュとか有るから直すというより1から作り直す感だなあ
ムネアツ >>923
たしかにCだけはまずいかもな
C++でオブジェクト指向を取り入れて大規模な(ry そんな詰める必要ない所に時間かけられるのも趣味のいいところだよな
俺は無駄にこだわるからお前らよりすごいとかいう奴はアホだけど >>933
全く同じではなかったような?
16F84と18F2620で違いは有った気がする >>933
MIPSとかはコンパイラ使うのが前提な筈。
パイプライン乱さない様に、順番入れ替えたりが必要だから。 世の中の技術の範囲はとても広いけれど、個人が獲得できる技術の範囲は有限で選択が必要。選択は個人がしなくちゃいけない。
PICのアセンブリ言語を探求する人いていいし、マイコンの応用に深い関心を持つ人いていい。全部を万遍なくできる人は稀。
自分ができていることを他人もできるべきだと考えるよりは、自分がしていないことを他人がしていることを喜べば。
お互いが補完しあえる方が、自分ができないときに、自分の代わりにその道に詳しい人に頼れるよね。そのための掲示板。 >>930
たとえば小さなCPU(AVRや8ビットPIC)用のマルチタスク
サンプル >>545 >>948
昔より勢いが落ちてて悲しい(;ω;)
前はもっと元気だったのに mplabx5.50とxc8 2.32でC言語にて
uint8_t x;
(中略)
if(a) x=2;
な感じのコードを書いたら、最適化レベル2でコンパイラーで出来たコードが
MOVLW 2
MOVWF 0x79
MOVF 0x79, W
MOVWF 0x7C //0x7CはC言語変数xのレジストリー
って4命令になりました。
MOVLW 2
MOVWF 0x7C
と2命令でないのは何故でしょうか? >>950
追記
x=2;
の部分のアセンブラーについてです。 俺だって事情というのが色々あるんだよ。
誰かさんみたいにノーテンキに朝から晩までレスしてられないんだよw
(著者注:これは最上位ビットを反転した誉め言葉です) >>951
x=(uint8_t)2;にしたらどうなる? >>955
自分でxc入れてまで試す気は起こらないな
カッコ付けたらどうなるかな?
if(a){x=2;} >>955
xをキャストってできたっけ?
if(a) (int)x=2; >>950
正直XC8Compilerが残念なんだと思う
有料の最適化を使えば改善されるかも?
uint8_t a,b,c;
a = b = c = 2;
↑のアセンブラ見たら納得いかないコードが出るよ\(^o^)/
あと変数をアドレスをGPRではなくSFRに割り当てると無駄な処理が消える
もうね、わざとやってるレベルなんじゃないかと(;´・ω・)
あとDECFSZ,INCFSZはまず使われない(これも有料版だとどうなんだろう・・・) 950 です。追加情報。
if(a)x++;
としたら、x++の部分は
MOVLW 1
MOVWF 0x79
MOVF 0x79, W
ADDWF 0x7C, F
と4命令になりました。
INCF 0x7C, F
の1命令かと思ってましたよ。
アセ爺の主張を理解しかけましたw
あと、レジストリーでなくレジスターでしたね。訂正します。 welcome to アセンブラーじじーワールド(^p^) >>960
,..-─‐-..、
/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′ 顔文字やめろ
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩ ^p^)
| l i 厂  ̄ニニ¬ ノ ⊂ノ < ヤダヤダー!!
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ アセンブラ爺が井の中の蛙でいる間に世の中C言語すら置いていこうとしているw PIC で C++ 使ったらスタックオーバーフローしますか? >>959
そういう細かい事を気にしてたらCプログラマになれないよ >>966
アセンブラが神なら
アセンブリ言語を作り出した人間は神を超えたね\(^o^)/ >>686
どうでも良い事に時間をかける方が無駄。
まあ、BaselineまでのPICなら、アセンブラの方が良いと思うが。 彡⌒ ミ
⊂(´・ω・`) こまけぇこたぁいいんだよ!!
/ ,9m
し―-J 正直なところMicrochip社は私の様な貧乏人のために有償コンパイラの機能を開放してほしい
営利目的で使う人のみライセンス料を徴収するシステムになれば良いのに
趣味目的だと有償コンパイラ使う位ならPIC24やSTM32使った方が安いね\(^o^)/
(でもPIC16,18Fの周辺モジュールの使い勝手が良いのでPIC16,18止められない) (;^ω^) >>917
586です
計測お疲れ様です
シンプルな計測でもそれなりに手間は掛かるのでで少し感激です( ;∀;)
>FVRが振れ
これに関しては電源電圧で間違いないと思います
最大1%のずれですが
SANWAも大きなズレが有るとは思えないのでPICのFVRのずれなんでしょうか?
(データシート的には問題ない範囲ですが)
今まで手持ちのPICでの経験だと(数は少ないですが)1%近くのズレは経験した事がないです
(ただゲインアンプを使わない1.024Vでの測定が主ですが)
>>919
逐次角型ADCと思うとオーバースペック気味にも思えます
VRefを外部入力で使うなら個体差を気にしないで設計出来て楽できますね
10mV(低い電圧が)リニアなのも使い勝手が良いでよねMCUによってはこのあたりの特性が微妙なのも多いですし
8BitのPICに関してはアナログ周辺モジュールを中心にもっと評価されてほしいと思ってます >>972
サブスクで月4700円くらいのがあるよ
必要な時だけ課金したら? >>973
O2までで特に困った事は・・・・
有ったけど気にしてない\(^o^)/
縛りで8pin 2kwのPICで物作った時に少し辛かった( ;∀;)
Program Used 2046(0x7FE) Free 2 (0x2) ← ギリギリじゃん
(ここでアセンブラ使ったら宗教的に負けだと思った) >>975
ココだけの話だけど趣味利用なら
Vmware使って仮想PC環境で60日のフリートライアルを捨てアドつかって登録すれば良いと思ってる
(思ってるだけでやったことは無い) >>976
すげぇ、ぎりぎりでしたね
そういえば、変数をvolatile宣言すると何故か縮む事がある不思議
膨らむ事もあるので法則が分からない >>978
>変数をvolatile宣言すると
この辺がコンパイラが酷い所だと思ってる
特殊機能レジスタに定数(変数)入れる時と汎用RAMに定数(変数)入れる時で処理が違ってたりするの見たらさすがに無償版でも改善してほしいと思う
>すげぇ、ぎりぎりでしたね
実の所は少しオーバーしてたけどUARTで出力するメッセージを短く(削る)事でごまかした・・・
あと色々と工夫して(C使ってるのに常にコンパイラが出力するアセンブラを意識して)作ってました
解読性的にswitch使う所がifだったりと・・・悲しい事に( ;∀;)
まあ、それで作ったのは皆大好き!あのお方の>>545の自動車模擬ライト
これを8pin(2kw)のPICで作ったんだけど(/ω\)
縛りがあると気持ちいいよね\(^o^)/ >>967
逆だろ
気になったことを追究できない奴はエンジニアに向いてない Cなら x ++; と書くだけなのに、結構面倒なんですね。 >>983
あなたの言う通り、いいエンジニア、に限らず文系でも理系でもいい探求者は、山ほどの気になることを抱えていてパラレルに追及している。
でも、時間も脳内の思考リソースも無限じゃないので、優先度の高いテーマに高いプライオリティを置いている。
>967から見れば優先度が低そうなテーマに見えたんだろう。でも将来のコンパイラの研究者かもしれない人にとっては優先度が高いことかもね。 Peripheral Interface Controller
に対して
Società Generale Semiconduttori Thomson Semiconducteurs Microelectronics 32
長過ぎやろ >>984
8bit CPUのアセンブラは逆に複雑かもね
32bitCPUのアセンブラならもっと簡単にできるよ
XC8が吐き出すアセンブラコードも複雑すぎるかも
AVR-gccが吐き出すアセンブラコードの方がわかりやすいね
今はアセンブラの入門書は少ないのでコンパイラが吐き出すコードはいろいろ参考になるかもね このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 185日 12時間 25分 24秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。