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/ RISC CPUでフルアセンブラで書くとか何の修行やねん >>721
楽しんでるんだよ、仕事としてやれるわけ無いだろう。 >>721
いいじゃん、わざわざ真冬に滝に打たれて喜んでる奴も世の中にゃいるんだからさ。
ただ、のこのこ出てきて他人に勧めないでほしいわなw アセンブラができない奴は肩身が狭いから
ここでわめくしかうっぷん晴らし出来ないんだろうな
ここでももちろん邪魔者だが >>721
パズルをやってるようで楽しい。
その分思考時間はCに比べて必要だから生産効率を求めるなら無駄だろうね。 >>724
世の中には、釣具ショクニンも、魚屋さんもいるわけで。
のこのこ出てきて、その世界の楽しさを披露してくれるのもネタとしては面白いと思う。 慣れというのがあってね、subwf movwf 同じ wf でも
subtract work from file, move work into file
と心の中で唱えられるようになるとがぜん早くなる >>728
>慣れというのがあってね
>心の中で唱えられるようになる
まあ、所詮そういう次元だろう。
自慢されても滑稽なだけ。 >>720
MIPSとかは、コンパイラに任せたほうが速いと思う。 MIPSあたりでアセンブラの利点は、実行時間が読めること
なので、コンパイラの最適化をすべてオフにすればアセンブラと変わらない >実行時間が読める
IDEでストップウォチを使えば読めるどころか正確に計算結果を表示してくれる。
そもそも、時間が必要ならタイマー割り込み使うからね。
アセンブラの出番なんてまず無い。 PIC18F使いですが、
PICKit4は買いですか? PICでLED蝋燭、的なネタはいっぱいあるけど、本物っぽいのあんまり無いね・・・・・ >>737
蝋燭LEDなんてものもあるけど、
無風状態で灯す蝋燭と若干風の流れを受ける蝋燭とではまた違うしねぇ。
光り方がわざとらしい。揺らぎというか点滅なんだよね。
蝋燭LEDを5本ぐらい寄せ集めて拡散キャップをかぶせた上に
乳白色のドームをかぶせて1つの光に見せかけるとそれなりにはなってくるよ。
「炎の揺らぎ」がようやく出来上がる感じ。 ハゼを原料とする和蝋燭は無風でも規則的にチラチラするらしいよ。
襖絵はそのチラチラする明かりで、畳に座って下から見るものだとも言ってた。
(PICには関係の無い話しだけど) あ、突っ込まれるといけないので訂正
規則的に → ほぼ規則的に >>738
子どもの頃、秋葉原の店頭で良く見掛けたフィラメント式?のユラユラ光る電球が欲しかったなぁ。
あれどうなってるんだろう。 >>743
多分真ん中のヤツです、ありがとう。
バカでかく見えるけど、E26口金ですよね?
ケースが物々しくてカッコイイ、これごと欲しい。 フィラメントを交流で点灯すると周りに交流磁界が発生する
近くに磁石を置いておくと磁力でフィラメントが揺れる
「バイブラ電球」または「バイブラランプ」というらしい >>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のビット数を言うと思ってたが、今は違うんか。 ■ このスレッドは過去ログ倉庫に格納されています