X



トップページ電気・電子
1002コメント341KB
初めてのPIC 0x0f
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2018/05/01(火) 23:12:13.97ID:o4U5k+Rn
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


 さ、質問どうぞ〜っ
  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
0290774ワット発電中さん
垢版 |
2018/05/22(火) 20:57:43.95ID:CgOqStue
>>284
邪道でもないと思う。
>>282の手法で、PICの通常ポートでもオープンドレインが実現できるわけだし。
0291774ワット発電中さん
垢版 |
2018/05/23(水) 12:25:19.75ID:OPVS1i8j
アナログ入力電圧がロジック電源の範囲に入ってる状況しか考えられないのか
0294774ワット発電中さん
垢版 |
2018/05/23(水) 15:25:26.41ID:OQVEwUoA
世の中には抵抗器という部品がありましてな、それをうまく使いこなすと、好きな電圧の範囲に収められるようになったりするんですけどね
0301774ワット発電中さん
垢版 |
2018/05/24(木) 11:25:59.55ID:aBjWPUa7
今わざわざ新規でPICを選ぶってどういう理由が考えられる?
0306774ワット発電中さん
垢版 |
2018/05/24(木) 16:41:27.87ID:9gdMeWXO
>>301
はいはい、釣りはおしまいですよ
0309774ワット発電中さん
垢版 |
2018/05/24(木) 21:05:00.40ID:ozqIikV/
>>308
初めて出てくるような質問ではないですよね?
0310774ワット発電中さん
垢版 |
2018/05/24(木) 21:21:31.43ID:f26meJZN
値段
動作電圧範囲
サイズ

あとの理由は
ユニークなペリフェラルかなぁ
コンパレータとか
ロジックとか
0312774ワット発電中さん
垢版 |
2018/05/24(木) 22:50:16.44ID:ozqIikV/
一個人の理由を聞いて何の参考になるんだろう。

そもそも参考にするつもりなんて初めか
0314774ワット発電中さん
垢版 |
2018/05/25(金) 02:58:10.31ID:kjZH8AGH
PICをやりすぎると人格に障害がでるらしいぞ
もうかなり進行してる人もいるみたいだから注意してね
0316774ワット発電中さん
垢版 |
2018/05/25(金) 07:41:30.88ID:gANH21iN
>>313
PICより安いのでしょうか?
電圧は何Vなのですか?
PICよりサイズの選択肢が幅広いのですか?
0318774ワット発電中さん
垢版 |
2018/05/25(金) 08:24:55.20ID:fz6VH1nA
うちの選択理由は、対ノイズ試験がPICが優れていたから。
あとは旧三菱とか東芝の一部機種がよかったが、入手製と開発問う考えてPICに。
ちなみにAVRは対ノイズはあまり良くない。アーキテクチャはいいんだけどね。
0320774ワット発電中さん
垢版 |
2018/05/25(金) 13:12:00.18ID:l4yYU7n0
DigiKeyで検索すると
PICは値段が高いと思う

20円から色々なマイコンが1個から買えるのに
PICの最安は42円@3000個のPIC10F200
同価格帯ではダントツに低スペック

PICが安いというのは例えばどれのこと?
0327774ワット発電中さん
垢版 |
2018/05/25(金) 20:41:48.85ID:G1P4cbzs
静電気試験ならやるけど
ノイズ試験なんていうぼんやりした名前の試験はやらんなあ
0328774ワット発電中さん
垢版 |
2018/05/25(金) 20:43:59.30ID:G1P4cbzs
PICと他のマイコンを同じ製品の同じ基板にのせてテストするってのもなかなかあり得ないと思うし

車とか医療関係だと単体でテストしたりするの?
0329774ワット発電中さん
垢版 |
2018/05/25(金) 20:48:46.21ID:c74/vayJ
選定で評価基板でやったりする
オーバースペック耐性がどこらにあるとか
実際はスペック内で使うとしてもだ
ロットごとにやったりする
ロットごとにX線取ったりする
(こっそり変わっていないか)
0331774ワット発電中さん
垢版 |
2018/05/25(金) 21:43:24.83ID:egEETOnr
>>327
「ノイズ試験」でググれば色々出てくるよん。
ノイズ耐力だけでなく放出するノイズの試験も含まれるが、
これらを包括してノイズ試験と言うな。機能試験と分けて。
0332774ワット発電中さん
垢版 |
2018/05/25(金) 21:54:42.76ID:2Tv4fuYo
イミュニティ試験だと30MHz〜2GHzまで100V/mくらい晒して誤動作しないか確認するな
昔のマイコンだとこれくらいの強度でプロテクト外れたりレジスタ化けしたりした
0334774ワット発電中さん
垢版 |
2018/05/26(土) 02:05:59.68ID:9yqD9o4q
>>324
色々なノイズの試験全てで優れてたって?
それは単品評価?製品での評価?
何と比べて?
0336774ワット発電中さん
垢版 |
2018/05/26(土) 09:15:36.17ID:Iq3/VV4d
>>324は「全て」って書いてないのに。
揚げ足とったり、意図的な誤読や誇張をからめるのは、相手を困らせるためなのかな?
やたらと相手に開示させるのは、結論として相手がやってきた検討なり判断が不十分だとあげつらうためかな?
どこの誰だって限られた時間とお金の中で限られた調査をして部品を選択していることぐらい最初からわかってるだろうに。
分かっててそういう根掘り葉掘りをするのっておかしい。まるでこの場の議論で相手をいてこますことが目的みたいだな。
質問に値するだけの情報開示をしない人が、他人に開示を要求するなんて、お前が言うか、ってレベルじゃないですかね。

技術の板なんだし、この場での議論の勝ち負けはあまり意味ないですよ。お互い出せる情報を出して交換しましょうよ。

で、>>334に質問なんだけど、単品評価ってどうやってするの?
俺自身、開発の現場が長いけど、部品単体でノイズ試験をかけたことなんてない。
どんな場面でそういうことが要求されるのかぜひ知りたい。
0337774ワット発電中さん
垢版 |
2018/05/26(土) 09:27:49.96ID:9yqD9o4q
説得力が全く無いから、
ちょっとでも説得力を増す為の質問をしてあげただけ

「対ノイズ試験がPICが優れていたから。」
これだけじゃあねえ
0338774ワット発電中さん
垢版 |
2018/05/26(土) 10:17:36.23ID:Iq3/VV4d
>>337
自分で情報開示しない人が他人の説得力を語るのですか?

>>336の単品評価についての質問についてはどうです?
0339774ワット発電中さん
垢版 |
2018/05/26(土) 13:14:14.62ID:B/NPITNY
欲しかったのは回答ではなく説得力だったんだなw
よくもまあ、そんな気構えで質問できる物だ・・・
0340774ワット発電中さん
垢版 |
2018/05/26(土) 15:07:39.50ID:hIAdQftO
5分間隔でadcの結果をi2cのeepromに保存してるのですが、2〜3日くらいで
i2cのDS1307の読み出しでpendingエラーが発生して止まってしまいます。
リトライしても永遠にpendingエラーで
2c初期化しても同じです。
wdtでリセットも同じです。
電源再突入しか再起動出来ないのですが、何なんだろう。
0341774ワット発電中さん
垢版 |
2018/05/26(土) 22:00:15.98ID:GUfLAeOG
>>338
ノイズ試験と聞いて静電気とかしか知らない奴に何言っても無駄ですよ。
たぶんノイズ試験でググってノイズ研あたりのトップページをチラミして書いてるのでしょう。
0345774ワット発電中さん
垢版 |
2018/05/27(日) 09:16:57.37ID:LsSqWT5D
>>343
円滑なコミュニケーションを妨げるもの
(1)一方、または双方の非協力的・高圧的な態度。
(2)他方に対する挑発行為。
(3)言語能力の欠如
(4)書きて・話してがそもそも書かない。

>>343は(4)に相当すると思います。
0346774ワット発電中さん
垢版 |
2018/05/27(日) 09:32:14.67ID:LsSqWT5D
>>340
2〜3日、っていうのが奇妙だな。
単純に頻度が低くて、たまたまそれが2〜3日目に起こっているのかな。

とりあえず再現する最小ソースがあると答えられる人もより出てくるだろね。
I2CにつながってるのはDS1307とEEPROMだけ?
0347774ワット発電中さん
垢版 |
2018/05/27(日) 09:39:46.17ID:ZFpwEqNk
ノイズで誤動作してロック状態に陥っている可能性がある。
こういう場合はいくらソースを見ても分からない。
0348774ワット発電中さん
垢版 |
2018/05/27(日) 09:58:10.00ID:LsSqWT5D
>>347
そういう場合は、ね。
ソースがあれば完璧って話でもないし。
回路図、実際に配線の様子が分かる写真ぐらいが揃えば、かなりいいかな。
0349774ワット発電中さん
垢版 |
2018/05/27(日) 10:00:08.83ID:VWEdgmDr
2-3日で書き込みアドレスのラップアラウンドが発生して、その時の処理が間違ってるとか
0350774ワット発電中さん
垢版 |
2018/05/27(日) 10:16:45.66ID:LsSqWT5D
>>349
おおー。なんかありそう。
5分に1回。1日で288回。2日めの途中で512回をまたぎますね。
0351774ワット発電中さん
垢版 |
2018/05/27(日) 10:19:12.70ID:kiKS1Kmp
想像してたって解決にならん
PIC側かDS1307側か調べるのが先

現象発生状態で片方だけの電源をいったん落としてみる
これでわかる
3日かけて失敗したらもったいないので事前練習も

PICのWDTで復帰しないということから
DS1307の可能性が高そうだが
WDTでリセットがかからないブロックもあるので

ちなみにマイコンはどれ?
マイコンによってはエラッタで途中で止まることがある
PIC32MZ EFとか
0352774ワット発電中さん
垢版 |
2018/05/27(日) 10:20:12.70ID:kiKS1Kmp
あと良くやるのは発生までの時間を早くする方歩を探す
5分を1秒にしてみるとか
0353774ワット発電中さん
垢版 |
2018/05/27(日) 10:23:57.10ID:kiKS1Kmp
>>350
書き込んでる完全にソフトの問題ならWDTで復帰しないってのと合わないが

その問題だとしたら
サイズを小さくして周期も狭めればすぐに発生するはず
検証は簡単
0354774ワット発電中さん
垢版 |
2018/05/27(日) 10:45:33.01ID:LsSqWT5D
pendingって、
・DS1307がACKを返してこない状態で、EEPROMは継続してアクセスできている。
・その状態になったらDS1307もEEPROMもアクセスできない。
のどっちなんでしょ。

どちらかのデバイスがバスを引っ張ったままってことはあるのかな?
0355774ワット発電中さん
垢版 |
2018/05/27(日) 10:59:28.92ID:cfy4z3bP
みなさん、ありがとうございます。

メインループはTMR0で10mSの制限を持たせて、ADCを読み込み積算して、5分間の回数で平均をEEPROMに書き込みます。
デバッグ用にシリアルでTeratermへ時刻を送っているので、0.5秒間でDS1307を読み込んでいます。
I2Cの通信は、0.5秒間隔でDS1307リードと5分間隔のEEPROMライトが発生しています。
EEPROMはページをまたがない用に128Byte単位でライトしています。
EEPROMの書き込みではreturnの前に5mSの待機を入れてます。
PICKit3でプログラムを書き込み終了で自動的に起動して必ずDS1307のエラーでリセットしても変わらずで電源を入れなおします。

秋月のPIC18F46K22搭載基板です。
秋月のDS1307基板に4KBのI2CのEEPROMもありますが、AT24C1024Bのアドレスと同じなのでアドレスSelect Jumperをショートしています。
0356774ワット発電中さん
垢版 |
2018/05/27(日) 12:30:41.35ID:f1NziepZ
真剣に解決したいのか雑談したいのかどっち?
解決したいなら情報を小出しにしない

リセットっていうのはPICのリセット端子によるもの?
だとしたらソフトのバグでないことがわかるわけだが
そういう重要な所をちゃんとはじめから書くこと

残りはDS1307かI2Cのエラッタか

確率に頼ったデバッグをせず
確実に原因を切り分けるのか近道
0359774ワット発電中さん
垢版 |
2018/05/27(日) 12:36:26.66ID:cfy4z3bP
>>355
追加です。

2〜3日と書きましたが、5台作って止まらないのもあります。
MCCのi2c1.cを使っているのですが、以前にも書きましたが、うまく動作せずで、PIC16シリーズのMCCのi2c.cを参考に改造して使っていました。
それがとっても気になっており、先ほどMCCのファイルを全部消して、Generateしたところi2c1.cは改造なしで動作しました。
しかし、PICKit3で書き込み終了後の再起動でDS1307のPendingは発生して、電源再投入でした。

以前の改造したi2c1.cは Revision 1.55で今回 Generateしたのは1.65.2になっています。
1.65.2のI2C1_MasterTRBInsert関数は私が1.55でパッチした
inline void I2C1_WaitForLastPacketToComplete()
を呼ぶようになっていますので、結局なんの違いもないかもです。
0360774ワット発電中さん
垢版 |
2018/05/27(日) 12:41:04.86ID:cfy4z3bP
>>358
MCCでTMR0/ADC/UART1/MSSP1と16MHz内部クロックPLLx4を指定して使っています。
ADC以外は割り込み使っています。
0362774ワット発電中さん
垢版 |
2018/05/27(日) 12:56:43.99ID:f1NziepZ
>>358
リセットで復帰しないならPIC側の可能性はほぼ無い
少なくとも割り込みとか関係ない
無駄なことを聞くな
0364774ワット発電中さん
垢版 |
2018/05/27(日) 13:21:00.67ID:qVsObTfb
使うレジスタは、リセット後に必ず初期化してるか?
pon resetに頼ってる部分はないのか?
0366774ワット発電中さん
垢版 |
2018/05/27(日) 13:33:30.79ID:lWf86GMJ
>>364
MCCからGenerateしてmain.cの先頭にSYSTEM_Initialize()がマージされ。
INTERRUPT_GlobalInterruptHighEnable()と
INTERRUPT_GlobalInterruptLowEnable()と
INTERRUPT_PeripheralInterruptEnable()のコメントを外して、
// Add your application codeの後の行に
TMR0_SetInterruptHandler(timer)を最初に記述して始まっています。
0367774ワット発電中さん
垢版 |
2018/05/27(日) 13:57:09.32ID:PdBhvnQO
>>362
通信がエラーになるんだからI2Cの通信中に
割り込みかかってプロトコルエラーになってるのかと思っただけだ。
無駄なこと聞いて悪かったな。
けど、そんなムキになることか?
0368774ワット発電中さん
垢版 |
2018/05/27(日) 14:28:50.99ID:lWf86GMJ
MCCの割込み部分です。
void interrupt INTERRUPT_InterruptManagerHigh (void)
{
// interrupt handler
if(PIE1bits.SSP1IE == 1 && PIR1bits.SSP1IF == 1)
{
I2C1_ISR();
}
if(PIE2bits.BCL1IE == 1 && PIR2bits.BCL1IF == 1)
{
I2C1_BusCollisionISR();
}
}

void interrupt low_priority INTERRUPT_InterruptManagerLow (void)
{
// interrupt handler
if(INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1)
{
TMR0_ISR();
}
if(PIE1bits.RC1IE == 1 && PIR1bits.RC1IF == 1)
{
EUSART1_Receive_ISR();
}
if(PIE1bits.TX1IE == 1 && PIR1bits.TX1IF == 1)
{
EUSART1_Transmit_ISR();
}
}
0369774ワット発電中さん
垢版 |
2018/05/27(日) 15:10:33.92ID:PdBhvnQO
>>359
もう一つ無駄なこと聞くけど、
>5台作って止まらないのもあります。
これは個体差なの?
止まらないやつは何回やっても止まらない?
0371774ワット発電中さん
垢版 |
2018/05/27(日) 15:19:22.53ID:PdBhvnQO
ってかさ、I2C にプロトコルアナライザつないで確認すべきだよ。
0372774ワット発電中さん
垢版 |
2018/05/27(日) 15:38:08.45ID:lWf86GMJ
>>369
書き方悪かったです。
止まらないと言うのは、精々5日くらいで途中で電源切ったりしてます。
どれもPICKIT3での書き込み後にPICがりスタートするとDS1307のpending は発生します。
0373774ワット発電中さん
垢版 |
2018/05/27(日) 16:10:03.54ID:LsSqWT5D
>リセットで復帰しないならPIC側の可能性はほぼ無い

I2Cバスの操作の仕方でスレーブがおかしくなってしまって、PIC側のリセットでは復帰しなくなるケースもありえますし。
0374774ワット発電中さん
垢版 |
2018/05/27(日) 16:23:09.35ID:LsSqWT5D
>>372
>どれもPICKIT3での書き込み後にPICがりスタートするとDS1307のpending は発生します。

>>359
>それがとっても気になっており、先ほどMCCのファイルを全部消して、Generateしたところi2c1.cは改造なしで動作しました。
>しかし、PICKit3で書き込み終了後の再起動でDS1307のPendingは発生して、電源再投入でした。

この「〜改造なしで動作しました。 しかし、PICKit3で書き込み終了後の再起動で」のくだりが気になります。
次のような認識で良いでしょうか?

・PICKIT3を繋がない状態であれば2〜3日でPendingになるもの、ならないものがある。

・PICKIT3で書き込み後に(PICKIT3がつながったまま)リスタートすると、すぐにPendingになる。このときリセットボタンを押しても効果がない。
0375774ワット発電中さん
垢版 |
2018/05/27(日) 17:38:18.41ID:MgISJwnq
>>374
お付き合いいただき、ありがとうございます。

>PICKIT3を繋がない状態であれば2〜3日でPendingになるもの、ならないものがある。
はい、PICKKIT3で書き込み後にPICKIT3を外して、電源入れて、Pendingになるものとならないもの(5日程度しか試していませんが)があります。

>PICKIT3で書き込み後に(PICKIT3がつながったまま)リスタートすると、すぐにPendingになる。このときリセットボタンを押しても効果がない。
はい、書き込み後にPICKIT3が刺さった状態でPICは自動的にリスタートしますが、必ずDS1307の読み込みでPendingになり、基板上のリセットスイッチを押してもPendingとなります。Teratermにprintfで表示されます。
15秒のWDTを設定しているので15秒間隔で画面にPending Errorの表示がたまります。
0376774ワット発電中さん
垢版 |
2018/05/27(日) 17:44:11.22ID:MgISJwnq
>>373
PICKIT3の書き込み中にI2C信号が乱れてDS1307が応答不可能になるのでしょうか?
その場合、I2Cマスターで回復させることは可能でしょうか?
動作中のPendingエラーと書き込み後の必ず発生するPendingエラーは同じと思い、これに対応できれば動作中のPendingエラーも大丈夫と思っています。
0377774ワット発電中さん
垢版 |
2018/05/27(日) 17:52:43.06ID:LsSqWT5D
PICKIT3での書き込み中にI2Cバスに使っているピンがばたばたと不用意にLになることが
あるかなあ、ってことですね。

書き込み中は当該ピンがHiZに維持されていて、プルアップされているなら、そうはならない
と思うのですが。(秋月のDS1307モジュールってことなので、そこでプルアップされているかな)

できれば回路図を見てみたい。
0378774ワット発電中さん
垢版 |
2018/05/27(日) 18:00:32.18ID:LsSqWT5D
>その場合、I2Cマスターで回復させることは可能でしょうか?
I2Cにバスリセットのルールはなかったと認識してます。
0379774ワット発電中さん
垢版 |
2018/05/27(日) 18:07:39.03ID:LsSqWT5D
PICKIT3から3.3VとかのVDDを供給する設定になってるってことはないですよね…
0380774ワット発電中さん
垢版 |
2018/05/27(日) 18:09:35.07ID:LsSqWT5D
逆に、書き込み中のVPPがダイオードか抵抗を通じてVDDを押し上げてしまっているとか。
0381774ワット発電中さん
垢版 |
2018/05/27(日) 18:19:11.26ID:LsSqWT5D
>>380はないですね。秋月のPIC18F46K22搭載基板ってことですし。
0382774ワット発電中さん
垢版 |
2018/05/27(日) 18:28:11.12ID:MgISJwnq
>>377
秋月のDS1307モジュール内でプルアップされてます。
最初知らなくて外部でプルアップしてましたが、今は外しています。
0384774ワット発電中さん
垢版 |
2018/05/27(日) 21:57:35.95ID:f1NziepZ
>>365
いや、電源電圧じゃなくて
I2Cのクロックとデータ
PICとデバイスどちらかがLOWに引っ張ったままじゃないかテスターで測れって言ってるの
テスターがなければLEDでもPICの別ポートでもなんでもいいから
0385774ワット発電中さん
垢版 |
2018/05/27(日) 22:02:31.67ID:f1NziepZ
>>367
割り込みがかかるとなんでプロトコルエラーに?
意味不明

ムキにはなってない
口は悪いかも知れないが
■ このスレッドは過去ログ倉庫に格納されています