PIC専用のスレ Part 58 エラッタの話題も歓迎
■ このスレッドは過去ログ倉庫に格納されています
______
/Microchip ./|
/ ( ゚∀゚) / | アセンブラのアの字もわからない
|~ ̄ ̄ ̄ ̄ ̄| /. 超初心者からHEXが読めてしまう
|/Z./Z./Z./Z_|/ || 鬼プロフェッショナルの為のスッドレ(#゚Д゚)だ!モ゙ルァ
||. ||. ||. ||
大人気のPICマイコンのスレ
なんといっても情報が豊富だし、開発環境も多いし、パッケージも豊富
使いやすくて、しかも安い。やっぱりPICだよね
例の如く基本リンクだ
http://www.microchip.com/ マイクロチップ本社(Microchip Technology Inc. )
http://www.microchip.co.jp/ マイクロチップ テクノロジー ジャパン 株式会社
http://www.microchip.com/maps/microcontroller.aspx Microchip Advanced Part Selector (Maps)
またーりやっておくんなまし
種類が多くてワカランって奴は上記パーツセレクタで、機能から最適製品を絞り込め!
教えて君はとりあえずGoogle( (p)http://www.google.co.jp/ ) くらい使おう
テンプレ内の秋月小売価格も在庫が捌ければ、次の仕入れからは昨今の為替相場変動にならって
適宜価格改定されてます。ここの表記価格とは違うかもしれないのでそのつもりで
回答者する人の注意
. 最初に回答したい気持ちは分かるけど、質問者の内容を、落ち着いてよく読もう。
質問者する人の注意
. あなたの周囲しか通じない変な省略語は使わずに、なるべく詳しく説明してね
前スレ:
PIC専用のスレ Part 57
http://rio2016.5ch.net/test/read.cgi/denki/1517669525/ フィラメントを交流で点灯すると周りに交流磁界が発生する
近くに磁石を置いておくと磁力でフィラメントが揺れる
「バイブラ電球」または「バイブラランプ」というらしい >>745
追加情報ありがとう。
バイブラランプって言うんですね、1000円弱で買えるとは。
真ん中の灯具に似たのも出てきました、マリンランプだそうです。
高く感じるけど本物っぽいので仕方ないのかな?
https://www.amazon.co.jp/dp/B00U1GS19U/
スレチ失礼しました。 >>714
8bitと言っても今のF1ならFSR二本あるしロードとストアなら++,--あるし
MOVIW ++FSR0
ADDWF w0,w
MOVWI FSR1-- >>743
動画見たけど、こんなに震えてたらすぐ切れそう・・・・ 本家のForum、エラーで書き込めないんですが、私だけでしょうか?
昨日は書けたのになあ。 Full Versionの投稿窓からだと書けないけど普通のなら書けました。
ファイルがアップロードできないけど…。
FireFox、Chrome、Waterfox、全部同じ症状でした。 別スレで、
>PIC24は誰がどう考えても要らない子
みたいなこと言われたのですが、なんでそうなのでしょうか?
結構好きで使っているんで、ょっと悲しいです。 誰がどう考えても、と言える人ってたいていは考えが浅い人ですよ。相手にしなくてもいいでしょ。 売れなきゃ作らないだろ
売れないの作ってたら株主怒って
経営者交代させるだろ
そんな簡単なルール分からないで
書いているんだから、
なんか過去に24Fに恨みとかあるんじゃないの?
使えないのは自分っていう
自己紹介をしているレスだと思えばいい >>754
なにか定番がひとつほしいよね。16F84みたいな。
使いやすさもパフォーマンスも、8bitとは雲泥の差なんだし。 そうそう、8bitで256にビクビクしなくて済むのは、ありがたい。
で、5V, 3.3V共用ができて、周辺が充実、形状が3種類ある、
PIC24FV32KAxxxをよく使う。
QFP44より、もっとI/O数の多い品種がほしいところ。
XC16で、fprintf() が使えれば、もっといいんだけど。 8bitで窮屈ってんなら32bit使うよな、値段からしても。 32bitで定数を記述するとき 0x12345678 と8桁も書くのはめんどくさい。 あと、
フラグに1bitしか使わないので、残り31bitに申し訳ない。
さぁ記憶するぞ!って作られたのに、一生記憶できないんだぞ Pascalには集合型っていうのがあるんだよね、ビット配列みたいなもんかな Pascalの集合型は列挙型とともに、Cのenumに近いものじゃなかったっけ。
ビットフィールドを作れるとしたらレコード型では。 宇宙環境だと電離放射線の影響で1bitくらい平気でデータ化けするので
TRUE 11110000
False 00001111
にセットして0x10以上 or 未満でフラグ判定するのがおススメ PICのデータシートに書かれている RAM 容量が、たとえば100kByteだとすると、
32bitマイコンなら、25kByteのアドレスしかなく、
16bitマイコンなら、50kByte分のアドレスが取れて嬉しいと思います。
1アドレスに入れる値が、16bit未満ばかりの場合、16bitのほうが使用効率がよいように思います。
この考えは間違っているのでしょうか? >>766
全然間違ってる
というかPICなんかで遊んでるよりまずはコンピュータの基礎を勉強したほうがいいのでは? >>767
ありがとうございます。
どの辺が、どのように間違っているでしょうか? 752 : 774ワット発電中さん : 19/03/09(土) 15:03:43.34 ID:KpxIUbKQ
別スレで、
>PIC24は誰がどう考えても要らない子
みたいなこと言われたのですが、なんでそうなのでしょうか? 32ビットマイコンでも100kバイトだよ。32ビットマイコンでも16ビットマイコンでも1バイトは8ビットだよ。 >>768
あんた、この5chにスマホで書いてるのかPCで書いてるのか知らんけど
PCにメモリを4GB積んでて、32bit版Windowsと64bit版Windowsで使えるメモリ空間が
変わるの?64bit版のWindowsだと32bit版に比べて使えるメモリが半分になるの? ビッグエンディアンとか、リトルエンディアンの問題が出るのはバイトアクセスだから >>766
小物ばかりなのに大きな段ボール箱を用意して1箱に1個じゃ効率は悪い。
でも、1箱に2つ入れればいいだけのこと。
その分の処理は逆に大きな物が1度でしまえる場合もあるから相殺され、
トータルでどっちの効率がいいかはケースバイケース。 16ビット 2アドレスのメモリ空間を「大きな段ボール箱 1箱」にたとえるのか。
わかっている人にはともかく、>>766にとっては混迷を深める話のような気もする。 >>765
> 宇宙環境だと電離放射線の影響で1bitくらい平気でデータ化けするので
> TRUE 11110000
> False 00001111
> にセットして0x10以上 or 未満でフラグ判定するのがおススメ
01001111とか出たから、ひとみは今、ぐるんぐるん回転してるんだな。 >>775
なるほど、では、あなた自身がもっとわかりやすい例えで教えてあげてください。
>>770みたいなボケは無しでねw >>778
このことを喩え話で説明することは適切じゃないかも。
>>766が「PIC32では、4バイトで1アドレスだ」と思っているような気がして、箱の喩えがそれを補強してしまうような気がしました。
>>770は「32ビットマイコンでも100k個のアドレス」と書くべきでした。 32ビットのPICは分からないけどCPUによっては32ビットで1アドレスというのも
存在するからCPUによるとしか言えない。 CPUやバス周りでの32bitや8bit,バイト(8bit)って表現は大抵は語長(ワード長)
bitは情報量の単位でメモリ量を表す単位としても使われ
例えば素のメモリICはbitで容量を表示する事が多い
で、100kバイトのメモリはどんな環境でも100kバイト
32bit語長で表す場合、32bit語長である事を明示した上で100kバイトを25kワードとか25k語と書く事があり
16bit語長と明示して50k語と書くこともある 32bitCPUでもバイト単位でアドレスあるのが多そうだけど
境界またいだ32bit分を一度に読み込みは無理だよね?
8bit+32bitのデータ構造を持つ配列作る場合 面倒だから
8bitで充分だけど32bit分使うとか多くない? >>782
MIPSには境界またいだワードデータの読み出しようの命令はあるが
1ワード分読み込むのに2命令必要だね
というかそもそも16bitでは64KBまでしかアドレス空間がないから
100KB扱うにはセグメントなどの特別な仕組みが必要だけどね 一般論と、PICの8ビット、16ビット、32ビット。仮定の話と、現実の話がごちゃごちゃになってる。
100kバイトは仮定の話だよね。それは別に1kバイトと置き換えてもいい話だし。
一般論なら16ビットCPUだから64kバイトのアドレス空間ってことはないよね。 PICマイコンって、自動車や産業機器で使われないのですか?
何か行けないことでもあるのでしょうか? >>766 が何言ってるのか意味不明だったけど、>>781 見て納得w
PIC24なんか、16bitのくせに命令ワードが24bitもあって、なんかややこしいんだよな。
アドレスは4バイトごとだから、ファントムバイトとか作ってみたり。
64KBっていうから、32Kワードかと思ってたら22Kワードしかないとか。 >>787
PIC24のプログラムメモリのアドレスは4バイト毎じゃなくて2バイト毎だよ
https://i.imgur.com/cLelx7y.jpg
そしてPC(プログラムカウンタ)は+2ずつされる >>785
PICはいろいろなところで使われていますよ。
身近なところでは4K液晶テレビやLED懐中電灯や救急車の点滅している照明
などは、実際に分解して調べた結果PICが使用されていることがわかりました
ロジックICの置き換えやモーターの制御などさらに多くの所で使用されている
ようです >>790
Microchip automotive
Microchip medical
で検索すればいいのに。情報端末持ってても、情弱ってWEB検索もできないんだな。 >790
医療や自動車に使われてる事と、君のLチカとなんか関係あるの? >>783
>というかそもそも16bitでは64KBまでしかアドレス空間がないから
初心者スレに行って顔洗って出直して来い
ハードウェアのメモリ空間にかかわらず、32bitOSで4GしかアクセスできないOSも、
Windows(32)の貧乏臭い仕様だけ >>793
だから16bitで表現できるのは64KBまでだから
それ以上のメモリを扱いたければセグメントのような特別な仕組みが必要だと書いてるだろ
普通はセグメントやバンク切り替えで対応するけどな
つまり、16bitのアドレスだけでは表現できなくてセグメントやバンクの情報も必要になるから
16bitのアドレスだけでは表現できない
PIC24はデータ用のRAM領域は64KBで制限されてたはず
8086はセグメント方式だったが、
8086の全アドレスに対応したメモリモデルのC言語のポインタはセグメント+オフセットで32bitだったしね >>794
AliでDigisparkのクローン買ってくりゃ、
送料込み150円で出来そうだが。
何か勘違いしてるかな? >>797
「MP3再生すりゃいいんじゃね」と指摘されてΣ(°д°lll)となってたような >>796
データ幅と命令語長は関係ないから16ビットマイコンのアドレスが16ビット
などという決まりはないと思うが。 >>788
その画だと、ファントム込みで4バイトずつ、PCはワード数をカウント、って感じじゃないかね? >>796
>だから16bitで表現できるのは64KBまでだから
PIC限定ではなくて、一般論としてだよね。マイコン/プロセッサが16ビットだからといって、アドレスのレジスタの幅が16ビットとは限らないよ。
8ビットマイコンでも、256バイトを超えたアドレスをリニアにアクセスできるでしょ。 >>800
>>787 アドレスは4バイトごとだから、ファントムバイトとか作ってみたり。
「アドレス」は2バイト毎に割り当てられてるよ >>801
レジスタを32bitにしたものを16bitと呼ぶのはどうかね
例えば68000は16bitCPUだけどアーキテクチャとしては32bitだし
それにアドレスを32bitや24bitにしたらそれだけメモリ食うのは32bitCPU変わらなくなる
この話題は>>766が発端なんだし そもそも32bitマイコンの方がフラッシュ容量もSRAM容量も多いのが揃ってるんだよな
ルネサスだって16bitのH8やM16Cの後継に32bitのRX持ってきてる
複雑なアドレス構造で64KB以上のデータにアクセスできるようにするくらいなら
単純な構造の32bit CPUでいいじゃんということ
そういう風潮になってきてる 複雑な構造の16bit CPUと単純な構造の32bit CPUでは必要トランジスタ的にもあまり変わらない
メモリが外付けの頃はデータバス幅が小さいけど大容量のメモリを扱いたいという需要があったが
メモリが内蔵されてればデータバス幅をわざわざ小さくする必要も無い
実際にH8や68000などの高機能な16bit CPUがマイコンから消えていってARMが台頭してきてるよね
ARMのCortex-M3はゲート数が33000ゲートくらいで32bitとしては非常にコアが小さい
PIC32MXで使われてるM4Kコアも35000ゲートくらい
今残ってる16bitマイコンはデータ領域(プログラム領域ではない)は64KBに制限してるものが多い >>805
すごい理屈だな
まさにポカーンだ。H8のメモリマップも見たことなくてよく言えるもんだ
6809を16bitMPUとか8088を8bitだとか言う奴はよくいたので驚かないが。 なんか話を発散させてうやむやにしようとしてないか? 32ビットにメリットがあるとかトランジスタの数とかは別の話だよ。
>だから16bitで表現できるのは64KBまでだからそれ以上のメモリを扱いたければセグメントのような特別な仕組みが必要
これがそうでもない、という指摘に対する答えは、>>803で書いているような「それができるものを16ビットと呼ぶのは適切ではない」なんだね?
自分の定義にあわせて世の中を変えるのは、無敵すぎだろ。 >今残ってる16bitマイコンはデータ領域(プログラム領域ではない)は64KBに制限してるものが多い
SRAMエリアが小さいのはアーキテクチャというより、コストとのトレードオフでは? そもそもPICの実行コード自体命令長が14bitとかで、
8bitでも16bitでもない単位でアクセスしてるということを忘れてないか XC8などで、ポートAの0を H にしたり L にしたりするとき、
volatile....ポートのアドレス.... と書かなくても、
RA0=1; とか書けば動きます。
RA0というのの中身がどこかに定義してあって、
そのお陰でRA0=と書けるのだと思います。
実際にXC8コンパイラだと、その元となる Volatile.... の記述は、
どこに書いてあるのでしょうか? >>807
だからレジスタを32bitにして32bitのアドレス指定するなら
32bitCPUを使用する場合のポインタ保存に使用するメモリ容量変わらないじゃん
そもそも、この話題は>>766が発端なんだし >>808
だから64KB以上のメモリアクセスにはセグメントやバンク切り替え、32bitのレジスタを扱うなど
複雑な仕組みが必要で、結局それなら単純な構造の32bitCPUコアを使ったのとコスト的に変わらなくなってる
それはARMの躍進が証明してる
だから高機能な16bit CPUは今のマイコンではなくなってきてるんだよ
ルネサスだって高機能な16bitCPUのH8とかM16Cの後継は32bitのRXじゃん 別に16bitマイコンの使い道がないと言ってるわけじゃなくて
今残ってる16bitマイコンの多くは
データ領域(プログラム領域ではない)が64KBまでを想定してるものばかりで
8bitでは性能的に足りない場合に使われてる
64KB以上のデータ領域を使うなら
素直にARMのCortex-M3などのゲート数が少ない単純な32bitマイコンを使うような感じになってきてる >>812
んー。じゃあ…。下の2つはあなたの認識に合致する? 合致しない?
(1)「8ビットマイコンで、256バイトを超えるメモリアクセスをするにはセグメントやバンク切り替えなどの複雑な仕組みが必要」
(2)「Z80はアドレスを扱うレジスタが16ビット長。特別なバンク切り替えをしているわけではない。Z80を8ビットマイコンと呼ぶのはどうだかね。16ビットだろ」
(1)と(2)それぞれに、「合致する」か「合致しない」をまず書いて。理由や根拠はそのあとに書いてね。書いてあればちゃんと読むから。 纏めると 16bitマイコンは社会的にNRND状態 結局、BYTEとWORDという単位とレジスタの関係を知りませんでしたってやつが、
自分の馬鹿さ加減を認められたくなくて暴れてるだけってことでOK? >>814、>>812
CPUが一つの命令で処理できる「データのビット数」と、
命令の種類を示す「命令のビット数」とは無関係である。
たとえばAVRのデータは8ビットであり、命令は16ビットである。
(ただしAVRには例外あり。
(命令によっては16ビットデータとして処理され、32ビット長の命令もある。
(昔、データ16ビット固定、アドレス16ビット固定などいうシンプルなCPUも存在した。
(可変語長というCPUも存在する。
メモリアクセス時に使用する「アドレスのビット数(アドレス空間)」とも直接的には関係が無い。
単に「16ビットCPU」というと、通常は「データ」16ビットのCPUを意味し、
命令コード1個のビット数や命令コードが何個有るか(コード空間)は、
明記されていないので分らないし、
もちろん命令が固定語長か可変語長かさえも分らない。
アドレス空間はアドレスのビット数が16ビットで有れば最大64Kアドレスになる
CPUとしての動作機能上、
アドレス・レジスタ(プログラムカウンタ)をデータ・レジスタと入れ替えたり、
演算したりして、数値を変更できるようになっている。
この場合、ビット数の違いを吸収する工夫が必要になったりする。
と書いてきたが方向性がよく分らなくなってきたのでw
これでおしまい、チャンチャン >と書いてきたが方向性がよく分らなくなってきたのでw
だけ読んだ。 >>818
それで OK !
今読み返して、余計な口出しをしてしまったと猛反省中w 何ビットのCPUって言うのはACCのビット数を言うと思ってたが、今は違うんか。 結論
>>766の質問に乗じてPIC24をハブろうとしたり32ビットを布教しようとした人が悪い PIC24って使いやすくてアセンブラいじっても歯ごたえがない >>766
bit数に関係なく、アドレスはbyte単位が多い。
byte単位のアクセスは余分に時間かかるが。 もはや、お口でプログラミングする時代か・・・>歯ごたえ 8bitのPICが糞だからPIC24はもっと流行ってほしいけどね >>827
使い分けが出来てないだけ。
単純な制御しかしないなら、やはり8bitの方が楽だし。 存在して、ましてそれなりの数が出回っているものは、用途があるからだと考えるのが自然。
自分にとって価値が理解できないままであっても、他人にとって価値があるのだろうと思えることは大切なこと。 8bitが気が楽とか分からん、32bitのリッチなIOに任せた方が
余程楽。
「おれ8ビットでこんな凄いのやってる!」オナニー自慢にしか聞こえない。 >>830
だって32bitって電源電圧幅狭そうだし、I/Oの流せる電流しょぼそうだし 電源電圧の幅は何とかするにしても、ノイズ試験や環境試験すると、スピード落としてもたいていの32bitはボロボロだね
他のCPUが起動すらしない、数kWのRF環境下やモーターをゴッツンゴッツン動かしたりしても、PICと元三菱の8Bit系は平気で動く
低格越えの温度環境下でも動作マージンが大きいのは助かるし。
部屋で模型のLED付けたり消したりするだけならなんでもいいだろうけど。 あー、タフさはつよいかもね…
核戦争下で使えるキャブ車みたいな… >>832
>部屋で模型のLED付けたり消したりするだけならなんでもいいだろうけど。
この用途こそ8bitでしょ。
32bitじゃ白や青のLED点滅させるのに電源2系統とか3端子レギュ必要とか勘弁してほしいし
ちょっと電流多めにと思ったらTr要なんてもっと勘弁だし 「理解できないところがあるので詳しく教えてください」と言う代わりに「馬鹿?」と煽って喋らそうとするのってなんなんだろな。 32bitはアナログ周りがショボい
MMは遅くてクソ
8bitや16bitの方が使いやすい >>834
青や白LEDを光らせるのに5Vが必要だと思い込んでる点に834の馬鹿さを感じました。 言うても、3.3Vやとギリギリやん?
3V駆動謳うのfet高いやん? >>839
白色LEDはvf が3V位有るから、電流制限抵抗だけで安定して光らせるには5V必要。 >>842
PIC32は1GPIOあたり5mAまでなので10mA流したいなら外付けTr必須。 適材適所にしか聞こえない話なんだが。
耐環境性に対しては古い時代からの実績と継続性のある8ビット系マイコン。
価格性能比では比較的新しい32ビットマイコンのほうが有利。
使い処による要求が価格・性能・納期の比較で良いものを使えばいい。 >>843
>PIC32は1GPIOあたり5mAまでなので10mA流したいなら外付けTr必須。
そうなの? 私が見たデータシートだと下記の様に書いてあるけど品種によってちがうのかな
>Input/Output
>? 10 mA source/sink on all I/O pins and up to 14 mA on non-standard VOH
http://ww1.microchip.com/downloads/en/DeviceDoc/PIC32MX1XX2XX-28-36-44-PIN-DS60001168K.pdf
>844
>適材適所にしか聞こえない話なんだが。
その通りだけど >>830 みたいな人がいるから ■ このスレッドは過去ログ倉庫に格納されています