初めてのPIC 0x02

このエントリーをはてなブックマークに追加
188774ワット発電中さん:2014/07/19(土) 18:07:39.71 ID:CJWk2aIw
アナログが選択されているときはてっきり(用いないデジタル系の回路部側は)Hi−Zなのかと思ってたけど
プルアップとかプルダウンにも接続されているのですかねぇ・・・教えてえろいひと!!
189774ワット発電中さん:2014/07/19(土) 18:31:29.42 ID:1E3HXzDu
>>188
データシートの等価回路では2入力ANDゲートの片側をLOWにしてるだけだけど
190173:2014/07/19(土) 18:40:58.20 ID:6hJQTknq
>>187
おいら初心者なんだけどよお

74LSはC-MOSだお
191774ワット発電中さん:2014/07/19(土) 19:29:16.19 ID:BtHUSMnP
たしかに初心者のようだ
192774ワット発電中さん:2014/07/19(土) 19:39:32.53 ID:Wk99o3W+
>187
http://i.imgur.com/TzfyJmK.jpg
左のPINが入力端子、右のPORTxがPIC内部へ
クランプダイオードとNAND回路、反転してるのは許して

ピンがオープンでノイズが入っても

>・ゲート電圧が耐圧を越えちゃう
→クランプダイオードがあるのでゲート耐圧を超えることはない。

>・貫通電流が流れ続けちゃう
→アナログインプットモードだと M4は必ず[OFF] なので貫通電流は流れない
M2は必ず[ON]のためPINの状況に関わらずPORTxは必ず[H]

>・ラッチアップしちゃう
クランプダイオードがあるので、ある程度は防げる。
ただクランプダイオードはおまけ的な物だから過信はできないか
193774ワット発電中さん:2014/07/19(土) 20:05:41.67 ID:ZkY/sW8u
>>187
増幅器として中途半端な電圧を一生懸命出力に送り出してるから電力のムダ
運がよければホワイトノイズ発生器が完成
194774ワット発電中さん:2014/07/19(土) 20:58:46.78 ID:Lay+ydDp
>>192
別件ですけど、その回路図、綺麗に書けていますね。LTスパイスでしょうか。

それで、MOS FETの図記号で質問があります。
>>192の回路図のMOS-FETのゲートは、棒の端っこから出ています。ソース側でしょうか。
しかし、真ん中からゲートが出ている図記号もあります。
MOSに限らず、ジャンクション型でもです。
この「ゲートをつなぐ位置」は、書き方に決まりがあるのでしょうか?
・真ん中と端っこでは意味が違う。
・いや、どっちでも同じ。
・メーカーが決めたらその位置に書くのが正しい。

あと、DとSのつながる縦棒が、1本のものと、点線のように3本に分かれた物も
あります。どちらが正解なのでしょうか?

面倒なので、今は、真ん中ゲートの、1本棒で書いています。
195774ワット発電中さん:2014/07/20(日) 12:51:53.13 ID:objBpn+b
>DとSのつながる縦棒が、1本のものと、点線のように3本に分かれた物も
ネットで検索すると、
3つに分かれたものが、Enhacement で、1つのものが、Depletion みたい。
D-S間の縦棒が1つか3つかは、みんなぐちゃぐちゃで使ってるみたい。

ゲート側の縦棒が、D-Sの縦棒と離れているのがMOS
ゲート側の縦棒が無く、D-Sの縦棒1本なのが接合型、これは区別して使われているようです。

それより、サブストレートからの矢印の方向が間違っていたり、
SとDの電位的な使い方が間違っていることが多い。
トランジスタのように電極が直接矢印になっていないので、間違えやすいね。
196774ワット発電中さん:2014/07/20(日) 13:48:14.31 ID:JOLoh65K
ゲートの位置については、俺も知りたい。
197774ワット発電中さん:2014/07/20(日) 15:28:58.92 ID:UV8HuG1t
ゲートの位置は真ん中でもずらして描いてあっても同じ。
ずらして描く場合はソース側に描く。
198774ワット発電中さん:2014/07/20(日) 17:20:18.61 ID:JOLoh65K
なぜソースがわなのでしょうか?
199774ワット発電中さん:2014/07/22(火) 04:18:32.69 ID:M4sAOtW9
マイコン超初心者です。質問があります。

PICのプログラムで、タイマー割り込みを使いたいです。
そのタイマー周期ですが、ふつうは何msくらいで使うものなのでしょうか?
遅い周期は100ms毎でも、1sec毎でもわかるのですが、
速いほうは、何msくらいで使う物でしょうか?

PIC24F、クロック32MHzで、0.1msや0.5ms周期とか、1ms周期で使いたいです。
32MHzですので、16MHzで勘定すればよいでしょうか。
だとすると、1秒間に1600万回の処理が出来るので、
1msで割り込みがかかっても、1.6万ステップの処理が出来るので、
相当多い処理ができそうです。
200774ワット発電中さん:2014/07/22(火) 09:05:38.80 ID:TH3YP6I+
>>199
0.5ms位までなら問題ないが、そのステップ数の計算は間違ってると思う。
タイマー割り込みの中でたくさんステップ書かないで、フラグ立ててタスクに落とせ。
あと長い割り込み周期で使うほうが普通は面倒くさい。
201774ワット発電中さん:2014/07/22(火) 12:44:49.24 ID:laQii0v5
割込時の待避、復元には、何ステップかかるのか、検討して。
PICは、たくさんかかるよ。
赤外線送信のH,Lを割込に飛んで作ったら、スタック積んだり降ろしたりで
相当時間がかかったことがある。
202774ワット発電中さん:2014/07/22(火) 14:37:04.64 ID:vvOKKgRj
>>199
あなたの環境が分からないので仮にMPLAB Xだとすると、
実際にコードを書いてみてIDEのストップウォッチ機能で
処理に必要な時間をシミュレートしてみる方がはやいですよ。
そっちが見当つかないと何とも言いようがないような。
203774ワット発電中さん:2014/07/22(火) 14:56:36.45 ID:+eiaNYCI
>200
>>1msで割り込みがかかっても、1.6万ステップの処理が出来るので
>0.5ms位までなら問題ないが、そのステップ数の計算は間違ってると思う。
PIC24Fなら32MHZ動作で1命令62.5nsだから合っていると思うが
0.001秒 / (62.5x10^-9) = 16000

>201
16bitPIC前提のようだから、退避や復帰は気にしなくても良いかと思うよ。
PUSH.S , POS.S で一部レジスタ(W0-W3,SR)を裏レジスタと1サイクルで
交換できる。この命令だとスタックじゃ無いので多重割込は出来ないけど
最速で使いたい割込のみに使い、他は普通にスタックを使えばいい。
16bitPICは割込ベクタも各割込で分かれているから、いちいち割込元を
調べなくても良くなってる。

>199
メインルーチンで特にやることが無いのなら、その割込処理にかかる
最大時間+α(ちょっと余裕)の周期まではいけるかと
PCなんかのプログラムと違って、全リソースを使っていのだから割込中に
全部の処理をしようが、フラグ立てるだけにするのも自由だよ
204774ワット発電中さん:2014/07/22(火) 15:30:24.60 ID:FqRYrEnc
経験を積むと無意識に避けているとんでもないことをやってしまうのが初心者
deleayやらprintfやらシリアル送信やら
205774ワット発電中さん:2014/07/22(火) 17:19:29.73 ID:vdnaOMdt
>>204
シリアル送受信を割り込みで処理すれば問題無いだろ?
206774ワット発電中さん:2014/07/22(火) 17:26:21.34 ID:AvScSzy4
割り込み万能論
207774ワット発電中さん:2014/07/22(火) 18:08:00.15 ID:wXq+Wo2Z
コンピュータの開発歴史で割り込み処理を考え出した奴は偉いなぁ。
割り込み処理が無かったらと思うとゾッとする、というか想像すらできない。
208774ワット発電中さん:2014/07/22(火) 18:17:32.15 ID:S4mbAzGI
別のマイコンでCPU6個くらい積んでて割り込みを使わず分散処理させるのとかあったね
209774ワット発電中さん:2014/07/22(火) 19:53:20.91 ID:TH3YP6I+
>>205
先生!初心者がタイマ割り込み処理中にUSART割り込み処理をして、
さらに通常処理もして大丈夫ですか?

さすがasm厨は考え方が違うと思いました。
210asm厨:2014/07/22(火) 20:15:14.08 ID:eSvXohU3
割り込みルーチン内のクリティカルパスの計算とか初心者にはちょっと難しいよね・・・(^^;
211774ワット発電中さん:2014/07/22(火) 21:05:33.90 ID:L02LwgUs
タイマー割り込み中で、他の割り込みフラグをチェックして、
もしあれば処理すれば、問題ないと思います。
プライオリティや優先順位も、自分で決められますし。
212asm厨:2014/07/22(火) 21:18:42.98 ID:eSvXohU3
処理の切り分けを怠り、メインルーチン内に割り当てられるような処理までを
割り込み内で、ぐたぐた処理してると、次の割り込みまでに間に合わなくて精度悪くなりえる(問題がある)よ。
213774ワット発電中さん:2014/07/22(火) 22:41:55.75 ID:laQii0v5
タイマー割り込みの中で、全部処理すると、
FPGAの同期式に似てきて、考えやすくなる。
割り込みの先頭で、前回の計算結果を次々と変数に代入する。
そのあとはゆっくり、次の割り込みまでに、
次回セットすべきデータを準備しておけばよいから。
214774ワット発電中さん:2014/07/22(火) 23:26:42.94 ID:dqF82oTB
>>213
俺もタイマー割り込み内で全部処理するようなプログラムをよく作ってる。
内部8MHzで1ms割り込みなら2000サイクル使えるから、かなりのことができる。
メモリやI/Oアクセスの競合もないし。

同期式というよりステートマシンだね。
215774ワット発電中さん:2014/07/23(水) 01:42:36.87 ID:tHkyxS7T
同期式だと思うけどね。

以前、8bitのPICで、ときどき変な動作になることがあった。
よ〜く調べたら、mainで16bit変数の計算中に割り込みが入って、
その割り込み中で、その値が書き換えられていたのでした。
16bitのPICが羨ましかったのを覚えてる。
それ以来、全部割り込みの中で処理するようにしていた時期がある。
ただ、多重に割り込みが入ったときに、困ってしまう。

今は基本通りに、割り込みでは数値の++やbit_set()だけ。
216774ワット発電中さん:2014/07/23(水) 04:38:56.88 ID:03TEToAI
割り込みに飛んで、++やon/offをして帰るのなら、
mainで割り込みフラグを監視して、それが立ったらクリアして、++やon/off
してみるのはどうだろうか?
割り込みへの行き帰りの時間がなくなるような気がする。
217774ワット発電中さん:2014/07/23(水) 04:47:28.57 ID:XCdTtM1k
>>216
それ、なんてポーリング?
218774ワット発電中さん:2014/07/23(水) 04:57:13.67 ID:9nYk6JgQ
>>215
16bitのPICにおいでおいで、楽しいよっ
219774ワット発電中さん:2014/07/23(水) 06:13:35.24 ID:SKMPSird
割り込んだ側で割り込み禁止
全変数のPUSH&POP
って基本すらやってないのか
220774ワット発電中さん:2014/07/23(水) 07:24:10.28 ID:6PLnOKOE
>>216
それはポーリング処理であり、
ポーリング処理をやりたくないので割り込み処理にするわけで、
割り込み処理をやりたくないからポーリング処理にするというのは、
…えーと、先生、私、もう訳が分りません。

タスクディスパッチャを作ってマルチタスクにすると、
プログラムの構造がシンプルになると思う。
スタックがSRAMの16bitPICなら簡易マルチタスクやれるでしょ?
私はPICでは作った事無いけど。
221774ワット発電中さん:2014/07/23(水) 12:32:58.26 ID:yN5Wl/1x
むかしのミッドレンジのPICにゃ変数しまえるスタックはないから
プッシュ&ポップは使わないお。自分で用意した退避域に保存しておく、
しかもSTATUSを換えないようにSWAPを使って・・・みたいな
めんどくさい事をしなきゃいけない時代がありました。
最近のは自動退避してくれるみたいですけれども。
222774ワット発電中さん:2014/07/23(水) 14:35:57.69 ID:tHkyxS7T
初心者です。教えてください。

むかしのミッドレンジPICでは、なぜクロックの1/4で動作したり、
スタックが8段しかなかったり、メモリーが4つのバンクに割れていたりして
と、特殊なんでしょうか?
それらの「不便さ?」を持っても余るメリットが、あるのでしょうか?
・○○を実現しようとすると、当時はその方法しかなかった
・○○の思想を貫いて設計されていた
・他との差別化をしたかった
とかです。

宜しくお願いします。
223asm厨:2014/07/23(水) 14:50:19.32 ID:yN5Wl/1x
PIC使い出したの877頃から何で、それより昔のは知らないから憶測だけど
1バンクが全メモリ空間だった時代があるんじゃないかな。。。
1インストラクションが4クロック動作はべつに珍しい話じゃないでそ。
他者CPUだってそういうのあるでそ?

PICの特色はそこよりもむしろ、ハーバードアーキクチャだお。
224774ワット発電中さん:2014/07/23(水) 15:08:26.16 ID:yfJYD+Bv
メモリから読み出してメモリに書き戻せるアーキテクチャだから4クロックかかるのは普通
PICの中の人の気持ちになって考えてみい
遊んでいるように見えても予定ってもんがあるんだ
225asm厨:2014/07/23(水) 15:14:40.41 ID:yN5Wl/1x
あ、テが抜けてた! は、恥ずかしいっ(ビクンビクン

ついでに申せば、バンクは不便さばかりじゃないですお。
トリッキーな使い方もできますしお寿司
226774ワット発電中さん:2014/07/23(水) 15:30:07.73 ID:tHkyxS7T
>>223,224
ありがとうございます。
ハーバードアーキテクチャって、何か聞いた事があります。
その構造を採用したことで、クロックの1/4になってしまうんですね。
そうすると、ハーバードアーキテクチャの特徴を調べれば、いろんなことがわかりそうですね。
ありがとうございます。

>【PIC24/dsPIC】16bitマイコン 16/18F等の8bitマイコンとは全く別物な洗練されたアーキテクチャ
この「洗練されたアーキテクチャ」という言葉に惚れて24Fを勉強したいと思っています。
日立やアトメルでなくてマイクロチップのPICで、です。

最近のPICでは、ハーバードアーキテクチャをやめてしまったかな。
当時のこだわりは何処へ行ったのか・・・

ありがとうございました。
227774ワット発電中さん:2014/07/23(水) 16:24:43.93 ID:sF4cWq4/
>>226
1/4になるのはゲート数削減してコスト下げるため。
228774ワット発電中さん:2014/07/23(水) 19:05:23.88 ID:HA47V3fp
>>226
ハーバードアーキテクチャと1/4クロックは違うよ。
普通のSRAMのアドレスとR/Wのアクセスを調べてみ。
1/4でも高速だと思うから。(当時としては特に)
229774ワット発電中さん:2014/07/23(水) 23:12:53.24 ID:uQKqZAyH
>>223
PIC1650は1バンク(=32バイト)だけだったようだな

バンク分けの利点は、(バンクごとの)アドレス数を少なくすることで命令調が短くなって、
ROMとか命令デコーダとかが簡素化できるんだろう
230774ワット発電中さん:2014/07/24(木) 01:35:42.88 ID:KTrYU0AK
そんな命令調で言われても
231774ワット発電中さん:2014/07/24(木) 08:07:54.93 ID:IelrgaNj
PIC、もともとは別のCPUの召使い用途だしね
プログラマブルな8255つうか
ttp://www3.telus.net/danpeirce/robot/pic16xx.pdf
ttp://en.wikipedia.org/wiki/PIC_microcontroller
(日本版にはhistoryの記述がないので)
232774ワット発電中さん:2014/07/24(木) 09:47:40.29 ID:lR3igiwc
命令調ではないな
233774ワット発電中さん:2014/07/24(木) 10:17:21.13 ID:3vx+A2b0
だな。インストラクション(命令)マニュアルにそれらしいのは見当たらないしなw
234774ワット発電中さん:2014/07/24(木) 21:43:02.19 ID:VvLGEqqy
>>231
1655のデータシート初めて見たけど
IOが順番に並んでて、プリント基板作りやすそう
14K50練習中の自分には天使に見える
235774ワット発電中さん:2014/07/25(金) 16:58:17.66 ID:PJZWA08R
>>231
後者のWikiの資料に略称の変遷が書いてあった。
Programmable Intelligent Computer はさすがに立派すぎると思って止めたのかな?
+++++
It is generally thought that PIC stands for Peripheral Interface Controller,
although General Instruments' original acronym for the initial PIC1640
and PIC1650 devices was "Programmable Interface Controller".
The acronym was quickly replaced with "Programmable Intelligent Computer
+++++
236774ワット発電中さん:2014/07/25(金) 17:22:20.62 ID:9TQTWwsV
PIC Is Computer
237774ワット発電中さん
ポコペンIC(どやぁ