初めてのPIC 0x10
■ このスレッドは過去ログ倉庫に格納されています
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
さ、質問どうぞ〜っ
0x0f 2018/05/01〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1525183933/
0x0e 2018/02/13〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1518524799/
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 いかに低速で駆動させて低消費駆動を競うのがPICの楽しみ
31k内部発振、スリープ、16LFデバイス、CR2032で10年駆動も余裕 CR2032って自然放電も含めて10年も持つのか? >>244
環境温度範囲とか考えなくてもいい遊びはそれなりに楽しいと思う PIC32MM0064GPL028をMCCでプログラムしています。
内蔵クロックでPLLの設定について質問です。
https://i.imgur.com/RIhuHz2.jpg
上のように設定すると16MHzで駆動してLEDが点滅します。
全く同じ回路でプログラムの他の部分も同じなのに
下のようにすると全く動きません。
https://i.imgur.com/KldjbYB.jpg
何が間違っているでしょうか?
環境は以下の通りです。
MPLABX IDE v4.10
MCC v3.55.1
XC32 v1.44
よろしくお願いします。 >>249 >貯蔵条件によっては
乾燥して、ある程度の温度範囲で、などの条件かな? >>251
乾燥しているかどうかはよほどな高湿でない限りは極間の電気抵抗値なので、
CR2032の保存寿命には影響がないかも。結露は問題外として、高湿環境にずっと
晒されると内部に影響があるそうです。
問題になるのは温度。
https://www.daitron.com/documents/CR2032.pdf
ムラタの資料ですが、「60℃100日貯蔵が常温5年に相当」とあるように、
高温だと自己放電が増えます。
以前にメーカーに質問したときには、0〜30℃の範囲で、10年ぐらいの
保存性能はあったように思います。(大切なことなのでうのみにしないで)
自己放電ということでいえば、ちょっと大きいリチウム1次電池を使った
住宅用火災警報器が10年が寿命ということになってます。
概ねそれぐらいの寿命は期待できるということなのだと思います。
でも最近は、アルカリ電池も「10年保存」なんて書いてあります。
期待しすぎちゃいけない気はしますが。 >>252
アルカリ電池がアルカリマンガン電池のことなら、10年なんてとんでもないわ
どれだけ測定器類を液漏れでだめにされたか思い出しただけで泣けてくる
中長期使用の機器は環境温度やら電解コンのリークやらめんどくさいこといっぱいあってほんといや >>250
その設定でうちの環境ではちゃんと動くよ。
エラッタとかはよく把握してないけど。
どういう環境で動かしてます?
電源周りちゃんとしないとクロック上げたら動かないとかありそう。 PIC16F1705のオペアンプの出力についての質問です。
データシート探してみたんですが、わかりませんでした。
このオペアンプの出力を増幅する時、
どれくらいの抵抗で受けたらいいんでしょうか?
10Kボリュームだと波形がぐちゃぐちゃになりました。
慌ててネットを調べると、100Kくらいで受けろという話も見つけたのですが、
普通、どういう回路で受けて増幅用オペアンプにつなぐのか、ご存知の方がおられたら
ご教授くださいませんか。 >>257
PICは使ったことないけど、データシート見ると内蔵OPアンプの最大流れ出し電流は100mAもあるから、これの負荷回路側の入力インピーダンス(抵抗)が100KΩと言うのはあり得ないと思う。(あるいは自分の理解が間違ってる?)
https://i.imgur.com/V9eEmz1.png
内蔵OPアンプ自体は反転、非反転どっちのモードで使い、ゲインを決める外付け抵抗の値はどうなってるか教えてください。(回路図があると分かり易い)
https://i.imgur.com/cLjgldG.png
https://i.imgur.com/hwvMHoj.png 10kΩボリューム回りの回路図が見たい。
ボリュームを絞るとオペアンプ出力とGNDの間の抵抗値が下がるように繋いでしまったのでは? >>257
>10Kボリュームだと波形がぐちゃぐちゃになりました。
ここもっと詳しく書け 回路図をあげようとしたんですが、うまくいかないのでお見苦しいですが。
[PIC16F1705 OPA2OUT]---10KVR(LEFT)
10KVR(Center)---0.47u---[NJM4580 A+]
10KVR(RIGHT) -- GND
259さんがおっしゃってるとおりのような気がする。ダメなんですね? >258
PIC内のオペアンプはバッファーアンプとしての使い方をしています。
内部にある8ビットDACが入力です。
自分も通常、PICの出力は100mAくらい普通なので楽観していました。
ところが先に書いたようにつなぐと、波形にものすごい影響があります。
電圧は5V近くまで出てますが、電流は違うんじゃないかと。
ネットで大半の人はオシロで波形が出ていると満足してしまって、後続の接続例がほとんどありません。
今回、ヘッドフォンで聞きたいのでNJM4580につなごうとしています。
直結なら問題ないんですが、
音量をコントロールしようとボリュームをいれると波形はめちゃくちゃになってしまいます。 >>261
[NJM4580 A+]
ここは、0.47uだけが接続されている? PIC16F1705のDACの出力バッファとして内蔵オペアンプを使って、その出力をPCやアンプ付きスピーカーだかに繋ぐMIDI音源を作ったことがある。
特に問題は無かった。
電源は5Vだったかな。 レスをいただいている皆様に感謝します。
完全に煮詰まってます。
>263
ボリュームの後ろに一応カップリングのために入れました。
>264
ボリュームを介しました?直結はいいんですが、音量をコントロールしないとヘッドフォンとつなげません。泣 >>265
A+をDCで浮かせるとダメだよ。
NJM4580は、単電源で動作させての
回路図は、無理っぽい? PICのDACの歪みで思い出した。
無信号時のDAC出力値はどうなってる?
ゼロだと歪む。 オペアンプ回路なのに周りの配線・定数がわからんとなんともなぁ。 みなさんのご意見を気にしながら、
なんとなく16F1705のOPA2OUTとGNDの間に10K入れて、
OPA2OUTからボリューム10Kをひっぱってみたら、
意図どおりにボリュームでコントロールできました。
よくある入力回路をさぼらずにつけるのが大事ということでしょうか。
お騒がせしました。
とにかくいろいろ意見をいただけて煮詰まっていたところで、
とてもありがたかったです。
ありがとうございました。 >>266
これかな!?
>>265
NJM4580内部はバイポーラトランジスタで構成されてるから入力には0.1μA程度のバイアス電流が必要(FETでもゼロじゃないけど)で、カップリングコンデンサで直流的に浮くとバイアスがかからなくなるから例えば50KΩとかのバイアス抵抗を+入力とGND(単電源の時は仮想GND)間に入れるといいかと。 >>271
おっと入れ違いか。
問題解決おめでとう。 >>271
>煮詰まっていたところで、
行き詰まって ね。
煮詰まって は、議論が出尽くした事を言うんです。
と、カネスエの店員が言ってた。 一応、コメントします。
辞書に乗っていない使い方は間違い、という考え方は誤っています。
三浦しおんの「舟を編む」(映画もあり)にあるとおり、辞書は世の中の用例を集めたものに
すぎません。
言語に理系の「定義」はないのです。
しばしばいう、右、左の定義を見ればわかります。
たとえば「ら」抜き言葉は間違っているという人がいまだにいますが、
すでに辞書によっては掲載されています。
個人的には敬語と受け身の区別がついてよいとも思います。
さて、世の中では自分ひとりで考えまくって他の考えがでないことを複数人数であろうが
1人であろうが「煮詰まる」と表現している例は多数あります。
それをお手軽辞書にないから否定したところで、意味はつうじていますよね。
言葉遣いがおかしいと簡単に非難する人は言語についてもう少し学んでからにしてはいかがでしょう。 >>277
あなたは人生が煮詰まってますね。
5chだから良いけど、永遠・うるおぼえとかの誤用は頭悪く思われるから >>278
そうそう、自分ルールが正しいを押し付けたいアスペ気質の人の書き込み例。
人が見たり聞いたらどう思うか感じられないから仕方ないけどね。
ら抜きが使われるから正しいとかの論議は、端から見て頭悪い言い争いと思われることを感じ取れない。 >>277
>しばしばいう、右、左の定義を見ればわかります。
箸を持つのが右、お椀を持つのが左? もっと気楽にやろうぜ。
「知に働けば角が立つ」って言うじゃ無いか。
言葉は大体通じればOK、なんて大らかな気持ちになれないもんか?
ところで「舟を編む」はあまりに面白くなくて、
途中で、読むのを止めようかと思ってしまった。
この「舟を編む」で、それまでも疑問を持っていた本屋大賞を
完全に信用しなくなった。 「間違って覚えてました。ご指摘ありがとうございます。」
って言っといた方が色々と得だぞ >言葉は大体通じればOK、なんて大らかな気持ちになれないもんか?
大体動けばok、のPICに通ずるものがありますね! >>281
文学作品は万人向けのものなんてないから。
そんなことで賞の信用ウンタラなんて、いったいぜんたい嗜好をどんなものだと思ってるのか。
ただ、ここで国語論をだらだら続ける意味ってないよな。そんなのをちゃんとやりたいなら
せめて専門の板へ行くべきだと思う。
国語の素人同士がPICの板で議論しても、世の中は変わらんし。
(世の中が変わらんのに目の前の人の考え方が変わるわけなかろう)
PICの議論をする上で、ある程度は相手が言おうとしていることを掬うように考えてみるといいと思う。 >>272
カップリングとOPAMPの入力の間を、抵抗でGNDに落とせばいいということでしたか? 回路図がないとしんどいな。
わりかし一般的なVRのつなぎ方。
※は、適切なバイアス電圧源。
オペアンプが単電源動作なら、有効な同相電圧範囲の中点にすることが多いかな。
オペアンプが±電源動作なら、(出力に求められる電圧にも依存するけれど) ※はGND。
HX1230液晶とPIC32MM0064GPL028を組み合わせてみた。
ソースはPIC16F18346から移植して。
半角カナが文字化けしたり、
フレームバッファの回転で画像化けしたり、
なかなか難しいな。
XC8とXC32の違いかな?
https://i.imgur.com/xWaIuQq.jpg >>288
>>272 です。
そう、>>290さんの回答と同じ。
今回は電源電圧が低いからC1は無くても良いかな。 >>293
クロック問題は違う人だよ。
25MHzと15pFで問題なく動いてる。 24MHzなら内蔵OSCが使えるけど
25MHzだと外付け必須
なんか変な仕様
USB付きのでUSBを使うと25MHzじゃ使えなかったり
もともと24MHzだったけどマーケティングの都合上25MHzにしたとか?
そもそも25MHzって遅すぎる
50MHzでも動きそうだし
50MHz対応にしてもコストはほとんど変わらない気がする >>296
フラッシュの読み込み速度の関係だと思う。
クロックだけ高速化しても、キャッシュメモリーも積まないとウエイト掛りまくり。 >>291
フレームバッファを回転させた時だけ文字化けする現象は、
回転関数内のchar定義をunsigned charに置き換えたら解消した。
xc8では何ともなかったが、xc32は明示する必要があるんだと。 charが符号付きか符号無しかは環境依存
どちらかというと符号付きの方が多数派
符号付きcharが大きな型に変換されるときは符号拡張
色々な環境でコードを書くと
環境依存な記述に対して自然と注意するようになる
主な環境依存ネタ
charの符号
intのサイズ
エンディアン
アラインメント
負の数の除算、剰余 >>ID:+uds77ik
ご高説も結構だが、
8 MHz internal Fast RC oscillator
PLL 2x/3x/4x/6x/12x/24x
Divider 256/64/32/16/8/4/2/1
の条件で、25MHzに出来るか考えてみた? REFCLKO --> CLKI
の事を言ってるの?
これも外付けの一種
変な仕様であることには変わりがない ていうかマジで今時、チャーで変宣(変数宣言)するやつなんかいるの?
化石とか、冬眠してたとかそういうの?
XC8ですらUINT8かINT8で宣言するだろまじマンジ >>301
tnx.
xc8で特に意識しなくても動いたから甘えていた。
符号をちゃんと記述したら半角カナ表示不具合も直った。
PIC32MM、タイマの使い方がよくわからんがPIC16F1より高速だ。 >>301
そこに気を遣うぐらいなら、int16_t とか uint8_t を使うと良いのではないですかね。 >>307
おめでとう
そりゃ32bitだからね
遅い8bitより速いのは当たり前 >>304
で、考えてみたの?
考えても分からないの? >>307
って、HX1230動かすのにタイマー使ってないの? >>301
char のサイズと負数でシフトもな。
まあ、char が 6bit の環境なんてもうないだろうが。 charが16bitなら最近使った
「主な」では無いと思う
負数のシフト、というか負の数の表現方法も >>311
タイマ1は8bitPICと同じ感覚で使えてる。 すみませんが、質問です。
16F1827でRB3(AN9)に繋いだ可変抵抗からの電圧をAD変換して、
電圧の上中下3種類に分類してRA1、RA2,RA3に繋いだLEDのどれかを点灯させようと
プログラムを書きましたが、起動確認の点滅以後、LED消灯状態で動きません。
アドバイスなどいただけないでしょうか?
使用環境はMikroCです。
MikroCで16F1827だと、ADC_Read命令は使用不可とネットで見ましたので、
ADC_Get_Sampleで読み込んでいます。
void main()
{
unsigned int ad;
OSCCON = 0b01110000; //内部8MHz
ANSELA = 0b00000000; //アナログ入力なし
ANSELB = 0b00001000; //アナログ入力AN9
CM1CON0.C1ON = 0; //コンパレータ使用しない
CM1CON0.C2ON = 0; //コンパレータ使用しない
TRISA = 0b00000000; //出力
TRISB = 0b00001000; //RB3(AN9)だけ入力,他は出力
PORTA = 0b00000000; //ポートクリア
PORTA = 0B00000000; //ポートクリア
PORTA 0b00001110; //起動確認LED点滅2回
delay_ms(500);
PORTA 0b00000000;
delay_ms(500);
PORTA 0b00001110;
delay_ms(500);
PORTA 0b00000000;
ADC_Init(); //ADC初期化
while(1){
ad = ADC_Get_Sample(9); //AN9から読み込むadには0から1024が入る
if(ad << 341){PORTA 0b00000010;} //341以下ならRA1点灯
if(ad >> 342 && ad << 681){PORTA 0b00000100;} //342から681ならRA2点灯
if(ad >> 682){PORTA 0b00001000;} //682以上ならRA3点灯
}
}
よろしくお願いします。 ADC_Init と ADC_Get_Sample のコードは? >>315
> if(ad << 341)
typo だよね、そうだよね? = が無いとかも
コピペしないで直接入力したかんじ ADC出力は右詰めになってる?
MCC使ってるからわからん。 intなのに341ビットもシフトしてコンパイラはエラー吐かないのか…。
main.c: In function 'main':
main.c:57:5: warning: left shift count >= width of type [enabled by default]
x = x << 341;
^ >>318
>>319
ポートクリアの2行目は
PORTB = 0B00000000; //ポートクリア
でした。
起動確認LED点滅2回 のところの=はここに打つ時に抜けていました。
すみません。訂正します。
>>316
MikroCの標準ライブラリなので自分では書いていません。 >>323
ifの不等号の書き方おかしいだけじゃないの?
if(ad << 341){...}
じゃなくて
if(ad <= 341){...}
とか? すみません>315です。
if文で==の時と同じように>>と二回書いてるのが原因でした。
PICもですがC言語も初心者な者で単純ミスでした。 >>330
それは最初からわかってる。
「で、コンパイラは何も言わなかったのかよ。」
っていう疑問に返答頼むわ。 「何かグズグズ言ってたけど、この際シカトしてやりました」とかかな? >>330
以下とか以上とか書いてるけど厳密には
未満と超えるだよ
以下なら<=とかになる。 if ナントカ未満なら
else if ナントカ未満なら
elseなら
がいいと思う コメントに「以上」「以下」と書いてある
「以上」「以下」でないとif 文を通らない隙間が出来る
演算子を間違って記述している
以上から、
「以上」「以下」が正しいと私は判断します >>339
どっちを正しいと思うかという違いだけ
プログラムが正しいなら、未満と超える。というコメントを書かなければやらない。
だから、プログラムの間違いを指摘するか、コメントの間違いを指摘するかのどちらかになる。
プログラムの間違いを指摘せずに以上以下が正しいというのは変。 「以上」と「以下」の条件には、それぞれ
「等値」が含まれてしまって重複するのが
マズイことがある。
「等値」を含まない条件として「未満」
かあるいは「より大きい」が必要
ワカタ? >>341
プログラムはシフトなのでいずれにしろ正しくない
未満、越えるだと、
adが 341 342 681 682 の場合にifが真にならないので
>>315の説明文とも食い違う >>343
シフトに関しては、本人が==のノリで2つ重ねてしまった。
と書いているので、比較演算子<, >を書きたかったのだろうと推測。
但し、<=, >=と書かないと、以上、以下にはならないことには
気づいていないように見える。 ■ このスレッドは過去ログ倉庫に格納されています