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
0002774ワット発電中さん垢版2018/05/01(火) 23:13:13.23ID:0sFgLi/H
)((())()))((())))(()()()))())))(()))((((((())(((((())))(()(()(()())())))((()
)))()()))((()(()(())())(()))()((())())(())))))()(()))())(()))(()((((((((()((
)((((()()))(())()((()(()(((()(()))())()))(()((()))))(()))((((()))))))()))(((
)()))(((()())))())()(((()))((()))(((((((()(())()()())(()())))(()(()))()))()(
)())((((()(())())((()(())())))(()()))()(()))())((()((()()))(((())(())))()(()
()()((((())())())()))(()((()()))))()(()()()())((((())())()(()()(())()())()()
)()(()((())()()(((((()))(()))))(()(()))())))()()((())()(()))()()()()((()))((
)()(()(()))()))(((()))()()()())))((())())())))))))(()))(((()()(()((()(((((((
)((()()))(()))))())()())(()()((()))())()))(()()))(((()((())())((()((((())()(
(())))()()))(()()(()))(())())))())))()())(((()()()((()()((()(())()()))((((((
())))())))(()((((()(()()()()()()(()()(())))(()))))((((()))((((()())))()())((
()))())(())))(((()(((((()()))())()((())(()(((()()(())(((())()()))((())))))))
)()()()(()()(())((((((((())((((()))()(())())))(((()))))))())()(()()(()()))))
())()(())))(())()()(((()()))))()()()((()))(())()(())())(())))))((((()((()(((
)()))()())(()(()))()(())())()(()((()))()())()(()))((()((()))()())()((())((((
(())(()())))))((())()((((()))))())(()(()()()(()))((()))((()()()((()()))()(()
))((((((((())))(((()))(())))))))()))()(())))(((()((()())()(()()((())((())))(
)))()))))())()((())(()(()())((()((((())))))())))())(()))((((())()())((((((((
())())(()())())))))()()(()(()())(()))))(()()))((())()((((()((((()(((()))(())
())()()(()())()())(((()))))(((())))(((()))())(()))(())((())(((((())()(()))()
)()()(())()((()))(((((()))))))()((()))))()()((()))((((()())()()()()()))((()(
())()(())(())()))((()((()((((((())(()()))()())(())))((()((())((()())))))()))
)())()(((()))())(()()()))((())((())(())))(())((((((()())()()())((()(()()))))
()((()()()())())(((()()())()((()))()((())()(()(())())))()))()()))()(()()((()
((((((((()(()()()()())))(()())))(())()()()()())()()))())()))()(()(((()(())))
))((()(()))()((()(()())()())())))())(()()())())()(((()))()())((()()())()((((
(())())(()()(())())((((()))(()()))()())()())))()(()())(()(()(((()()))(())()(
()()()())))(())((((()(())(()(())(()(()()((()())((()()()))(()((())))())))))()
(()()()((()))(()())()(()))))((()()()()()))()(((())())()(()())(((((())(()))))
()()((()(((((()(()(()()(((()))()(()())))())((()))()(((()()))))()))(()))())))
()))))((()())((())))(((())()))((()))))))()(()(())))(((()()(()((()(()())()(((
())()()(())))()(()))()))()()))(()))(())((()()())))))((()())((((()(((())(((((
))((()(()()))()(((()))))())))()(()())))((()()(()))(((()(()()()(((())((())))(
(()))(()())((((()))(())(((())))))(()(())))()))))(()(())(()(()())()(()(()()((
())()())(()()()((()))((()(())()())((()()()))())((((()(()()))()(()(((()))))))
)))()(()(()()()))()()())(((()))(()(())))()())))()((()(((((()()()((()(()())))
))(()()(((()))())()(())()(()())))(((()))()())((((()()(()()))()(((()))()))()(
()())(((()(()((()(())))()))()()))))()(()()())()))))())()(((()()())((()()((((
(()())(()))())))()()(()()(()())((()(()()((()()))((()((((()))(()(())))()())))
(((()())))()(())(((())))(((()(()))(())(()())(((()))))()()((())()))())(())()(
(())(())()(()())())))(())(())()(()(())()(()(()(((((()))))(()()())()(()))()()
()()))()())(()()(())((())(())()))())))())(()((()())))(()()()(()(((((()(()))(
)))()(()))))))()((()(()()))((())))(((((()()())()(())(((()()(()(((()))))())((
)()()))((()()(()))())))())()((())))()(()()())))(((())(())((((()))(())((()(((
))(((()()(((((()())()()((((())()())))())((()((()())((()))))(()))))))(((())))
)((())))((())(()()((((()(())(()()))(((()(())))))))(((())))(((())((()(())))))
()((())))()(())((())()()()))(()((()(()()()()()))())((()(()))(()(()))()))(()(
()((())(()()())((())(()(()())))(())())(((())())(()))))()(())))()()())()(((((
(()))))(()()))()(((())(()((((()))))))))))))())((()(()(())(()((()(((()))(()((
)()()))((((()(())())((())))()()(())())(()())()(())()))(((()()()(())(()))(()(
0003774ワット発電中さん垢版2018/05/01(火) 23:25:31.88ID:41gUdDfI
PIC32MM
8ビット16ビット置き換えをねらったコンパクトなコア
安い、省電力
microAptiv 25MHz

PIC32MX
設計が古くてエラッタも多い、これだけはお勧め出来ない、後継待ち
M4K 120MHz

PIC32MK
ミドルクラス32ビットPIC、なぜかI2Cが無い
microAptiv 120MHz

PIC32MZ EF
PICコア最強、DSP命令や倍精度浮動小数点命令搭載
M-Class 252MHz

PIC32MZ DA
グラフィック、32MB RAM
microAptiv 200MHz
0004774ワット発電中さん垢版2018/05/01(火) 23:43:56.23ID:41gUdDfI
PIC10/12/16/18
8bit
ほぼ全ての製品にDIP版がある
コアの性能は他の8bitと比べても極端に低いので
ちょっとでも重い処理をするならPIC以外を選ぼう
4クロックで1命令サイクルなので、
クロックを1/4にしたのが処理性能の目安
コアやペリフェラルは非常に単純なので
自力で全てやってみたい初心者には良い
ただし命令は特殊なのでアセンブラの学習には向かない

PIC24 / dsPIC
16bit
Microchipは32bitに力を入れていてラインナップはいまいち
処理性能は8bit PICよりはずっと上だが
他社の16bitよりは劣る
エラッタも多い
コスパが非常に悪く、
特殊用途以外では今新規で選ぶ価値は無い
0005774ワット発電中さん垢版2018/05/02(水) 01:20:40.75ID:qrQAGo28
PICは他メーカーの同規模のMCUに比べて非常にエラッタ(バグ)が多いので注意
機能が使い物にならないものやスペックの性能が出ないものも多く存在する
メーカーが把握しつつも公開されてないなかったりする
0006774ワット発電中さん垢版2018/05/02(水) 01:28:19.06ID:qrQAGo28
本当にPICが適切か良く考えてから選びましょう

主な競合MCU
8bit AVR / STM8
16bit RL78 / MSP430
32bit STM32 / LPC / Kinetis / RX
0007774ワット発電中さん垢版2018/05/02(水) 01:38:33.19ID:qrQAGo28
開発ツール
PICへよソフトの書き込みやデバッガでのデバッグには以下が必要です

PICkit4 :
安価なデバッガ / ライター
8bitならこれで十分

ICD4 :
高速高性能デバッガ / ライター
16bit / 32bit PICのソフト開発にはこちらがオススメ
0009774ワット発電中さん垢版2018/05/02(水) 06:56:09.02ID:dB8VyvTc
ファン気質を排除して客観性をキープしたいのだと思う。

ファンと、ファン気質を排除した中立的議論をしようとすると、ニュートラルはアンチ的発言が増えざるを得なくて、
結果的にアンチとみなされることはある。
でも、CPUは純粋な論理的判断の元で選ばれるわけでもないのでニュートラルであることが正しいとは限らない。

一方で、全く白紙のビギナーも対象のこのスレなら、入門前に悪い面も知っておくことも必要かもね。
0010774ワット発電中さん垢版2018/05/02(水) 07:04:41.43ID:A+mHvvGS
そうか? 正当に公平に客観的に評価しているな、と俺は少し感心したが。
PIC信者は「アバタも笑くぼ」「贔屓の引き倒し」みたいな、>>8 のようなアホばかりだと思っていた。
0012774ワット発電中さん垢版2018/05/02(水) 07:11:42.22ID:dB8VyvTc
>>10
たとえば>>5の「他社製品との比較」の話は繰り返し書かれてますが、
客観性を示すだけの何かが提示されたことはありません。
0013774ワット発電中さん垢版2018/05/02(水) 07:17:16.31ID:CimuBWi4
仕事で実験なんかのお試しはPIC搭載のユニバーサル基板を好んで使うよ。
秋月で安くて入手容易。
最終版はRXになるけど、色んなデバイスを使うとアイデアも豊かになるよ。
0015774ワット発電中さん垢版2018/05/02(水) 07:34:06.15ID:dB8VyvTc
>>13
違うものを使うことで、「〜とはこういうものだ」という概念が固まってしまうことを避けられて良い、
と、俺も思う。
0016774ワット発電中さん垢版2018/05/02(水) 13:23:04.45ID:A+mHvvGS
>>13
私も色々なCPUを使う事には賛成だな。
「広く浅く」にならないように気を付ける必要があるけど。
私自身は今はあまりPICを使わないけど、昔使ったPIC専用のラッピング配線ユニバーサル基板を
再利用できるように残してある。

ところで、私は始めてのCPUには、まず最初にUARTを使用するモニタプログラム(デバッガ)を
アセンブラで作ってみる。
1週間ほど掛かってしまうが、そのCPUの割込みやレジスタ、メモリ構成、命令などの
アーキテクチャをよ〜く理解できる。
0021774ワット発電中さん垢版2018/05/02(水) 15:36:49.72ID:p24f6GoE
CPUだけじゃなくてビルド環境にも依存する

セクションの指定方法とか
スタートアップコードとか
割り込みベクタの作り方とか
割り込みハンドラの作り方とか
0022774ワット発電中さん垢版2018/05/02(水) 15:51:54.97ID:A+mHvvGS
>>17
そだねー、プロにとって時は金なりだからね。
でも、開発環境のデバッガがブラックボックスではなくなる、
(デバッガの訳の分らない不思議な動作や、手の出せないデバッガのバグが無くなる)
というメリットを考えると、プロでも検討してみる価値があるのでは、とも思います。

>>18
6、7種類かな。一番古いのは16ビットコード、16ビットデータの某社のXXXXXXで
一番新しいのはAVRで、AVR用デバッガは現在も成長中。

これからビデオに撮り貯めた世界卓球女子の美誠パンチを見るから、
これで。
0024774ワット発電中さん垢版2018/05/02(水) 16:15:02.13ID:YJruau7J
>>22
プロには、なるべく責任を他人に分担させる(押し付けるとも言う)と言う考え方と、
なるべく自分で取れる責任範囲を広くすることで利益や責任をとりやすくすると言う考え方の二種類がある。

一方しか出来ない人は、生き残れないかもしれない。
0025774ワット発電中さん垢版2018/05/02(水) 17:01:34.65ID:0dUQ3SY5
付加価値作ってなんぼだからな
他にできないことができるということが強みになる
お鉢が回ってくるのも大変だけどなw
0026774ワット発電中さん垢版2018/05/02(水) 18:44:13.61ID:dB8VyvTc
>>17
仕事は仕事、遊びは遊びの時間にするんですよ。

その遊びが仕事にも役に立つことが多かったりして。
0027774ワット発電中さん垢版2018/05/02(水) 23:29:46.81ID:qrQAGo28
>>22
製品の開発はブラックボックスばかりだよ

コンパイラが吐くコードを検証したり
ライブラリの動作を全て検証したり
ネジを開発したり
金型を自分で削ったり
電子パーツを自分で作ったり
こんなことをしてたら製品なんて出来ない

だから信頼関係は重要

どこかみたいにエラッタを隠蔽するような会社の部品は仕事では絶対に使いたくない
0028774ワット発電中さん垢版2018/05/03(木) 03:00:47.03ID:3zq/2ceR
>>27
隠蔽する会社というのは、どこですか?
0029774ワット発電中さん垢版2018/05/03(木) 06:47:41.94ID:zEtko/35
>>28
エラッタを一切公開していない会社ってことなんだろうけれど、そんなところってあるのかな。
0030774ワット発電中さん垢版2018/05/03(木) 07:07:09.45ID:zEtko/35
でも、>>27のような極論って不毛だよな。

製品作りの過程で、
・コンパイラが吐くコードを検証することもあるし
・ライブラリの動作を全てでないにせよ検証することもあるし
・ネジや金物部品を開発することはわりとあるし
・プログラマブルな部品なんて昔の人から見ればICを自分で作るようなものだし。

俺の経験の範囲では「金型を自分で削った」製品はないな。
でも「最終製品を作っている人はすべて金型を自分で削ることはない」ってことは
ないだろう。


一方で、企画に特化した会社の人なら、
「俺の会社だと、自分でコーディングなんてしていたら製品なんてできないよなあ。
回路図? ハンダ付け? それは工場がすることでしょ?」
なんて常識に浸かってるだろうし。

自分の経験や知ってる範囲の情報で「なんたらはこういうものだ」なんて断定するのは
恥ずべき行為。
0032774ワット発電中さん垢版2018/05/03(木) 07:22:05.05ID:YqqfGW8W
>>27
スポットで一個二個買うだけの奴に信頼関係なんか築きようがない。
0033774ワット発電中さん垢版2018/05/03(木) 08:13:03.47ID:9S5y2vyS
picのエラッタは公開してるだろ。
治す努力はわからんけど。
治してもリビジョンチェックして、回避コードと分けるのも面倒なんで、常に回避コードかな。
0034774ワット発電中さん垢版2018/05/03(木) 08:13:19.76ID:zEtko/35
>>31
たしかに「極論」は言葉として不適切だったかもしれない。
二つの極を想定してその端っこの印象を与える場合がある。でも極論には「極端な論」の意味もある。

コーヒーにどれだけ砂糖を入れるのが旨いか、という話において、
全く入れない、山ほど入れる、前者の意味での極論。
だけど、
「コーヒー自体の濃さ、量に関わらず、2.4グラムの砂糖。これが普通であり、これ以外は旨いと感じるべきではない」
なんて話が出てくれば、これは後者の意味での極論。


開発請負もやるけど、最終製品を出してるわりと大きい会社の人が技術のことには無関心なこともある。
その分、彼らはユーザーのことを回路やプログラムを弄ってる俺たちよりもよく知っているし、
もっと喜ばれるものを考えることに意識を集めている。彼らはコーディングもしないし、もちろんはんだ付けもしない。
彼らにとって製品の開発とはそういうことだし、それは、俺が基板の製造や部品の実装を外部にお願いしていることと、
たいした変わりはない。
そうかと思うと、同じ会社の別の部門で、全然やり方が違うこともある。
…なんてことを経験している人は少なくなかろうと思う。

さまざまなレベルで「〜をやっていたら製品なんて出来ない」の普通があって、>>27の言ってることはそのレベルの
ごく一部にすぎない。2.4グラムの砂糖みたいなもの。
0035774ワット発電中さん垢版2018/05/03(木) 08:20:07.04ID:zEtko/35
>>32
>スポットで一個二個買うだけの奴に信頼関係なんか築きようがない。

メーカーとユーザーの信頼関係は、友人関係と違って対称ではないし。

クルマを買うとき、「トヨタ(あるいは他のメーカー)は信頼できそう」という漠然とした気持ちとか、
メーカーがユーザーにそのように思ってもらえるようにするために行動することも、ひとつの形。
0036774ワット発電中さん垢版2018/05/03(木) 08:22:36.49ID:A/CaZZ4F
>>33
公開してないのがたくさんあるわけだが

隠蔽じゃないとすれば
管理ができてない
製品評価が出来てない
ってこと
0037774ワット発電中さん垢版2018/05/03(木) 08:29:46.92ID:Z/0QBzd5
>>31
日本のスマホ開発とアップルのiphone開発は
両極端(ブラックボックス組合せと、全開発)の近くにいる。

アップル相手で無くても、
低価格のチップをモーレツな勢いで設計し、
多様な製品を作り出すどっかの国と競争できる気がしない。
0040774ワット発電中さん垢版2018/05/03(木) 09:11:26.04ID:zEtko/35
>>36
>公開してないのがたくさんあるわけだが

そのことに問題があるのだとして、他のメーカーのものを選択する、という話だと思うが、
他のメーカーと比較の上で話をしてくれないと意味がない。

↑ID:A/CaZZ4F でも、この2行なら理解できますか?
0042774ワット発電中さん垢版2018/05/03(木) 15:16:39.03ID:GSfuJmNy
ブラックボックスは少ない方がいいに決っている。
そういえば、昔、韓国がアメリカから購入したジェット戦闘機の飛行管制装置か
火器管制装置だったかのブラックボックスを無理に開けたはいいが閉められなくなって、
アメリカからメチャ怒られた、という事件があったナ。
日本はブラックボックスに出入りするデータを調べて、中身を解明したそうな。

エラッタの多いCPUと少ないCPUのどちらを選ぶか?
選択権が自分にある時に、エラッタの多いCPUを選ぶ人はM傾向がある、
というのが私の持論だけど、
もしかしたら、あえて試練、苦難の道を選ぶ、という崇高な人なのかもしれないな、
なんて思ったりしちゃったりしてw

冗談はともかく、連休も半ばを過ぎました、
英気を養って、趣味、仕事のどちらさんも
プログラミングや回路設計を楽しみましょう。
0043774ワット発電中さん垢版2018/05/03(木) 16:13:17.09ID:zEtko/35
チップの「エラッタ」には少なくとも次の二つの意味がある
(1)実際のチップのバグ、問題
(2)そのことを記した情報

>>42が言ってる
「エラッタの多いCPUと少ないCPU」はどちらを指してのことだろね。
いずれにしても、多い少ないは、相対的な量を指す言葉であるから何かと比較する必要がある。

多いか少ないかは別にして、(2)を抜きにした非公開情報も含めた(1)については、使ってみないとわからない。
ところが、簡単に顕在化するものとは限らないから、使ってみて大丈夫だから問題なし、とは言い切れない。
そういう意味ではネットに書き込むような開発者が多いチップほど情報が共有できそう。

崇高かどうかは別にして、ユーザーが少なく、メーカーから(2)のエラッタ情報が少ないものは、伏魔殿の
可能性もある。それゆえに、新しいチップについてはメーカーも開発者を増やすことに熱心になるね。
0044774ワット発電中さん垢版2018/05/03(木) 22:19:16.26ID:Q9Ydt+NA
エラッタが多くても、エラッタが正式発表されてなくても、ユーザーが多くて情報が沢山出回って、不具合で困る事が無ければいいのだ。

医療用や自動車や航空機じゃなければ。
0046774ワット発電中さん垢版2018/05/03(木) 22:47:56.80ID:9y5xRSNh
なんにせよ初めてスレで何スレも使って延々とする話じゃないんだわ
PIC専用スレに行ってくれ。エラッタ君があの世に行くでもいいけど。
0047774ワット発電中さん垢版2018/05/04(金) 00:44:32.59ID:4b0W6nUL
PIC32MX340Fを使用してUARTの割り込みをしたいのですが、
反応しません
なにか設定ミスでしょうか?
因みにputsUART1などで文字列送信は、ちゃんとPCで受信できておりますので
ボーレートなどは間違っていないみたいです

void __ISR(32, ipl4) U1RX_interrupt(void) {
LED=1;//LED割り込み時、LED点灯
IFS0bits.U1RXIF = 0; //mU1RXClearIntFlag()
}
//UARTの設定

void Uart_ini(void)
{

// Create a UART TX/RX Pin
SYSKEY = 0xAA996655; // Write Key1 to SYSKEY
SYSKEY = 0x556699AA; // Write Key2 to SYSKEY

//IO Port Initial--------------------
//-----------------------------------
TRISF = 0x0004; // U1TX:RF3 U1RX:RF2 LED:RF0

//UART1 Initial ----------------------
//-----------------------------------
//Mode Setting
U1MODE = 0x00000000; //Clear
U1MODEbits.UARTEN = 1; //15_UART_Enable
U1MODEbits.RTSMD = 1; //11_FlowMode
U1MODEbits.BRGH = 0; //3_StandardSpeed*16
U1MODEbits.PDSEL = 0b00; //8Bit None Parity
U1MODEbits.STSEL = 0; //Stop Bit = 1
U1MODEbits.ON = 1;
U1BRG = (unsigned int)(5000000/Baud)-1; //Baud Rate 9,600bps

//Enable Setting
U1STA = 0x00000000; // ALL STA Clear
U1STAbits.UTXEN = 1; //TX_enable
U1STAbits.URXEN = 1; //RX_enable
U1STAbits.URXISEL = 0B00; //1ByteReceive_Interrupt

//Interrupt Setting
IEC0bits.U1RXIE = 1; //U1RX_Interrupt_Enable
IPC6bits.U1IP = 0B110; //Set priority Priority_2
IPC6bits.U1IS = 0B00; //Set sub priority

INTCONbits.MVEC = 1; //Multi Vector Mode

/* Enable interrupts. */
asm volatile("ei");

}
0048774ワット発電中さん垢版2018/05/04(金) 07:28:47.12ID:cnrSZwi7
>>45
要約すると「犠牲を払って未知の情報を手に入れた」だよね。
実際、昔は飛行機の開発段階で多くのテストパイロットが犠牲になっている。
でも、この事とPICエラッタとの関係性が分らないな。
「PICの性能向上のために、エラッタの犠牲になるユーザーが発生するのは仕方が無い」とか?
ま、どうでもいいんだけどさ。返事は要らない。

>>46
初心者にはエラッタは大事な話だと思うナ。
つまづいてPICがイヤになるかもしれないんだよ。
0050774ワット発電中さん垢版2018/05/04(金) 08:59:40.83ID:kMHAHRjY
>>47
なんか色々と順番がめちゃくちゃ
割り込み優先順位もバラバラ

それが原因かどうかは知らんけど
0051774ワット発電中さん垢版2018/05/04(金) 11:55:08.67ID:y+3EA50K
pic18なんですが、floatを24bitから32bitに切り替えてビルドするにはでこでしていするのでしょうか?
また、printfで%fも32bitのライブラリがあってリンクされるのでしょうか?
0052774ワット発電中さん垢版2018/05/04(金) 12:36:46.74ID:+d65Nnar
皆さんこんにちは。お世話になっております。前スレ746です。
https://rio2016.5ch.net/test/read.cgi/denki/1518524799/746

前スレ976さんにいただいたアドバイスに従い勉強してみたところ、
https://rio2016.5ch.net/test/read.cgi/denki/1518524799/976
UART通信+TeraTermを使ったデバッグが私にも出来るようになりました!

それで、USB通信の試験をしていた秋月18F2550マイコンボードにFT232RLUSBシリアル変換モジュールを組み足して、
UART通信の出力させてみたところ、……文字化けしてしまいました
気を取り直して、秋月18F2550マイコンボード+FT232RLだけの最小構成で組み直して、
クロック周波数48MHz SPBRG 311 と設定した場合、文字化け
々 20MHz 々 129 と設定した場合、UART通信成功 しました

TXSTAbits.BRGH:1 高速の場合
SPBRG = クロック周波数 ÷ 16 ÷ 通信速度(9600bps) - 1 で求められるはずなんですけど、
48MHzで計算して出た311の値を入れても上手く行かないみたいでお手上げです
宜しければまたご助言いただけないでしょうか?

クロック設定 48MHz、SPBRG 311 = 結果:UART通信 文字化け
#pragma config PLLDIV = 5 // PLL Prescaler Selection bits (Divide by 5 (20 MHz oscillator input))
#pragma config CPUDIV = OSC1_PLL2 // System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 2 // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1)(USB clock source comes from the 96 MHz PLL divided by 2)
#pragma config FOSC = HSPLL_HS // Oscillator Selection bits (HS oscillator, PLL enabled (HSPLL))
SPBRG = 311;

クロック設定 外付け振動子 20MHz、 SPBRG 129 = 結果:UART通信成功
#pragma config FOSC = HS
SPBRG = 129;
0053774ワット発電中さん垢版2018/05/04(金) 13:16:04.04ID:H6tz5RqD
>>52
俺詳しくないからあてずっぽだけど、
spbrgって何ビットレジスタなんだ?
256以上の値入れても良いのか?
0054774ワット発電中さん垢版2018/05/04(金) 13:20:28.37ID:ssBmV+GP
>>52
SPBRG設定値が255を超えてるから、BRG16を1にしないとダメだよ
設定してるっけど書き洩らしてるだけだったらごめんよ
0060774ワット発電中さん垢版2018/05/04(金) 23:18:08.15ID:+d65Nnar
>>52です。質問してすぐに的確で素晴らしいご回答をいただいていたのに
すぐにお返事できなくてすみませんでした!

>>53さん
ありがとうございます!
ご指摘のように、SPBRG は 8bitレジスタでした!
恥ずかしながら、8ビット長の値までしか入らないなんて、
全然頭にありませんでした!

>>54さん
正解まで導く的確なアドバイスをありがとうございます!
おかげさまでBAUDCONbits.BRG16 の存在と意味を初めて知りました!
ご助言に従い計算してみたところ、
BRGH:1高速、BRG16:1の場合、
通信クロック制御値 = クロック周波数 ÷ 4 ÷ 通信速度(9600) -1 = 1249
1249 = 0b100 1110 0001
SPBRGH = 0b100;
SPBR = 0b11100001; となり、
その値でプログラミングしてみたところ、TeraTermとのUART通信に成功しました!
感激です!!

>>59さん
ご助言ありがとうございます!
BRG16がわからないなら、BRGHを低速にしちゃえばいいじゃない
逆転の発想が素晴らしいです
その設定でも試したところ、通信が上手く行きました!
おかげさまでとても勉強になりました
0061774ワット発電中さん垢版2018/05/05(土) 05:30:28.09ID:E1k/gbgI
>>59
低速モードの方が、1クロック当たりのサンプリング回数が16回になるから、エラーに強いしな。
0062774ワット発電中さん垢版2018/05/05(土) 08:22:47.15ID:YTLk3Fqg
どんなエラーに強くなるんだろう。

俺の想像 → ビットレートの誤差(エラー)ぐらいかな? それ以外に特別なことをしてるのだっけ。
006447垢版2018/05/05(土) 12:47:09.99ID:YwuRBCsY
うーん割り込みが発生しない PIC32MX220Fでは動作したのですが・・


レジスタ設定が悪いのでしょうか?
IOポート設定の後に、シリアル割り込み↓を設定

//Interrupt Setting
IEC0bits.U1RXIE = 1; //U1RX_Interrupt_Enable
IPC6bits.U1IP = 0B110; //Set priority Priority_2
IPC6bits.U1IS = 0B00; //Set sub priority
INTCONbits.MVEC = 1; //Multi Vector Mode
----
↓割り込み関数は下記
void __ISR(_UART_1_VECTOR, ipl2)U1RXHndeler(void)
{
//Receive Command Buffer Input
cRevBuf[iRevCnt] = getcUART1();

LED=1;
IFS0bits.U1RXIF = 0; //mU1RXClearIntFlag()
}
0065774ワット発電中さん垢版2018/05/05(土) 13:23:54.94ID:YwuRBCsY
すみません自己解決しました。
■修正箇所
・RTSMDを0にすべきでした
U1MODEbits.RTSMD = 0; //11_FlowMode
・優先2になってませんでした。
IPC6bits.U1IP = 0B010; //Set priority Priority_2
0066774ワット発電中さん垢版2018/05/05(土) 13:32:19.14ID:2mpciG2/
>>62
波形歪みに対して少し強くなるということくらい。
この場合の波形歪みとはデューティー50%で送信したのが受信側では40%で受かる
とか60%で受かるという意味。
調歩同期ではビットの中心をサンプリングするのが基本だけど、サンプリング
クロックが低いとセンターからのバラツキが大きくなる分波形歪みに弱くなる。

しかしサンプリングクロックを低く選択すると分周カウンタの値を大きくできる
のでボーレートのエラーを少なくできるという利点がある。
ボーレートを高くする場合はサンプリングクロックが低くなる組み合わせを選択
した方が総合的に有利になる場合が多い。
0068774ワット発電中さん垢版2018/05/05(土) 18:12:11.73ID:E5Y8/bCB
調歩同期サンプリングって3か所とって多数決判定じゃなかった?
ソフトUARTは知らんけど
0070774ワット発電中さん垢版2018/05/06(日) 10:49:14.58ID:f/0DWkwG
>>68
PICのUARTって、単にbitの真ん中で刻むんじゃなかった?
16回取って多数決はやってないかと。
ボーレート設定値は、単に源振からの分周値。
0071774ワット発電中さん垢版2018/05/06(日) 11:31:29.13ID:or4YTKoV
だいたい元の質問で9600ってんのにどんな過酷な線路想定してんのよw
0072774ワット発電中さん垢版2018/05/06(日) 13:31:04.94ID:eAiWGLV1
>>70
PIC24FとかPIC32のUARTリファレンスマニュアルには
3回サンプリングの多数決と書いてあるねぇ

8bitのはしらんけど
0077774ワット発電中さん垢版2018/05/06(日) 15:25:09.12ID:PkjwEilL
ルネサス当たりの石だとUART入力とかにいろいろ対策回路が入っているな
ノイズ対策etc
0078774ワット発電中さん垢版2018/05/06(日) 19:18:20.76ID:QGzzcRBQ
ピックのポートリードとポートライトについて質問さしてください
0079774ワット発電中さん垢版2018/05/06(日) 19:23:54.50ID:QGzzcRBQ
ポートAのうち、0,1,4,7を出力にして使いたいと思っています
使わされているのはXC8です
たとえば

PORTAbits.RA0 = 1;
PORTAbits.RA1 = 0;
PORTAbits.RA4 = 0;
PORTAbits.RA7 = 1;

このようにコードを書いた場合、RA0とRA7は同時に1にならず若干の時間差が
あると思うのですが、4つのポートを真に同時に変化さしたい場合はどうすれば
いいんでしょうか?

出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが、
PORTA = 0b10000001 ;

と書いてしまっても大丈夫なんでしょうか?
0080774ワット発電中さん垢版2018/05/06(日) 19:56:31.63ID:or4YTKoV
もちろん可能です。
0082774ワット発電中さん垢版2018/05/06(日) 21:27:54.89ID:17uVgLCS
>>79
> 出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが、
> PORTA = 0b10000001 ;
> と書いてしまっても大丈夫なんでしょうか?

日本語の解釈が判然としないが
出力に設定されているが、変化させることを許されていないと言う意味ならば、あなたの書いたコードは、まずい。
もう少し解釈が分かりやすい日本語を書いてもらえないかな?
0083774ワット発電中さん垢版2018/05/06(日) 21:49:09.48ID:9H+xP+gG
>>81
このコードが最適化で同時になったらさすがに怖いと思う。
>PORTAbits.RA0 = 1;
>PORTAbits.RA1 = 0;
>PORTAbits.RA4 = 0;
>PORTAbits.RA7 = 1;
0084774ワット発電中さん垢版2018/05/06(日) 22:01:34.52ID:9H+xP+gG
>>82
>ポートAのうち、0,1,4,7を出力にして使いたいと思っています
ということなので、それ以外のビットは出力ポートではないと解釈できないだろか。
0085774ワット発電中さん垢版2018/05/06(日) 22:07:36.92ID:XFdtnFLo
>>84
書き方が「使わされている」とか、他人の設定の下で作らされていると言う雰囲気なんだよね。
他のポートを出力にしないなら、何も気にする必要はないのだけど、そう読み取れないんだ。
0086774ワット発電中さん垢版2018/05/06(日) 22:13:22.83ID:VVV0PKMe
確かに他人のコードを邪魔しないように変更したいんだけどどうしたらいい的な雰囲気は取れるな。
一貫して使わされてる、変化さしたくない、大丈夫でしょうか、とか一歩引いてるよね。
まあここで聞いても結論というか、保証にはならんが。
0087774ワット発電中さん垢版2018/05/06(日) 22:16:26.97ID:52JcCsVp
なんか不安になる書き方よなw

怪しいから
1回PORTAを読んで
bit 0,1,4,7を変更してから
LATA出力した方がいいかな
って思ったもん
008879垢版2018/05/06(日) 22:19:33.21ID:QGzzcRBQ
79です。すみません

>>82
他のポートは入力に設定しています。トリス設定が

TRISA = 0b01101100;

とされているという意味でかきました
0089774ワット発電中さん垢版2018/05/06(日) 22:40:14.04ID:XFdtnFLo
>>88
だったら、
あなたの書いたコードでok

ところで、
>出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが
この文章は、何が変化することを心配して書いたの?
009079垢版2018/05/06(日) 22:52:27.84ID:QGzzcRBQ
トリスで入力に設定しているポートに対してラットで値を書き込んだ場合、
次にそのポートをポートで値を読み込んだら先ほどラットで書いた値に
変化するんじゃないかな?と思って心配してかきました

トリスで入力に設定しているポートについては、ラットで値を設定しても
完全に無視されると言う認識でよろしいでしょうか?
0091774ワット発電中さん垢版2018/05/06(日) 22:56:39.17ID:c41x0gbg
TRISをトリス設定って云うのはじめて聞いたな
まぁまんまだけどなんか深セン
0092774ワット発電中さん垢版2018/05/06(日) 23:06:31.45ID:XFdtnFLo
>>90
それは大丈夫。
入力はピンの値をそのまま読む。
だから困ることもある。
出力時に値を読み込むと、違う値が読めることがあるんじゃなかったかな。
特にキャパシタがぶら下打てたりすると。
009379垢版2018/05/06(日) 23:07:30.54ID:QGzzcRBQ
続けてポートリードのほうの質問をさしてください
以下のようなコードを書いてみしたのですが

a += PORTAbits.RA0;
b += PORTAbits.RA1;
c += PORTAbits.RA2;
d += PORTAbits.RA3;
x1 += PORTAbits.RA4;
x2 += PORTAbits.RA5;
x3 += PORTAbits.RA6;
x4 += PORTAbits.RA7;

これって
1・PORTAの値を読む
2・0ビット目の値を得る
3・変数aに加算する
4・PORTAの値を読む
5・1ビット目の値を得る
6・変数bに加算する



と言う感じで無駄にポートAの値をよんでるのでは?ないかというきがしています
最初に
data = PORTA;
としてまずポートAの値を読んだあとに
a += (data & 0b00000001 ? 0 : 1);
b += (data & 0b00000010 ? 0 : 1);
みたいな感じで処理したほうが効率的に処理させられるんでしょうか?
0095774ワット発電中さん垢版2018/05/07(月) 07:07:04.29ID:8TTwvipv
>>93
コンパイラの出力するコード次第だけど、
PICの場合、アセンブラレベルで見ると、
dataに移さずPORTAで直接処理しても、
実行速度は変わらないんじゃない。

だから、細かい効率を考えるなら、
if (PORTAbits.RA0) a++
が一番速そう。
個人的には、dataに移す方がプログラムのお行儀的に良いと思うし、
アセンブラで書かないなら、違いは分からないだろうな。

ところで、無駄にポートAの値を読むと、何が悪いと思ってるのかな?
♯お行儀はよくないのだけど。
0096774ワット発電中さん垢版2018/05/07(月) 07:20:34.36ID:GbP1qhUp
ま、慣れた人が同時に変化させたいなんて案件なら
ポートA全部出力にまとめる
入力は他のポートにする
だろうね。
0097774ワット発電中さん垢版2018/05/07(月) 12:04:34.15ID:JKxEdzHq
>>93
PORTAbitsは周辺制御に使う特殊レジスタですので
コンパイラの最適化を行わないような設定になっています
なので>>93のような処理になるはずです

以下のような項目に問題があるなら最適化の方法は色々とあります
同時性、処理速度、コードサイズ

これらの問題がないならそのまま気にしないのが良いでしょう
0098774ワット発電中さん垢版2018/05/07(月) 12:13:41.58ID:JKxEdzHq
>>79
PORTAの2356が出力設定になっていないのであれば問題ないですが
将来的にこれらを使う可能性を考えると
極限までコードサイズや実行速度を求めるのでなければ
2356の出力を保持するコードが良いとおもいます

>>81
>>97の理由でなりません
0099774ワット発電中さん垢版2018/05/07(月) 13:18:52.62ID:JKxEdzHq
>>79
LATAが存在するPICならLATAで制御するべきですね

----

PICのポート出力は3種類のチップが存在する

1. PORTAで制御
2. LATAで制御
3. LATA, LATCLR, LATSET, LATINVで制御 (32bitのみ)

3. だと以下のような万能なコードが作れるが
1. 2. だとそのようなコードは作れない

LATAINV = (LATA ^ val) & mask;
0100100垢版2018/05/07(月) 21:56:52.47ID:m5Kopfp1
100
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況