初めてのPIC 0x0e
■ このスレッドは過去ログ倉庫に格納されています
.
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・素人玄人などと 上から目線の回答者は、無視してください。相手してはいけません。
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
・回答者は、僕たち初心者に優しくしてください。あなたも通ってきた道のはずです。
必要なソフトなど(基本無料)
統合開発環境 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
必要なハードなど
初心者はPIC16F1、PIC18F1以降の型番で始めると無理なく始められます。
プログラムの書き込みには書き込み器が必要です。持っていない場合はPICkit3(中華クローンでもまず大丈夫)を使いましょう。
PIC一覧、スペック検索 ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
さ、質問どうぞ〜っ
0x0d 2017/10/25〜 ttp://rio2016.5ch.net/test/read.cgi/denki/1508935254/
0X0C 2017/07/27〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1501157324/
0x0B 2017/05/08〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1494235320/
0x0A 2017/01/04〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1483498857/
0x09 2016/09/07〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1473238791/
0x08 2016/04/30〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1461994030/
0x07 2016/02/05〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1454648249/
0x06 2015/07/18〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1437151298/
0x05 2015/04/07〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1428391368
0x04 2015/01/02〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1420205108 >ど初心者です。アドバイスください。
なんだ、やっぱりいつものパターンか >>312-314
ありがとうございます。
そのレベルで操作するのですか。
XC8, XC16では、fprintf(,)は使えないのでしょうか?
出口フラグ = 1;
printf("test\r\n");
void putc(unsigned char c)){
if( 出口フラグ==0 ){ TXREG.0 = c; }else { TXREG.1 = c; }
}
こんな感じでしょうか? 自分で_fprintfとか作って、その中でハードに合わせた処理を書けや それをやってくれるのがコンパイラーさんだと思うけど。 fprintfは関数なのでコンパイラの仕事でなく関数を書く人間の仕事だ
予めコンパイラに関数が登録されている事もあるが、無ければユーザーが独自に書く必要があある >>321
fprintf(stdout, ...)
fprintf(stderr, ...)
で切り替えろってこと
#define ch1 stdout
#define ch2 stderr
で希望通りになる 関数のオーバーライドできるの?
ライブラリのソースってあったっけ それなら、X Cコンパイラ作った人がサボったってこと? >>326 >>327
なるようにするんだよ
writeを自作するだけだ 通常は関数名の前に_(アンダーライン)とか付けて同一の名前にならない様にするが、該当の.hファイルをincludeしなければ標準関数と同一の名前は作成出来る
標準関数はあくまで関数であって文法ではない トンチンカンが現れた
インクルードするかどうかとリンクするかどうかは関係無いし
ていうか、fprintfから自作するつもりか? リンカで指定しているライブラリ中のコードと自分のコードのシンボル名が重複したらどうなる?
ということだな
PICは良く知らんのだがarmとかだとweakと指定してあれば重複しても指定していない(強い方)
シンボル使ってリンクしてくれるのだが(C++とかのオーバライドのことではなく、リンカの機能)
こんな機構が処理系にあれば、気軽に低レベルI/O関数のwrite等をユーザー定義の関数に
すげ替えられる。
それが無いと標準ライブラリから特定のオブジェクト抜き出して使用するとかしなけりゃならない
(何らかのフック機構が用意されていればいいけど)
で、PICのXCの場合はどうなん? 上書き出来ないわけが無いだろうが
組み込み初めてか?
あと、>>331に対する>>332の意味はわかるよな? グズグズいうまえにやってみればいいのに。
普通にできる。 >>317
さすがです。その通りです。
まあそもそも、化学業界でPtなんて、オーバースペックもいいところだと個人的には考えてますが。使いにくいし。
それこそ分野によるのでしょうが。
仕様はも少しお待ちくださいな。今帰宅中ですので。
飯食って風呂はいってから、、、疲れて寝るかもしれませんが。 >>336
化学プラントではPt100Ωが標準的に使われてるけど…
ラフな温水調節とかでは熱でんついが多い
医薬品プラントはほぼPtだよ
5chでこんなこと書いてるなんて
余程レベルが低い会社にお勤めなようで
俺もだが >>338
そりゃ知ってますよ。
Pt100はドリフトせず、断線するときは基本的に即死しますから、異常検知しやすいんです。壊れにくいしね。
K熱電対はドリフトしやすく、壊れやすい。異常検知が難しいのでプラント向きじゃないです。
ただ、精度の観点でいえば、Pt100じゃないと!ってのはダウトですね。Pt100とK熱電対の精度を語る前に、槽内循環改善しろって話です。
さて、ご飯食べてきますね。 >精度の観点でいえば、Pt100じゃないと!ってのはダウト
熱電対と比較して? >>287
お待たせしました。仕様書きました。よろしくお願いします。
【天秤仕様】
ボーレート: 150, 300, 600,1200, 2400, 4800, 9600から選択可能
パリティ/ビット: 8bit, 7bit/パリティなし, 偶数, 奇数から選択可能
ハンドシェイク: 無し, ソフトウェア, ハードウェアから選択可能
【天秤からの伝文】
"S" (スペース) [A-Z] (複数のスペース) (測定値) (スペース) "g" [CR] [LF]
これがひたすら天秤から投げつけられ続けます。
送信間隔は不明ですが、もともとプリンタへの出力を想定した端子なので、せいぜい1秒だと思います。
(測定値)は小数点を含む数字です。負数の場合のみ"-"が付きます。
浮動小数点数型みたいな気の利いた型ではなく、ただの文字列です。
なお、天秤のオーバーレンジ、アンダーレンジの場合はそれぞれ以下の伝文になります。
"S" (スペース) "+"
"S" (スペース) "-"
【DA変換仕様】
分解能別に12bit, 14bit, 16bitの3ケース示します。もちろん高いほうが嬉しいです。
12bit: 測定値の絶対値を返してください。出力レンジは0〜409.6g, 1LSB=0.1g
14bit: 出力レンジ-409.6〜+409.6g, 1LSB=0.05g
16bit: 出力レンジ-655.36〜+65536g, 1LSB=0.02g
出力電圧は、12bitの場合0〜5V, 14/16bitの場合-5〜5Vでお願いします。
【その他】
Ch: 1
PICkit4買いました。
よろしくお願いします。 >>347
「選択可能」の意味は?
オーバーレンジ、アンダーレンジ、範囲外の場合の動作は?
ハンドシェイクの意味は?
(受信だけだし速度も遅いのでビジーにはならんでしょってこと)
レンジがおかしいので修正を >>349
選択可能の意味は、天秤側は設定で変えられますんで、作る人がやり易い方法でお願いします、という意味です。ハンドシェイクも同様。…書かなかったら書かなかったで文句いうくせに。
オーバーレンジ、アンダーレンジ、範囲外の時は、近い方のレンジ端で出力してください。っていうかアナログ出力なんで、それ以外の表現方法ないですよね?
レンジがおかしいってのは、1ビット分多いぞごるあ!ってことですか?好きな方切っちゃってください。ユーザー側からしたら、どっち切っても同じことです。だってアナログですから。
よろしくお願いします。 >…書かなかったら書かなかったで文句いうくせに。
「選択可能」という言葉を書かなかったら文句が出るでしょうけど、そうではなくて、
「選択可能」の意味を書かないといけないですよ。
>ボーレート: 150, 300, 600,1200, 2400, 4800, 9600から選択可能
は、少なくとも下の2つの解釈ができるのです。
・このうちのどれでも作りやすいのでいいです(>>351の説明でこれだとわかった)
・なんらかの設定で150, 300, 600,1200, 2400, 4800, 9600を任意に設定できるしくみになっている。 >それ以外の表現方法ないですよね?
オーバーレンジ、アンダーレンジを受け側で判断できるようにしなければいけないようなもので
0-5Vの出力を持つもののとき、
正常測定範囲を0.5V〜4.5Vに振って、アンダー、オーバーその他トラブルのときに、範囲外電圧を出力する、
という要求は見たことがあります。 どれぐらいの意味があるかは用途次第ですけど。 やっぱりシリアルロガー作ってデータ編集はPCでやったほうが楽な気がする そだねー
全体的にラボのシステム見直すべきと思うな
PC置くと液体で汚れるからイヤだ?
データロガーなら汚れてもいいのか?
自分だったらアナログで統一なんて「大バカ」なことはせずに
デジタルで統一して記録するがな >>351
あんまり態度が悪いと放置するぞ
PIC32MM0064GPL028 175円
PCM5102A 500円
ICL3232CPZ 130円
出力は±3Vで良ければDACからそのまま出せる
電源は3.3V単一
±5Vが必要なら追加の部品が必要
DACはオーディオ用なのでDCの質は未知
あとは基板、コネクタ、抵抗、コンデンサ、ケース、電源が必要
とりあえず、±3Vくらいで良いかどうか書いて エラー通知の方法はいくらでも方法がある
アナログ出力からパルスを出すとか
別のポートから出すとか 自分だったらESP8266でも使って隣室のPCにデータ飛ばすな
作れないなら売ってる
例えば、
>「Wi-Fi RS-232C 変換アダプター REX-WF60」
>離れた場所にある電子天秤などの計測系にもiPad・Android端末にも利用できる、
>WiFi to RS-232C 変換アダプター。
電子天秤が広告文面でてきてワロタ
まともなやつが使ってるのはこういうものだ dsPIC33FJ64GP802 480円
でもいいか
0V〜3.3V出力で良ければそのまま出せるし
±5V必要なら出力段の回路が必要 PWMのDACでいいなら8pinのPICでできるけどな
予算\500
コネクタ+基板+PIC+CR少々+ケースは100均のタッパ
ああ、RS232の12Vは適当にDi+抵抗で受ける 誰もお前に頼んでいないし
俺も誰にも頼まれていない
気楽に行こうや
書きなぐりでも誰かの参考に僅かでもなるなら
それでいいじゃないか さすがの企業の化学者さまは一味違った違うな
肝心の出力電圧の誤差とリップル、出力インピーダンスと交流応答特性が完全無視
こんな仕様で出した測定器でどんな代物ができるんだろう
100g中の重量誤差も温度許容差も無視の企業化学者様だぜ 交流応答特性?
ほとんど直流でしょ
リップルもどうせロガーでローパスされるからあまり関係無い
熱電対も入力出来るんだから
ロガーの入力インピーダンスも非常に高い
と思った
精度は気にしないと言っておきながら
16bit欲しいってのがちょっと 化学は畑が違うとはいえ こんなことがあった
発振回路の水晶に薄膜が着くと周波数変わる、というセンサにしたかったらしい
それが発振しないというので見てくれと化学科の人間が持ち込んだ代物は
水晶片から配線が約1mピローンと伸びて駆動回路に繋がっていた
これでまともに動作するわけないよと言っても、なんで?というので
・・・以下略 化学の人が水晶発振器を使ったセンサを考えた
すごいじゃないか QCMと言うんだよね
うちの会社でも物性屋が研究してた。
ナノグラムの変化を周波数変化で見るって。
経年変化が問題だった。 ちょっと教えてほしいのですが、16F1705にてUARTを使用しようと思っています。
そのために、RX、TXの設定をしたののですが、PPSにて設定する場合、下記の書きかたで問題ないでしょうか?
(うまく動作しなくて一つ一つ原因を追究中の状態です。)
//TXピンをRC4とし、RXピンをRC5に割り当てる場合は?
RC4PPS= 0b10100 ; // 出力(TXを割当てる)
RXPPS = 0b10101 ; // 入力(RC5を割当てる)
TRISA = 0b00000000 ; // ピン(RA)は全て出力に割当てる(RA3は入力専用)
TRISC = 0b00100000 ; // RC5(RX)だけ入力その他のピンは出力に割当てる >>365
シリアルの変動に対する出力変化の追従やジッタをどうするかということだよ
16ビットのアナログ値の精度の取得と発生を簡単に言う奴に、ちゃんとしたやつはいないと思ってる >>372
受信間隔がせいぜい秒だって言ってるんだから
追従性やジッタなんてどうでもいいだろ
気にすべきところはそこじゃない >>373
どうでもいいことはないだろ、出力変化点の仕様を決めてなければ回路含めた低レベルの設計ができず
動いたからいい、たまにロガーがおかしなデータを受信して、運用のデータ処理でデータ廃棄するという
汎用のない代物が出来上がる 何を心配してるのかさっぱりわからん
DACの出力が秒遅れても問題ない機器だぞ
シリアルの入力パルスの影響でDACの出力が変動することを心配してる?
そんな事よりもっと心配する事があるだろ >>375
だから、
DACの出力や変動が秒遅れても問題ない機器
ということを仕様に書けよ、ということ。
もっと心配することは大量にあるが、そこのところをきちんと書くのが仕様というもの。
書けないやつは永遠に書けないし、このスレの趣旨でもないのでもういいよ。 遅延がどうでもいいことは今までの書き込みでわかるだろ
非線形性
温度特性
まず気になるのはこの辺だ
これもスペックに書いてないからどうでもいいんだろうけど 変化がわかればいいって可能性もあるので
ビット数が有れば精度はどうでもいいって可能性もある まあでももう何の反応も無いから
やっぱり作り話かな? デジタルで入力されてんならデジタルのまま処理しなよ。
チャンチャン♬ 自分が想定したストーリーに合わないときに「作り話」って言うのが好きな人がいるね。 >>377
シリアル入力をそのまま整流して、ローパス通して、適当にオペアンプでバイアスと増幅すればいいんじゃね? そりゃPIC好きな時点でヘンに決ってるよ、
ジーチャンに限らずニーチャンだってオジチャンだって。 >>388
久しぶりに声出して笑ってしまったじゃねえか ガベージインガベージアウト
ゴミ仕様からはゴミしか生まれないってこった ヘンとヘンを集めて もっとヘンにしましょう
タイヘンだダダ みなさま遅くなりました。3日放置してて申し訳ないです。平に謝ります。マジで。
>>356
3.3V…ええ、それでいいです。大丈夫です。
でも、勉強のために5V出力するためにはどうすればいいか教えていただけると
なおうれしいです。
>> 357
ほへー。そんな手が。失礼しました。 >>378
その通りです。絶対値の精度は問題じゃなくて、変化の具合が重要なのです。
どんな塩梅で遅くなったか、とか。だからこそデータロガーでデータをとる
意味があるのです。
>>372
無意味に16bitを指定してるわけじゃないです。
確かに天秤に乗せた容器に少しずつ、400 gまで(つまりレンジいっぱいまで)
液体入れていくなら、16bitもいらないです。
でも同じ天秤で、最終的に40 gまでしか液体入れないときもあるわけです。
しかもそれを3時間かけてゆっくりゆっくり入れていく、といったときもあるわけです。
そういうときに必要な分解能は、400 gをちゃっちゃと入れる時よりも
(重量単位では)小さくなります。
測定レンジは必要最大値で、分解能は必要最小値で、という仕様にすると、
必然的に16bitが欲しいなあ、となります。 >>377
ご指摘ありがとうございます。
温度特性はだいたい常温付近でしか使いませんから、
あまり気にしなくていいと思っています。
非線形性は気にはなります。
maxisのDAC見たところ、チップのグレードによって
線形性が変わるようでしたので、基本的な回路をご教示いただければ、
あとは私のほうでグレードを選べばいい、と理解しています。
(間違ってますか?) >>395
1年前に別件でPLCのスレにお世話になったときも、LabView勧められましたねえ…
結局melsecシーケンサの勉強しましたけれども。
食わず嫌いです。 シーケンサで組むより再利用性やら考えたらLabVIEWの方が良いだろう
値段も変わらん 別に答えなくて良いや
人が書いた文章をまともに読んでないようだし
態度を改める気が無いようなので
以降相手にしないことにする >>399
だね、自分も同様に思います。
ここの自称初心者はこんなのばっかり。実は一人なのかもしれないけど。 >>324
XC16の標準の奴はunixに近い仕様だから、逆に使い勝手悪い。
俺はXC8の doprnt(printfの中身)を、修正して使ってる。 俺はlight weight printfつかってる dspicをいじるのにxc16を使っていますが割り込みの中で関数呼び出すのは禁止なの?
誰か教えて >>403
その関数を実行中に、割り込み入って、さらに、その関数が呼ばれる とか無ければ、問題はない。 ありがとうございます 了解しました
割込み処理中に割込みが入らないようにして
実験してみます
推奨されないだけで禁止ではないのですね 推奨の有無とかの話じゃない
何が起こっているか/起こるか理解しておいて使えというだけの話 8bitならともかく、DsPICとかなら、割込み内部からの関数呼び出しでスタックやらバンクやらの問題は
かなり大丈夫になってるんだろ? 何をやって良くて何をやってはいけないか
わかってないなら割り込み自体使うべきではないよ まあまあ、お仕事でも無いなら、しくじって覚えてもよいでは無いか。 割り込みからはできる限り速やかに戻った方がいいよ。 ■ このスレッドは過去ログ倉庫に格納されています