初めてのPIC 0x0A [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
.
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・素人玄人などと 上から目線の回答者は、無視してください。相手してはいけません。
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
・回答者は、僕たち初心者に優しくしてください。あなたも通ってきた道のはずです。
さ、質問どうぞ〜っ
0x09 2016/09/07〜 http://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
0x03 2014/09/22〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1411314715
0x02 2014/05/20〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1400522979
0x01 2013/11/17〜 ttp://ai.2ch.net/test/read.cgi/denki/1384626558 割り込み要因をチェックしない特殊な条件で8bitの方が速いとか意味わからん
低遅延がお好みなら、FPGAでLチカでもしてればいいのに 8ビットで割り込み要因をチェックしない例なんていくらでも有る。全然特殊じゃ無い。
だいたい、割り込みの遅延時間を調べるのに条件によって変化する要因チェックなんて入れれば本質が見えなくなる。
そもそも、状態変化割り込みなんてスタンバイを抜け出す以外で使うのは、ほぼ℃素人プログラムだしなw
結局、割り込みに掛かる時間は
600μ秒 普通の人が書いた8ビットアセンブラ
850μ秒 Cしか使えない奴が書いた鈍臭い32ビットアセンブラ
1100μ秒 Cしか使えない奴が書いた鈍臭い8ビットアセンブラ
1200μ秒 Cしか使えない奴が書いた鈍臭い8ビットC
1650μ秒 Cしか使えない奴が書いた鈍臭い32ビットC
って事で、Cとかアセンブラ以前に、個人の力量が一番効くって事だなwww >>904
℃玄人は、頭おかしいから もう来なくていいよ >>904
℃玄人は、
頭おかしいから もう来なくていいよ www
頭悪すぎwwwww
ワロタ www >>887
一つの信号の立ち上がりと立ち下がり別々に割込みを掛ければ
それぞれの割込み処理内で実行する命令はビットセット/ビットリセットの何れか1個で済む
余り意味の無い比較だがいずれにしろ最速はAVR >>910
お勉強は大事ですよ、孫子も言ってる事だしw
「彼を知り己を知れば百戦して殆うからず」 >>909
でも先は無いけどな。
昔からそうなんだが、直交性だのプログラムが書きやすいだの必要クロックが少ないだの
信者が言い訳するCPUって、主流になれずにディスコンになるんだよなwww >>908
>>890を実際に書き込んでオシロで確認すればよろし 実力って>>890でわかるようなうすっぺらいものなんですかね。
>>908の質問も答えを出しようのないものですが、>>914のはぐらかしの方向違いもすげえものです。 レベルが低いなwww
℃素人文系の言い訳っぽいwww ℃玄人氏って結構知識もあって適切なアドバイスもちゃんとしているのに、まずいところで引くってことをしらないな。 >>918
だから℃玄人なんだよ
玄人にはなれない器 >>918
「言い負かす事」に重点を置き過ぎって感じ 実行中の命令に応答時間が影響されないPIC24にしかできないことがある ポートチェンジでテストした人は、計測の手段として使っただけだろう
それに割り込み要因を調べない=一種類の割り込みしか使えないってこと
16ビット以上ならベクタテーブルがあるから、チェック不用
893の情報を読む限り、普通の使い方なら16bitの方が速くなるかと
指摘のポイントも的外れだし、そもそも8ビットが速い、じゃなくてアセンブラ使いの俺スゲーという独り言としか読めなかったのだが
俺もZ80の頃から使っているのでアセンブラは嫌いではないけど、904みたいなのは流石にどうかと dsPIC33Fで状態変化割り込み測ってみた
XC16最新版最適化O1
300nsec
ちなみに素人でCしか分かりません
シャドウレジスタ使ってない
割り込み内でLATBを全反転完了までの時間 >>903
遅延時間だけでなく、応答するまでの時間が一定で有る事が要求される用途もある。 ちなみに測定器は
1万円で買ったDslogic
メインルーチンはインクリメントした32bit割り算の無限ルーチン
割り込みはビルトイン割り込み関数
24Fでも試そうかと思ったけど
手持ちなかった >>925
それを割り込みで実現するのは難しいんじゃない? 思った通り
>>890の中身は割り込みハンドラの先頭で
ただ単にポートを立ててクリアしてるだけ
004 : BSF INDF0, 5
005 : BCF INDF0, 5
>>886 とは比較してる内容がまったく違います
>>894 で私が測った575nsのコードの方がまだ>>886に近いですね
℃玄人の実力ってそんなもんですか
まあおそらく℃玄人本人のコードですらないでしょうが >>927
特定の割り込みであれば、
割り込みが発生してから同じ時間になるように待つことで
時間をそろえることは出来ますが... >>928
後から「俺も出来る」とか言っても何の足しにもならない。
悔しさは十分伝わったけどな。 ここまでの流れをまったく理解するつもりがない俺はたぶんどしろうと 初めてのPICスレで、短いコードを持ち出して実力論議ですか。やめようよ。
そんなことで実力なんて判断できないから。
ちなみに℃玄人氏の力量はちゃんと答えたリアドバイスしているレスを見る方がよくわかる。
口汚く喚いているのが目立つだけなんだが、これって往年のVoid氏みたなものだよな。
Void氏ほどには洗練されていないけど。 voidて・・・
やはりこういう所にいる人って50前後以上の人が多いんだろうなぁ
ずっと同じような会話が続いてるのもナンだよねぇ ℃玄人って8bitPICしか知らないからなあ
32bitなんて全くの℃素人 数字が大きいほど難しい・・・、 とか思ってんのか
間逆だ、このバカ >>935
そうは言っておらんだろう。書いてないことまで読むなよ素人。 >初めてのPICスレで、短いコードを持ち出して実力論議ですか。やめようよ。
どの程度の能力を持っているか、他のCPUと比べてどうなのかは初心者の知りたい点だろうし、
CPUが持つ能力をたとえ一部であっても第三者が実証(再現)可能な具体的方法で比較するのは
構わないと思うけどな。
そもそもこんな場所で長いコードで比較することは出来ないし、
短いからこそハッキリする事もある。 >>937
言葉足らずで悪かった。俺が言っているのはCPUの実力ではない。 >>914 が言ってる実力。
>>908
> >>904
> あなたの実力が見たいです!
>>914
> >908
> >>890を実際に書き込んでオシロで確認すればよろし
あなたの実力を、と要求されて、914はこの短いコードを指示したんだよな。
このコードで人の実力がわかるわけがない。 割り込みの実力を調べるのに、2倍も実行時間の掛かる鈍臭いプログラムしか書けずに
鈍臭いプログラムで評価するのは実力の無い奴がする事。
どれ位実力が無いかというと、学生が初めてマイコン使って何か作ってみたレベルの実力。
製品を作れるレベルならば、割り込みに掛かる時間とその後の処理の時間は別に評価する。
いろんなプログラムが有るわけだから、余計な処理の入った鈍臭いテストプログラムなんて
害悪でしか無い。
それを示すための最短時間の割り込み処理だろう。 結局割り込み遅れ時間は
C言語
16bit < 8bit < 32bit
アセンブラ
8bit < 32bit
(16bitは未検証)
但しアセンブラの場合、能力差で変動する ℃玄人がムキになってるwww
よっぽど悔しかったんだろうなwww >>940
>>904が正解。>>939に書いた通り、余計なプログラムがついた状態での評価なんて害悪でしかない。
そんな評価方法で違うCPUを比較するなんて愚の骨頂だわwww
違うCPUの比較をするならまともに動くプログラムで比較するか、純粋に機能分割して単体で評価するべき。 今回は珍しく数字出たけど、数字を出してる方が℃玄人さんじゃないんでしょ?
こらカッコ悪いですわ…。 >>941
そんなこと言ってるとてめぇも℃玄人の仲間入りだぞ >>942
>>904 が正解なわけ無いだろ
クソ℃玄人 二度と来るな。 ℃玄人同士の子供じみたけんかは他所でやってくれませんかね ℃玄人は他人の書き込みをなじることが生きがいの
かわいそうなガキですから、スルーするがよろし ICN割り込み後の最初の命令でポートをセットするコードで遅延を測定してみました
PIC16F18325 (32MHz) : 500-612us
PIC24FJ64GB002 (32MHz) : 480-530us
PIC32MM0064GPL028 (24MHz) : 597-633us
PIC32MX270F256B-50 (50MHz) : 272-288us 連休でヒマだから >>909 の意見を取り入れて
2個の割込みINT0、INT1を使って立ち上がり、立ち下がりの割込みを分離した。
(入力信号、出力信号としてはもちろん共に1個)
遅れ時間をオシロで見ると立ち上がり、立ち下がり共に約500nS。
CPUがやっていることに大差は無いので、結局はクロック周波数の差になるのかな。
入出力の波形画像 赤が出力(tiny2313の8番ピン)、黄が入力(6、7番ピン)
http://i.imgur.com/l4OROwk.jpg
プログラム(ベクタテーブルは省略)
;***** setup
RESET:
LDI R30,0b11101111 ;Port-D input with pull up, output Low
OUT PortD,R30
LDI R30,0b00010000 ; output:bit4, input:bit0~3,5~7
OUT DDRD,R30
;
LDI R30,stack ;set stack
OUT SPL,R30
;
LDI R30,0b00001011 ;triggered by +edge of INT0 and -edge of INT1
OUT MCUCR,R30
LDI R30,0b11000000 ;enable INT0/INT1 interrupt
OUT GIMSK,R30
SEI
;
;***** main
Loop:
RJMP Loop ;wait interrupt
;
;***** INT0/INT1
IRQ1:
SBI PortD,_Out1 ;output Hi
RETI
;
IRQ2:
CBI PortD,_Out1 ;output Lo
RETI
;
しかしPICスレは何で毎度毎度、最後は罵倒レスの応酬になるかねぇ。
おかしな奴は相手にするとキリが無い、 948 の言うとおり無視するのが一番だと思うけどな。 ごめんなさい
単位間違えました
PIC16F18325 (32MHz) : 500-612ns
PIC24FJ64GB002 (32MHz) : 480-530ns
PIC32MM0064GPL028 (24MHz) : 597-633ns
PIC32MX270F256B-50 (50MHz) : 272-288ns >>949
us って、 ns の間違いじゃないの?
もしそれが事実なら、 ええっ って感じだな >>949
8bit PIC 、実質8MHzなのに結構速いな。 >>957
確かに早い。パルス列の入力〜出力までに
20MHzのAVRが10命令サイクル程度(50nsx10、これは資料を読むと順当な値)なのに
8MHzのPICが4命令サイクル程度(125nSx4)なのは驚異的だ。 C言語で変数使うと退避レジスタ変わってくるよ
PIC32はSW命令入りまくる
多重使わなければシャドウレジスタ使えば解決だけど
PIC32MX1 PIC32MX2 シリーズには無いんだな tiny2313の割込み処理に必要なクロック数はタイミングで少し変わると思うけど
・割込み要求フラグのセットまで4クロック(これは下記のラッチなどのハードウェア)
http://i.imgur.com/DOf3HBx.jpg
・戻りアドレスのスタック退避などに4クロック
・ベクタテーブルのジャンプ命令で2クロック
・目的のビット操作命令で2クロックの2クロック 8ビットPICの割り込みレイテンシは、バックグランドの命令が1サイクル
であっても2サイクルであっても、3サイクル一定だった。
もちろんCPUクロックと割り込み要求が同期している条件で。
ところが最近の1で始まる型番のPICではFSRを使ってプログラムメモリを
アクセスすると3サイクル命令となってレイテンシが4になる場合が出て
きて、ちょっと気を付けないといけない。
そういう命令を使わなければいいんだけど。 最近、どうでもいい内容ばかりだな〜〜〜
何に使うかが問題だよ。 使う物の中身を理解していないと何に使えるか分らないだろ PICのアセンブラは糞というけど
PIC24Fのアセンブラは別に糞でもなんでもないよね
AVRのアセンブラよりわかりやすいんじゃない? くそかくそじゃないかの判定基準をまず明示せよ
話はそれからだ ブスも3日で慣れ
一週間で愛着が生まれ
1か月で愛情に変わる
8bitPICはブサイク分類だろ
AVRは美人さんだと思うよ >>964
異なる命令コードビット数(14、16、24など)のCPUを比べるのはどうなんだろ?
「CPU」というくくりで見ればどれも同じ条件だ、という意見も前にあったけどw
>>966
美人かどうかは分らないが
割込みを使って入力パルスを出力する >>950 のプログラムはシンプルで分りやすい PIC24のアセンブラはわかりやすいから
とりあえず、何かのアセンブラやってみたいという人にはオススメできると思うよ PIC24のPDF
ttp://www.microchip.jp/docs/DS39703A_JP.pdf
ttp://ww1.microchip.com/downloads/en/DeviceDoc/70157F.pdf 8bitだろうが32bitだろうが、アセンブラなんてどれやっても同じじゃね?
今使ってるCPUには無く他のCPUでは有る命令も
同じ事をプログラムを組んでやればいいだけの事だし。 アセンブラを語るなら最低でも以下を知らないと
x86
ARM
MIPS 今更だが、ちょうど今やってたとこなんで 感想を一つ
MIPSは要らんなぁ
知ってて損は無いけど、PS2のHackingぐらいしか役に立たない >>973
MIPSコアのPICがあると聞いたけど、アセンブラとかどうなってるのかな?
PICよりなのか、がっつりMIPSなのか… PICは、8Bit (8Pin)にしか興味ないから知らない
あと、x86は 知ってると色々得する事が多い
例えば、CompilerをProModeに変えるとかな >>968
データ16ビット、コード24ビットのPIC24のアセンブラはどんなものかな?
大いに興味があります。比べやすいように
>>950「割込みで入力したH/Lをそのまま出力する」
をPIC24のアセンブラで書いてみてもらえないでしょうか?。
>>970
確かにしょせん1命令で済むか、2命令あるいは3命令必要か、程度の違いだよね。
しかも、この差が運命の分かれ道、なんて用途はそうそう無いだろうし。
そんな事よりアーキテクチャ(CPUの設計方針)の差の方が
影響が大きいと思う。 >>971
68Kをやった後に16F84Aを使い始めたけど、
64bitの加算と減算で「うわっ」って思った事はあるなぁ。
でも6502をやってたおかげで考え方はいろいろ応用が利いたと思う。
今は18F2620でLチカして遊んでる。 >>974
MIPSコアなので当然MIPS命令
周辺はPIC24に近い >>978
まぜこぜって事? MIPS使いがうまく使いこなせなくて扱いにくそうだなぁ…。
まあどっちも知らん上に、コンパイラに任せてる身には何とも言い難いけど… MIPS使いって...
普通はコンパイラを使うからコアが何かとか意識しなくても使える
速いPIC24と思っても良い
ガシガシに最適化する場合と、一部の特殊命令でアセンブラの出番となることはあるが >>981
ほうほう、PICと考えても使えるのね。
勘違いを正してもらってすまん。
8bitか16bitしか使ったことないので、他社のコアなんて使いにくいんだろうなぁ…と勝手に思ってた 秋月でPIC32MM取り扱い知ってデータシートとか眺めてたんだけど
ADCのミッシングコードエラッタって、、
どんなアナログデータ来るか分かんないって事?
500nsec以下のシュミットエラッタもあるし
要所要所で痛いなぁ PICではそのくらいは当たり前
エラッタ情報が開示されてないのもたくさんあるので注意 PIC32MMは格安でオススメ
16bitより安い32bit
ADCもスペック詐欺ではあるけど、スロー8bitなら問題ないんで、普通の用途だとそれほど致命的でもない
内蔵OSCで25MHzを作れない
I2Cが無い
といった、へんてこりんな面はある >>979
コアがMIPSなのと、周辺の機能は全く関係ない。 1チップかどうかってあまり関係ない
コアだけのマイコンなんて無いから ----- テンプレ ----
PICの特徴
多くのモデルでDIP版がある
秋月でDIP版の品揃えが豊富
趣味の電子工作の小規模マイコンでは採用率が高く、作品例も多く紹介されている
低価格路線のシェアが比較的高い
基本的には廃盤にしないポリシー
モデル数が多く、古くて低性能高価格の物も売っているので、モデル選択に困る
CPUのパフォーマンスは全体的に低い
特に8bitは顕著
エラッタが多く、公開されてない物も多い お薦めのPIC
迷ったらこれを買え
(秋月に売ってるPIC DIP限定)
●USBなし
PIC10F200 マゾ専用 最低スペック 50円
PIC10F322 最安 45円
PIC16F18313 8pin 75円
PIC16F18326 14pin 130円
PIC16F18346 20pin 160円
PIC32MM0064GPL028 28pin 3.3V 175円
●USBあり
PIC16F1455 14pin 140円
PIC16F1459 20pin 180円
PIC32MX230F064B 28pin OTG 3.3V 270円
PIC32MX270F256B-50 28pin OTG 3.3V 380円 Z80その他 相当数のCPUを全否定ですか
>>989 >>993
ハードにアクセスしないでコアだけ動かすなんて無いから
Z80もI/Oポートなどは当然ある
コアだけでハードを意識しないマイコンなど無い
内蔵してなくても外付けのペリフェラルのアクセスは必須 >Z80もI/Oポートなどは当然ある
Z80にはI/Oをアクセスする信号がいくつか用意されているが、
これをもって「I/Oポートはある」というのは少し無理があると思うナ。
8251、8254、8255、8259などの周辺ICの存在価値が無くなるw
文中の「ハード」の意味が不明瞭だけど、
ノイマン型コンピュータは演算装置と記憶装置と入出力装置とで構成され、
どれが欠けてもコンピュータとは言えないのは当然です。 >>989が言ってるコアと周辺の組み合わせの話は、メーカーがワンチップに組み合わせたものの話だよね。
Z80みたいなマイクロプロセッサの場合は、ファミリに拘ることなくある程度自由な組み合わせもできるのだし、
一緒にはできないよ。 >>983
変換値に歯抜けがある。
抜け方、あなたのADCの使い方によって痛さが違うよ。
アナログ入力が連続的に変換したなら、変換値も1LSBづつ変わることを期待したいけど歯抜けのために不連続な変換値になってしまう。 レス数が1000を超えています。これ以上書き込みはできません。