初めてのPIC 0x13
レス数が950を超えています。1000を超えると書き込みができなくなります。
PIC初心者のためのスレです。
こことは別に「PIC専用のスレ」があります。
質問・回答するときは…
PICの型番と開発環境を明記しましょう。
プログラムはレス内に直接書き込まず以下を利用しましょう。
ttp://codepad.org/
ttps://pastebin.com/
解決したら結果報告しましょう。
Atmel買収以降アンチによる荒らしも横行しているので無視しましょう。
(特にスレ立て当初はこぞって荒らしに来るのでスルー。)
質問内容に沿った回答を心がけましょう。
回答者が勝手に話を膨らませても初心者には迷惑なだけです。
「PIC専用のスレ」へ誘導した上で思う存分あちらでどうぞ。
必要なソフトなど(無料)
統合開発環境 MPLAB X ttp://www.microchip.com/mplab/mplab-x-ide
コンパイラ(XC8 XC16 XC32) ttp://www.microchip.com/mplab/compilers(高機能版のみ有料)
以下はIDE内からインストールできます。
コード生成プラグイン(MCC) ttp://www.microchip.com/mplab/mplab-code-configurator
マイクロチップ・ライブラリ(MLA) ttp://www.microchip.com/mplab/microchip-libraries-for-applications
必要なハードなど
初心者はPIC16F1以降の型番で始めると無理なく始められます。
最初からPIC32で始めるのもありで、MCCの利用でハードルはむしろ低いです。
ttp://akizukidenshi.com/catalog/c/cpic32_ssp/
プログラムの書き込みには書き込み器が必要です。
予算に応じてPICkit4、SNAPなどを購入しましょう。
ttp://akizukidenshi.com/catalog/g/gM-13854/
eBayやAliExpressで買えるPICkit3の中華クローンも十分な性能が報告されています。
PIC一覧、スペック検索
ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
ttp://www.microchip.com/maps/microcontroller.aspx
過去スレ
0x12 2018/09/19〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1537343778/
0x11 2018/08/05〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1533446166/
0x10 2018/06/29〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1530265723/
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/
では、質問どうぞ〜っ >>849
振動があるのなら半田付け部分を調べたら? >>849
7年か。電解コンデンサが、まず疑いの対象かな。
運用中の整流直後のレギュレータの入力側の波形は確認されました? >>849
PICが壊れることは、ほぼありません。回路側の問題だと思います。
リセットピンはどのように接続してありますか?
多分、瞬間的に電源電圧が落ちて、リセットが効いてしまうのだと思います。 私も「秋月の6Vトランスと7805を使ったリニア電源」がクサイと思う。
電源をSW式ACCアダプタに交換して様子を見たら? 6v電源で7805安定化か、負荷ごく軽めなら良いかも知れんがそこから先は祈るしか >>849
電源の波形をオシロで見てください。
リレー駆動時にドロップするケースと、
リレーにつけるダイオードがうまく機能していなくて、
もしくは、電源のコンデンサの容量不足で
電源がスパイクするタイミングでマイコンリセットおきてるかもです。 849です。
>>850
電源用電解コンデンサーは、「大は小を兼ねる」の教えの通り狭い場所にかかわらず
バカでかいものを使ってしまいました。経年変化やはんだ付けの際の熱、環境が与える
熱や振動など、考慮はしたつもりだったんですが、消耗品とみなして2,3年で交換すべき
でした。電力は、リレーが60mA弱、LEDが20mA、PICにはいくら必要なのかは不明
ですが、合計100mAほどと想定しで、その3倍を見積もっておりました。
>>851
問題はありませんでした。念のため基板ランド上のはんだを溶かして冷やした後
動作させたところ、同じ症状が起こったそうです。
>>852
装置は遠方で稼働中のため、私がアクセスできる機会が限られていまして、まだ見て
いませんがお盆には一週間ほどはずして返してもらえるそうなので、その時試して
みます。会社には全基板の定期的交換を進言します。
>>853
MCLRピンは1台はDIP化したリセットICを取り付けたと、おぼろげながら思い出しましたが、
リセットを起こした装置がそれなのか判然としません。なぜつけたかというと、リレーの
復帰時に発生する逆起電力を流すダイオードの必要性を、恥ずかしながらその時まで知らず、
リセット回路を取り付けた後で、整流用のダイオードをリレーに後付けした経緯があり
ました。その後に作った4台の装置は、最初からダイオードを設置しましたので、リセット
ICは取り付けてありません。使ったのはDIPタイプの16F88でしてMCLRピンはソケット
の足を切り、その下にパターンを通してあります。つまり浮いています。リセットを
引き起こすようになったのは5台のうち、いずれかの1台だけです。
>>854
アドバイスに従い秋月のスイッチング電源に取り換えることにします。リニア電源の
コンデンサが大きすぎて上の部品に接触して振動を受けたか、重すぎて振動の際
慣性力となり、基板に何らかのダメージを与えたか、コンデンサー本体の単なる
統計上、製造上のばらつきによる劣化なのか、までは判然としません。
皆さま、それぞれ貴重なアドバイスをありがとうございました。
PICはそういう壊れ方はしないこと、電解コンデンサーは消耗品であること
リセット回路は極力入れるべきこと、「大は小を兼ねる」思想にとらわれず、適正な
特性のパーツをえらぶべきこと、等々わかって質問してよかったと思います。
なお、スイッチング電源については何かの振動吸収材で包むと熱が蓄積しやすい
のではと思いますが、大した消費電流でもないので気にしないことにします。
それとも各所に温度センサーをつけて発熱を監視した方がいいでしょうか。
長文陳謝 >>858
>つまり浮いています。
それはいけません。
リセットピンは、リセット入力か I/Oの入力しかできません。
多くの場合、リセット入力にするようです。
ですので、リセット入力ピンなのに解放フラフラで使っていたということでしょう。
今まで何も問題が起きなかったのが不思議なくらいです。
10k程度の抵抗で電源にプルアップしてください。
リレーには、ダイオードを付けてください。
電源電圧が低下してリセットが働いてしまうか、ノイズでリセットが感じてしまうか
だと思います。
電源ですが、電解コンデンサは確かにドライアップ(内部の液の乾燥)はありますが、
国産メーカーのものなら2-3年で交換なんて、普通しません。
トランス式の電源がいけないのも考えにくいです。 >>858
MCLRは、入力設定でも、浮かしちゃ駄目ですよ。
最近のPICは、weak-pullupすれば大丈夫ですけど。 再度849です。
>>856
Lの付かない7805でもそんな感じなんですね。なるべく耐久性のありそうな
スイッチング電源を探すこととします。
>>857
リレーにつけた整流用ダイオードの劣化までは気が付きませんでした。
ありがとうございました。 覚えたての頃って結構失敗するよね
俺もリレーサージで強制リセット掛かった過去あるなぁ >>861
原因の可能性は沢山あるが、ひとつずつ確認してつぶしていかないと
結局何が悪かったのが分からなくなって時間がかかるよ。
まずは、>>860 のアドマイスを素直に受け入れて MCR をプルアップ
することだけをやって改善するか試してみるべし。 >>861
電源の種類って事じゃなくて、昔ながらの7805が安定化動作をするためには
Vout>=Vin + 2v
でないと。 すみません、PIC初心者です。
以下の内容で行ったのですが、書き込みが完了できません。
1. PIC24FV32KA302
2. configは、内部発振設定、RESETピンはI/Oで入力として使用。
3. ICSPの線はI/Oとは共用せずに、専用で配線。
4. MPLAB X, PICKit3 で、ICSP
5. コンパイル=エラー無し、書き込み先頭でデバイスは認識OK ID=7
6. ERASE OK
7. 書き込みの最後で、0x8000番地 xxを期待、だけど0xffになってる と、エラー
何が原因なのでしょうか?
よろしくお願いします。 >>857
それ俺もあった
リレーの接点が荒れてきて、かつダイオードの劣化で、コイルのサージ吸収ができなくなってきて
電源スパイクでPICがリセットしてしまう >>868
リレーの接点が荒れてきてノイズが増えたのと
コイルのサージとは基本的には無縁な筈だが
本当に両者のアンド条件だったのか疑問だな。 >>867
flash 32Kbyteだから0x7fffまでなんじゃない? >>867
エラー・メッセージ原文のまま載せなきゃ無意味。
メッセージそのもので検索してみて結果教えて。 >>872
これかな?
初心者は16進数、2進数と10進数との比較や対応関係把握が難しいかもね。 >>861
低ドロップタイプ・・・>>866が書いてくれてるけど、
出力電圧と入力電圧の差が少なくて済むレギュレータに交換するとか。 >>875
最近まで正しく動作していたことを、どう説明するの? >>876
整流後の平滑コンデンサーの劣化→リップルの増加→
レギュレータの入出力電位差を満たせなくなって5Vの電圧低下が発生することがでてくる
かな。 >>878
>>871の疑問は使用条件も含めた程度の問題だろね。
本件のような7年で劣化するのか、という。 定格内で使ってりゃ半世紀はもつだろう
Vfが少し増える位じゃないの
リレーコイルの逆起電力が吸収出来ない位劣化する
とか
ありえないだろ その一般的にはありえないと思うことを >>868 は平然と「俺もあった」と書いているので疑問なのだ。
どういうダイオードを使ってどういう状態に劣化したのか後学のために知りたい。 xc8 standardってインストール後60日間proとして使えるとのことだが
60日後は optimization levelが0で固定されてしまうってことで合ってる? そりゃ高温環境1000度とかで使えば、
一瞬で劣化するわな
そんな当たり前の事、ドヤって書かなくてもいいよ スヴァンテ・アレニウス
, -―-- _
,r ' 三- _ ミ 、
r' i ` ゛ ‐-、 ミ、
,i' ミ _,. `ヾ ミ
/ 'i , -‐ ` ミミ
'i ,i' ;r''''__,;:ir_ミl,,;!
ゝ ナ -、_r'r tテ l-‐!;rtt l_ヽ
i .: `ヾ l ´ / ヽ 、l /
! r':l -‐ ' i ̄.T
. ヽ ヽ  ̄ ヽ !
`ヾl、 .:' ー ニ入 il
,i! 、 ´ , i;:!__
/:l l ` _ -'-ノr':::::::::::::-.
_,.-::::::::::l. ヽ_ _, ‐'´ /:::::::::::::::::::
:::::::::::::::;!rヘ -―-ニ 、 i::::::::::::::::::::::
:::::::::::::r' !_ ,.r ´ ヽ !:::::::::::::::::::::::: まともに作れば、リレーのコイルの還流ダイオードが劣化するような環境だったら、それ以外の問題が先におこってそうだよ。 還流ダイオードが正常でも、電源ラインのコンデンサで吸収してくれなきゃ、
スパイクがのっちゃいますね。
昔、5VリレーとPICが同じラインで、LDO出力側にうっかり、0.1ufだったときにくらった。
でも今回は、リセット入力が浮いているので、それが原因だと思う。偶然今まで動いていただけ。 しっかしMCLR浮かして使うって
何処の文献参考にしたんだろうね >>889
多くのPICはMCLRは内蔵プルアップ出来るから(MCLR内プ)それを前提にして
わざわざ外付け抵抗をつけない作成も多い
そういう作成だけをみて「MCLRはどこにも繋がなくていいんだ」って
思っちゃったんじゃね? >>889
>>890
空きピンは、out か、pull-up の in にするというのは、
意識しないと。。。 MCLR は out にできない pin だけどな >>892
余談だけど、200Kohm程度の高抵抗で、pull-downかけておいて、
weak-pull-up のレジスタ使って、擬似出力PIN のように使う技を最近覚えました。 >>893
おおっ!目からうろこ。さすが 893 w MPLAB X V5.15 で、教えてください。
テキストエディターで、
・外部エディターの設定はどこにありますでしょうか?
・内蔵エディターで、Tool, option, Fontの中の、どの設定をさわれば良いのでしょうか
・グローバル変数名の文字色が青色なのですが、これを黒色に。
・関数名がボールドがかっているのですが、これを非ボールドに。
よろしくお願いします。 >>893
MCLRのピンなので、Lowを出力したとたんに
リセットするってことはないのでしょうか? >>896
ありがとうございます。
MPLAB X のエディターが使いにくくて、困ってるんですよ。
for(a=0; a<100; a++){ と括弧を打った瞬間に、次の行に括弧が自動的に付いて、
さらに { と } の間の行が挿入され、さらにインデントまでしてしまう。
おまえはOfficeか? と言いたくなるのも困っています。 >>897
MCLRとして使わずに汎用入力ピンに設定するってことだろ
大抵のPICはMCLRピンを「MCLRのために使うか、MCLRを無効化してデジタル
入力ピンとして使うか」を選択できる >>899
なるほど、I/Oにした状態で使うのですね。
ありがとうございました。 >>898です。
optionのチェックボックスをいじり倒していたら、だいぶ良くなってきました。
ただ、以下の2つだけが、どうしても直せません。どなたか、ご存じの方がいらしたら、教えてください。
1.
カーソルの現在位置の行が、現在文字の桁のアンダーバーが点滅のほかに
薄い緑色で、1行全部がハイライトしてくれる。
点滅だけで良くて、ハイライトは無しにしたい。
2.
void main(){
while(1){
if( ...){
こんな処理
}
(a) ←
}
}
← のところを1行空けるために、(a)点でリターンを押すと、
行が空くだけでなく、さらに while(1)の位置にカーソルが移動してくれる。
これを、カーソル移動無しにしたい。
while(1)のインデントだから、親切心で1TABしてくれるんだろうけど、お節介。
自分でやるから。
以上です。
よろしくお願いします。 >>898
昨今のエディタならだいたいそうじゃね? >>903
最近はそうなのかもしれませんが、
そうしない設定も出来るのではないか、と思っているのです。
いろいろさわっているうちに、TABが効かなくなってしまいました。
よくわかりません、このエディタ。 どーでもいいことに引っかかって前へ進めない性格のヤツっているんだねえ。
だーれも迷惑しないからずっとそこに独りで立っててくださいw >>906
>>905が何に対するレスかホントに分からんの?大丈夫? >>884
スペックのマージン少なかったら、7年で寿命はあり得る。 >>905
エディタや記述スタイルについては、好みのものや使い慣れたものから他のものに柔軟に乗り換えられる人もいれば、
自分が好きなもの以外は生理的に合わない人までいろいろいる。
前者の方がストレスは少ないだろね。
後者に近い人が設定や非公開なテクニックを使って自分の好みに合うようにしたいと考えるのはわかるのだけど
ソフトウェアを提供する側から見れば、使用者が少ないオプションのデバッグや洗練性は優先度が下がるわけだし、
まわりまわればユーザーが余計に使い難さを抱え込むことになりかねない。
デフォルトのままで使えるのが最強かも。 >>909
スペックとかマージンとか知ってる言葉を並べてみたかったんだろかな。
スペックのマージン少なかったらってダイオードメーカーに向かってい言ってるんか?
最後はあり得るなのでそもそも情報量ゼロだしな。
そして寿命(劣化)になったらVfがどうなんのよ。 http://www.picfun.com/f1/f13.html
相補型の出力を手動でコントロールしたいけど、
適当な出力ピン経由にして取り扱うとかしないと駄目なのかな? MPLABで表示されるharmonyのHelpの字が小さすぎて読めないんですけどこれ大きくする設定ってどこかあります? >>913
設定 > 簡単操作 > ディスプレイ > すべてを大きくする 20代です…
いや冗談抜きで小さいんだけど皆これ読んでるの?
まぁ別ウィンドウでhelp開いて読んでるから自己解決はしましたけど…
https://imgur.com/a/UgZIJ5d ディスプレイのサイズを言わないと比較のしようがないんじゃない? DeathPray 師を祈る
DeathPlay 脂肪遊戯 PICにLEDをつないで点滅させたいのですが質問さしてください
PICのRC0→LED→R→GNDと繋いで、RC0を出力かつLATC0=1に設定するとLEDが
光ることは確認しました
次に、PWMが設定できるRC5を使って同様にRC5→LED→R→GNDと繋いでLATC5=1に
するとLEDは光るんですが、LATC5=0にしても消灯しません
TRISC5でRC5を入力にすると消えます
RC5のLATではLEDの点灯/消灯は制御出来ないんでしょうか? 型番は秘密ですか?
設定が間違ってるような気がするけど。 ・私がAVRの時は30分もかからず出来たことが、PICに至っては丸一日使っても出来なかった。
以上が、私のPICを叩き壊してやりたいほどPICが憎らしい17の理由である。
毎回PICに触るごとにこのような言いしれぬ憎しみが蓄積かつ増幅されていくのである。
https://yaneurao.hatenadiary.com/entry/20080723/p1
↑PICあるあるーw >>923
すみません、書きもれていました
RC5に繋いだLEDの明るさを擬似アナログ的に変えるためにPWMを有効にしています
PWM出力を有効にしている出力ポートにおいて出力そのものをオフにしたい場合って
LATで制御できないようなバグ(エラッター?)があるんでしょうか? >>925
PWMで出力を制御してるのにLATで制御できたらPWMにならないでしょう。
原理的に無理なことがバグになるわけがない。 データシートにブロック図載ってるから理解するまで眺めてて >>924
マニュアル車で坂道発進ができなかったからとマニュアル車を憎んでいるような逆恨みに聞こえるな。 if で初期値をカットオフする値を設定しとけば
ある一定度以上までPWMは完全に0Vになる
10bit 1023なら100までカットする場合。 if (ad1<100){ ad1=0;}
if条件の問題
「LEDのお漏らしみたいな初期値でも微弱点灯する問題」はこれで消える >>925
PWM出力とは「Timer2の設定にしたがってLATを自動でON/OFFしてくれる」ことなので
出力そのものを止めるのにLATは使えません
出力を止める場合は
・TRISを変更して入力にする
・Timer2を停止させる
・デューティ比を100:0にする
等で対応しましょう >>924
> 私がAVRの時は30分もかからず出来たことが、PICに至っては丸一日使っても出来なかった。
> 毎回PICに触るごとにこのような言いしれぬ憎しみが蓄積かつ増幅されていくのである。
ハッハッハ
AVRもPICも(Cもアセンブラも)やっている人は似たような経験をしてるのでは?
私の場合は憎しみと言うより頭痛と吐き気だったけどw AVRとPICの違いを理解できない人、実感していない人はある意味、幸せだと思う。
「知らぬが仏」 >>924
自分が無能だとカミングアウトして
本人に自覚が無いから未だにそのまま掲載中
しかも10年間w 出来ないのは本人の能力で
いかに作るかが示せないのは、単なる恥でしかないよ
違いがあるから面白いのであって
どれを使っても楽しめるのが、意味があると思うよ
楽しくないのなら使わなければいいだけ
無能な人間に使ってもらわなくても結構だ
好きな物だけ使っていれば〜〜〜〜〜
おらは、現在、11の開発環境を使っていろいろなチップを使っているけど
それぞれに歴史と工夫とその時代の特徴があると思うよ
それでいいじゃないか。。。 xc8のfreeモードでpicを使うとなれば、どうしても、冗長なコードが生成されて気分が悪い。
avrgcc は、free で十分に最適化される。
もちろん、picは、安いので、メモリの多いものを選択すれば、大抵は、うまくいく。
でもたとえば以下のコードが 約90stepと avrgccの10倍となり、もやもやしてます。
うっかり proバージョンを買いたくなります。
uint8_t dmy1=0xaa;
uint8_t dmy2=0xbb;
uint8_t dmy3=0xcc;
uint8_t dmy4=0xdd;
volatile uint32_t ret = dmy1 | (uint16_t)dmy2 <<8 | (uint24_t)dmy3<<16 | (uint32_t)dmy4<<24 ; せこいコードでどうでもいいことにこだわる。
そのくせ、文句はたれても金は出さない。
PIC以前にまずそのしみったれた性格を直せよw でもこれ戦争なのよね、AVR含めよそがfreeで最適化制限なし、こっちはO1相当。
他にしがらみなければ、さあどっち選ぶ? >>939
「他にしがらみなければ」と条件を狭めてしまうこと自体、何かに囚われてしまってるのでは?
用途用途でペリフェラルが使い易いものとか、必要IOとか、価格とかメモリ容量とか処理速度とか
選択の条件はいろいろだと思う。
さすがに無償版コンパイラの最適化の能力だけで選ぶことはないかな。 そもそも戦争でもなんでもない。
単にどのマイコンを選ぶかということだし、技術的な理由や取引関係の合理的理由や
味覚と同じような非合理的理由が混ざり合って選ばれるものだと思う。
ともかく、売れているものには選ばれる理由があるのだということは前提でいい。
嘲笑的に、なんで売れているのか理由がさっぱりわからないw って言う人もいるわけだけど、
他人が考える理由をすべて理解することなんて神様でもない限り無理。
分からないから分かるように理由を説明しろ、説明できないなら理由はないのだ、みたいな論法もあるが、
こういうのは、分からない方の了見の狭さが一番の問題だろね。 >>941
電子系に限らないけどB to Bの世界は性能・仕様もあるけど価格、納期、納品数、契約期間、人脈、接待・袖の下、政治・・表には出ない様々な背景があって市場が決まるからね。
でも勝てば官軍。
様々な周辺ビジネスも広がり多くの階層にメリットが出てくる事も多いかな。。。 >>936 本人ですが、
EEPROMに保存した、32bit値を読み出そうとして、こういう目にあいました。
xc8 は、時間関数や、sprintf が使えるので、メインの利用を検討しています。 >>939
>AVR含めよそがfreeで最適化制限なし、こっちはO1相当。
の実際について客観的な比較データの出たためしが無い。
多分大差ないから出せないんだろう。
加えて、メモリの多い奴、クロックの速いのに変えるだけだから気にならない。
という具体的かつ現実味のある話の前でかすむしなw CPUの選択理由は色々あるだろうけど、
AVRで簡単に作れる仕様なのに8ビットPICでは難しい
は重要なポイントだと思う。
AVRは趣味の電子工作なんだけど、アセンブラで操作していると、
自分の思いのままになるというか、かゆいところに手が届くというか、
とにかく楽しい。
楽しすぎて、入浴中やウォーキング中にも脳内でプログラムを組んだりする。
風呂の時間が長くなるし、
(30分以上も何の音もしないので心配になって見に来た、とカミサンが覗きに来たり)
電車の接近に気が付かなかったりするので
(踏切が赤信号なのに路面電車の接近に気が付かず、
警笛を鳴らされて、思わず私がビクッと立ち止まったら、
運転手が私のその驚いた様子を見て笑っていた)
止めようと思っているのですが。
もちろん、何をどうしようと人それぞれの勝手です。
世の中には私の理解できないことがいっぱい有ります。 >>944
XC8ってそんなにおバカだったっけ?コンパイルリスト出力してみてどんなコード吐いてるのかみたいな >>947
なんか>945が顔真っ赤にして喚いてるみたいだけどw、XC8はそんなに賢くないね。
痛感したのはPIC18をターゲットにしてコンパイラーした時に、折角POSTINCxなんていう
便利な命令が追加されてるのに全く使ってくれないとか
ループで何か処理したい時はXC8のコンパイラー結果を参考にしつつそこだけインラン
アセンブラーで書き換えることが多いね >>947
xc8 は、PRO版でないと、フェアな比較ではないけど。
もやっときますよ。いい方法があれば、教えてほしいです。
http://codepad.org/CP2d6NUk コンパイラとコンパイルくらい理解して欲しいと思いました レス数が950を超えています。1000を超えると書き込みができなくなります。