X



トップページ電気・電子
1002コメント341KB
初めてのPIC 0x0f
レス数が1000を超えています。これ以上書き込みはできません。
0814774ワット発電中さん垢版2018/06/18(月) 21:02:58.45ID:1U5jpkka
保護シールのことだろ。
本題に無関係のどーでもいいことをチマチマうるせえよな。
わざわざ書く神経がクソだわ。
0815774ワット発電中さん垢版2018/06/19(火) 00:02:40.93ID:3FV23PIy
>>803
ピンがバラバラなままでソフト書きでなんとか30FPS出せました
出せたところで何をするかは決まってないんですが
0817774ワット発電中さん垢版2018/06/19(火) 08:32:38.33ID:3FV23PIy
素直にピン配変えろって聞こえてきそうだが
こういう無駄な最適化は楽しいね
0818774ワット発電中さん垢版2018/06/19(火) 20:32:49.86ID:3FV23PIy
アセンブラで書いたら1バイト転送あたり
MIPS 10命令
ARM 6命令
になりました

MIPSはアドレッシングが貧弱なのと
PICのポート設定の問題で
命令数が多くなってしまった

どちらもポート順がバラバラで2グループにまたがったピン配で、他の(同じグループの)ポートはいじらない
データは転送データそのまま
という条件

PICだとポート設定が
SET, CLR両方を使うか
INVで反転しないとダメなんですよね
0819774ワット発電中さん垢版2018/06/19(火) 20:39:31.84ID:3FV23PIy
アセンブラで命令数は減って
命令の依存関係にも気を使ったんですが
C++とほとんど時間は同じでした

たぶんメモリ帯域の問題と思います
0821774ワット発電中さん垢版2018/06/19(火) 22:46:21.12ID:3FV23PIy
.macro lcd_write_bulk_even n
lw TEMP, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA_B0, DATA_B0, DATA_B1
sll TEMP, TEMP, 4
addu TEMP, TABLE, TEMP
sw DATA_A0, (LATA_INV)
lw DATA_A0, (TEMP)
sw DATA_B0, (LATB_INV)
lw DATA_B0, 4(TEMP)
xor DATA_A1, DATA_A1, DATA_A0
.endm

.macro lcd_write_bulk_odd n
lw TEMP, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA_B1, DATA_B1, DATA_B0
sll TEMP, TEMP, 4
addu TEMP, TABLE, TEMP
sw DATA_A1, (LATA_INV)
lw DATA_A1, 8(TEMP)
sw DATA_B1, (LATB_INV)
lw DATA_B1, 12(TEMP)
xor DATA_A0, DATA_A0, DATA_A1
.endm
0822774ワット発電中さん垢版2018/06/19(火) 22:55:26.30ID:3FV23PIy
こんな感じ
このマクロをループ内に8個ずつ交互に並べる
大文字なのはすべてレジスタの#define

命令キャッシュもデータキャッシュも有効
LATA_INV / LATB_INVのキャッシュは無効
送信データはRAM上でサイズ的にキャッシュからは追い出された状態
0823774ワット発電中さん垢版2018/06/19(火) 22:58:22.23ID:3FV23PIy
ARM(STM32)だと偶数奇数を分けなくてよくて、命令もこれだけ

str r6, [r5]
ldrb r7, [r0], #1
str r8, [r5]
ldr r8, [r2, r7, lsl #2]
str r9, [r5, #0x400]
ldr r9, [r3, r7, lsl #2]
0827774ワット発電中さん垢版2018/06/20(水) 07:37:48.02ID:NtXSjajd
先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。

俺は詳しいんだ、凄いだろと言う雑談は、
あっちのスレでお願いします。
0828774ワット発電中さん垢版2018/06/20(水) 07:41:41.98ID:Cygu9WZv
元データにXORをした方がいいですね
これで9命令に

.macro lcd_write_bulk_even n
lb DATA0, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA1, DATA1, DATA0
sll TEMP, DATA1, 3
addu TEMP, TABLE, TEMP
sw DATA_A, (LATA_INV)
lw DATA_A, (TEMP)
sw DATA_B, (LATB_INV)
lw DATA_B, 4(TEMP)
.endm
0830774ワット発電中さん垢版2018/06/22(金) 09:11:22.28ID:zg5wPoYp
こんな簡単なアドレス計算に2命令も使うとか
MIPSはやっぱりいまいちだな

アドレス計算は頻出するんで
命令の美しさとか犠牲にしてでも
アドレッシングはリッチにしておくべきだったと思う

x86だとアドレッシングがリッチすぎて
(バランスが悪すぎて)
普通の計算にもLEAを使ったりする
0833774ワット発電中さん垢版2018/06/22(金) 12:07:37.30ID:6fOSn34P
アドレッシングで余分に時間がかかったりしない
その為のハードウェア演算回路

ARMならCortex-M0でもメモリアクセスノーウェイトなら1クロックでアドレス演算含めて読み書きできるし
x86なら1クロックで(コアあたり)2個のロードと1個の書き込みが同時に出来る
0834774ワット発電中さん垢版2018/06/22(金) 12:18:54.12ID:6fOSn34P
PIC32はMZ搭載のM5150コアでも加算とシフトで2クロック使ってしまう

まあそれでも、
アドレス計算に何命令も使い
その計算したアドレスのメモリにアクセスするのに何命令も使い
その各命令に4クロックも使う8bitよりかは遥かに高速だけど
0835774ワット発電中さん垢版2018/06/22(金) 15:39:06.28ID:ZdkVfdHH
>>833
例にCortex-M0出してるが
Cortex-M0は演算で使えるレジスタの数に制限があるのを知らんのか?
大部分の演算命令では8個のレジスタしかアクセスできないぞ
0837774ワット発電中さん垢版2018/06/22(金) 16:27:05.46ID:ZdkVfdHH
Cortex-M0はThumb-2の16bit長の命令とほんの少しの32bit長の命令しかない
32bit長の命令はたったのこれだけ
BL
DMB
DSB
ISB
MRS
MSR
UDF


ちなみに>>823のコードはCortex-M0ではアセンブルできないぞ
LDRやSTR命令でR8-R15は使えないし、
ldrb r7, [r0], #1
ldr r0, [r2, r7, lsl #2]
ldr r0, [r3, r7, lsl #2]
なんてアドレッシングも使えない
str r0, [r5, #0x400]
これもオフセット値が5bitまでしか使えないのでオフセット値が大きすぎてエラー
0838774ワット発電中さん垢版2018/06/22(金) 16:37:33.30ID:ZdkVfdHH
どうで、ここ数日間、某スレで暴れてたAVR信者だろうな
某スレで見たがPICスレでエラッタエラッタ言って暴れてるのもどうやらAVR信者っぽい
0840774ワット発電中さん垢版2018/06/22(金) 17:31:35.87ID:6fOSn34P
あっちのスレを見れば
おれがPICマニアということはわかると思う
PIC10からPIC32MZ EFまで守備範囲

ARMもx86も詳しいけど
0842774ワット発電中さん垢版2018/06/22(金) 17:49:52.88ID:ZdkVfdHH
>>841
そうじゃないだろ
>>833がCortex-M0とM0+がCortex-Mのなかでも特殊なのを知らなかったということだ
だからCortex-M0を出してきてる
>>823のコードはCortex-M3以上なのは見ればすぐにわかった
0843774ワット発電中さん垢版2018/06/22(金) 17:52:02.79ID:ZdkVfdHH
Cortex-M3、M4、M7はARMv7-Mだが、Cortex-M0、M0+はARMv6-Mだからな
ARMに詳しいならこれくらい知ってるはずだ
0844774ワット発電中さん垢版2018/06/22(金) 17:55:59.94ID:6fOSn34P
M0/M0+
M3/M4
M7

この3グループ、中身は全く違う
そんな事は知ってる

M7はスーパースカラ
M5150よりもずっと格上
0845774ワット発電中さん垢版2018/06/22(金) 17:58:45.72ID:ZdkVfdHH
だから、M0、M0+はサポートしてる命令が少ないわけ
Cortex-M3、M4、M7とはプログラミングの仕方が変わってくる
0852774ワット発電中さん垢版2018/06/22(金) 18:20:34.88ID:ZdkVfdHH
>>840は嘘か
> ARMもx86も詳しいけど
0854774ワット発電中さん垢版2018/06/22(金) 18:28:18.42ID:ZdkVfdHH
>ARMならCortex-M0でもメモリアクセスノーウェイトなら1クロックでアドレス演算含めて読み書きできるし

ARMに詳しいならなんで特殊なCortex-M0を出ししてきたの?
Cortex-M0がCortex-M3とサポートしてる命令が違うことを知らなかったんじゃないの?
0856774ワット発電中さん垢版2018/06/22(金) 18:43:34.40ID:ZdkVfdHH
>x86なら1クロックで(コアあたり)2個のロードと1個の書き込みが同時に出来る

なんのx86のことを言ってるかわからないがPC向けのx86だろ?
Sandy Bridgeとかか?
いずれにしてもマイコン用のM4KやmicroAptiv、M5150と比べるようなたぐいのものじゃないな
0858774ワット発電中さん垢版2018/06/22(金) 19:35:49.77ID:ZdkVfdHH
>ARMならCortex-M0でもメモリアクセスノーウェイトなら1クロックでアドレス演算含めて読み書きできるし

書いてることがでたらめじゃないか
Cortex-M0はロードストアは2サイクルと書かれてるぞ
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432cj/CHDCICDF.html
Cortex-M3も2サイクル
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337gj/BABBCJII.html
0860774ワット発電中さん垢版2018/06/22(金) 23:04:14.29ID:FSnopXDS
コーディネータの指図に従って動く人なら、コーディネータや客が指定するいろいろな
CPUを使えるようになってる必要があるかもね。

でも、自分の裁量で作れる人にとって、いろいろなCPUを学んでいることは特別に大切なことじゃないよね。

どのCPUを使ってるかは、ファッションじゃねえし。
0863774ワット発電中さん垢版2018/06/22(金) 23:50:03.87ID:3ayoeOmu
多少の脱線話はしょうがないがやり過ぎだろ
このスレで解ることはPICは初心者向きではないって事
0864774ワット発電中さん垢版2018/06/23(土) 07:00:05.38ID:s1oNYlPs
>>863
初心者向けの理由や根拠にはいろいろな側面がある。
そもそもスレタイの初心者にも多面性がある。

なにかにつけ、肯定も否定もしない場合には理由はいらないけれど、
否定するときぐらいは根拠は書くべし。
そうでなければ、その根拠の解明をめぐってやりすぎの脱線が始まるおそれがある。
0866774ワット発電中さん垢版2018/06/23(土) 08:40:34.63ID:s1oNYlPs
>>865
PICを否定する根拠を問うてはいない。「PICは初心者向きではない」ことの根拠。
根拠が書かれていないのであれば、PICは初心者向きではないという結論に意味はないし

根拠がある、とだけ書いて逃げている>>865の主張にも意味はない。
根拠に乏しいものを信用せよという態度も、それを信用できるという態度も、
デマの拡散をするタイプの情弱だろね。

嗜好、選択の自由、それそれがすでに持っているもの、
それらを含めて、否定できるだけの根拠はちょっと考えにくい。
PICそのものへの否定であれ、初心者むけではないという結論であれ、
ただの白紙からの演繹的な判断や嗜好にすぎないことが多い。

最低限、嗜好の多様性は守られるべき。(それとも北朝鮮みたいな統制が好き?)
0868774ワット発電中さん垢版2018/06/23(土) 11:06:23.89ID:KUsZkuRg
PICと一括りに否定している辺りに「あ、こいつ知らない奴」ってのが読める
0869774ワット発電中さん垢版2018/06/23(土) 12:32:36.70ID:jNJ+jrw+
否定的意見を潰すんじゃなくて
肯定的意見を言えば良いのに
ここが良いとかここが便利とかここが優れてるとか
0870774ワット発電中さん垢版2018/06/23(土) 12:51:24.10ID:eAd/b7nv
>>866
私は嗜好の多様性や選択の自由なんて問題にしていない。
初心者が始めるなら、8ビットPICよりも可能性の高いCPUで、と思っている。
その方が初心者も興味が持続するのでは無かろうか?
今ならArduinoでいいじゃないか、安いし。

>>868
ご存じの通り8ビット〜32ビットPICは全く別物のCPUだが、
このスレでも分別していないし、混乱の要因だ。
同一ブランド名を割り当てるマイクロチップテクノロジの常識を疑う。
0871774ワット発電中さん垢版2018/06/23(土) 13:07:01.26ID:eAd/b7nv
いやぁ、ちょっと問題だったな、PIC関連スレでArduinoを薦めてしまった……
「今ならArduinoでいいじゃないか、安いし。」は無かった事にして下さいw
0873774ワット発電中さん垢版2018/06/23(土) 13:59:07.01ID:s1oNYlPs
>>869
別に肯定的意見なんていらないのですよ。
ここに来る人は(否定する野次馬をのぞけば)それぞれに肯定的理由があるから来てるんだし。

否定派も肯定的理由を聞けば納得するだろう、という主張もありますが、そんなことを言ってる人が本気でそう思ってるとしたら甘いですね。
テレビであるタレントの顔を見るだけでムカムカする、と言ってる人に、その人がいかに美人なのかを説明したって心変わりはしません。
0874774ワット発電中さん垢版2018/06/23(土) 15:14:34.60ID:ja1wLIk9
初めてスレだから
始めら前にちゃんと悪い面は知っておいた方が良いよな
0875774ワット発電中さん垢版2018/06/23(土) 16:34:01.28ID:Hu705My2
>>866
>>865とか>>867のような書き方をする奴とは議論にはならないだろ
ああ言えばこう言うの逃げを打つだけなので相手をするだけ時間の無駄
0876774ワット発電中さん垢版2018/06/23(土) 16:40:05.43ID:eAd/b7nv
>>873
>テレビであるタレントの顔を見るだけでムカムカする、と言ってる人に、その人がいかに美人なのかを説明したって心変わりはしません。
CPUの好き嫌いとタレントの好き嫌いの判断は同じような範疇なのでしょうか?
そんな訳の分からない、曖昧な理由で使うCPUを決めているのでしょうか?
私にはそうは思えません。

PICを嫌っている人は嫌いな理由がちゃんとあります。
それは美人/不美人の判定のような感覚的なものではありません。
たとえば私の場合、いくつか8ビットPICを嫌いな理由がありますが、
一つだけ挙げるとすれば、タイムスライスが出来ない、です。
0877774ワット発電中さん垢版2018/06/23(土) 16:40:15.49ID:ja1wLIk9
5 :774ワット発電中さん [sage] :2018/05/02(水) 01:20:40.75 ID:qrQAGo28
PICは他メーカーの同規模のMCUに比べて非常にエラッタ(バグ)が多いので注意
機能が使い物にならないものやスペックの性能が出ないものも多く存在する
メーカーが把握しつつも公開されてないなかったりする

6 :774ワット発電中さん [sage] :2018/05/02(水) 01:28:19.06 ID:qrQAGo28
本当にPICが適切か良く考えてから選びましょう

主な競合MCU
8bit AVR / STM8
16bit RL78 / MSP430
32bit STM32 / LPC / Kinetis / RX
0878774ワット発電中さん垢版2018/06/23(土) 17:04:58.40ID:s1oNYlPs
○○ができない→○○を使おうとしている人には貴重な情報。

○○が他のCPUに比べて多い→他のCPUと比較した根拠が必要。

エラッタに関しては、他のCPUと比較したときの客観的データが出てきたことがない。ばかばかしい。

逆に、特に直接のメーカーサポートが受けられないアマチュアユーザーの場合、
国内外で自分が使っているときに知りえた情報を掲示板に書くようなようなユーザーが
アンチも含めて多いPICはエラッタ情報を共有できて良いんじゃないかとさえ思う。

俺も仕事だとほかのCPUを使ってるけど、そこで知りえた問題はネットに書いたりしないよ。
そういう意味ではアマチュアユーザー「も」多く、掲示板を含めたネットでの情報交換が活発な
CPUは悪くはない。
0879774ワット発電中さん垢版2018/06/23(土) 17:11:48.57ID:ja1wLIk9
仕事で使ってて
バグで全く使えない機能を堂々とスペックとして謳ってるのはPIC以外にある?

おれはPICしか知らん

いずれにしろここはPICのスレだから
他のマイコンのバグはスレチ
0880774ワット発電中さん垢版2018/06/23(土) 17:14:21.50ID:ja1wLIk9
見つかったばかりのバグならともかく
何年も前からわかってる問題でも
0881774ワット発電中さん垢版2018/06/23(土) 18:12:46.36ID:ja1wLIk9
PIC10 OR PIC12 OR PIC16 OR PIC24 OR PIC32
2600000件

STM32
7600000件

(PIC10 OR PIC12 OR PIC16 OR PIC24 OR PIC32) (エラッタ OR errata)
543000件

STM32 (エラッタ OR errata)
25800件 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0882774ワット発電中さん垢版2018/06/23(土) 18:16:11.69ID:ja1wLIk9
>>878
> 国内外で自分が使っているときに知りえた情報を掲示板に書くようなようなユーザーがアンチも含めて多いPIC

客観的データをよろしくね
0883774ワット発電中さん垢版2018/06/23(土) 18:30:05.25ID:s1oNYlPs
>>879-880
>他のマイコンのバグはスレチ
もし、その態度で逃げるつもりなら、他のマイコンとの比較の上で否定的な表現はするべきじゃないと思います。

>バグで全く使えない機能を堂々とスペックとして謳ってるのはPIC以外にある?
その部分については、なんだかなあ、という気はするけど下のようなことはあるかもね。

■意図的に直さない
PICについては、異常だと感じるほどに修正に慎重です。
コンパイラも古いものも長期間にわたってダウンロードできるようにしています。

ICでもソフトウェアでも、「何かを直したら、別の何かがおかしくなっている」というのはわりとよくある話です。
現状で動いているアプリケーションがある以上、別の何かをおかしくしてしまうリスクを避けるという
意図があるのかもしれません。(というのは想像だから、違うだろ!って思った人はメーカーに聞いた方がいい)

大昔のマイコンでも(値段は高くなっても)製造は維持しているものが多いのがPICの特徴のひとつです。
それを使っているアプリケーションの動作を変えない、変える恐れのあることを避けるという思想があっても不思議ではありません。

データシートの記述を修正する代わりにエラッタ情報をメンテしているふうなところはあります。
それは企業風土に近いものがあるように思います。


■全く使えないのか、その使い方なら全く使えないのか、まあまあなら使えるのか
もし、ある種の使い方ならまあまあ使える問題であって、割と多くの人がそのある種の使い方でええやんと
思うものなら、まあそんなもんじゃないでしょうか。

回避策が掲示板で共有されてて、「俺の使い方なら、それじゃダメなんだよ」って言う人は他のCPUを選べばいいし、
「まあええやん」と思う人は、まあええのではないかと思います。


あと、その人の環境次第という面もありますね。

・AというCPUにはバグがあって、やや性能を落とした使い方をしないといけないけれど、情報も豊富で、よく知っている人がまわりにいる。
・BというCPUにはバグは明らかにはなっていない。誰かが根拠を示さずAよりマシだと言ってる。まわりに使っている人がいない。
・BというCPUにはバグは明らかにはなっていない。Aほど情報は豊かではないけど、よく知っている人がまわりにいて、使い方について教えてくれる。

ほかにもいろいろなパターンがあるでしょうね。
0884774ワット発電中さん垢版2018/06/23(土) 18:35:14.16ID:s1oNYlPs
>>882
何かと比較して多い、と言ってるわけではないので、客観的データはないよ。
いろいろと検索していて、ふだんから「PICは自分が期待する基準において情報の絶対量が多い」と
感じている人は同意してくれればいいし、
「PICは絶対的に情報が少ない」と感じている人は同意してくれなくていい。
0885774ワット発電中さん垢版2018/06/23(土) 18:37:59.48ID:s1oNYlPs
でも、PICの情報は良い意味でも不幸な意味でも、日本全国の傾向をすくえば
相対的には多い方じゃないですかね。
0888774ワット発電中さん垢版2018/06/23(土) 18:53:36.34ID:s1oNYlPs
>>886
シングルスタンダードで通せる人なんていないし、求める方がおかしいのですよ。

誤解されているかもしれませんが>>881はエラッタの数の客観的データではありません。
あえていえば、ネットにでてきたキーワードのカウントです。

>>887
その理由に関心がある人がMicrochipに問い合わせをすればいいのではないですか?
俺は潔癖症でもないのでそのあたりはどうでもいいです。
0891774ワット発電中さん垢版2018/06/23(土) 20:11:00.15ID:qJm9Aomf
ことほど左様に初心者にはハードル(not敷居)が高いPICでしたとさ。
0892774ワット発電中さん垢版2018/06/23(土) 20:11:50.68ID:G5V8Zcol
先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。

俺は詳しいんだ、凄いだろと言う雑談は、
あっちのスレでお願いします。
0893774ワット発電中さん垢版2018/06/23(土) 21:35:25.14ID:nRMW4a/S
シッテル披露する奴は人の話を聞かないもんだよ
披露するのが目的

基本スルーがセオリーなんだけど
披露自慢人が複数いると
まぁ、こうなるわな
0894774ワット発電中さん垢版2018/06/23(土) 22:20:59.76ID:KUsZkuRg
ついでにエラッタ議論も専用スレで
0895774ワット発電中さん垢版2018/06/23(土) 22:25:51.71ID:jNJ+jrw+
もうネタなんてないだろうし
いまさらPICをはじめようなんて人もなかなかいない
作り話でつないでもしょうがない
このスレ自体不要では?
0897774ワット発電中さん垢版2018/06/24(日) 04:40:28.59ID:Pvr7sMv0
PICでスタートする人も多いですよ。
・ネッなど日本中に仲間が多い
・情報量がAVRの比じゃなく多い
・パッケージのバリエーションが多い
・秋月で安価に買える
・内蔵周辺モジュールが豊富
0898774ワット発電中さん垢版2018/06/24(日) 06:14:44.40ID:Bw5Z947a
神様にお願いしといた。
「PICでスタートして後で後悔する、なんて初心者が居なくなりますように」って。

しかし、<美人とブス、どちらでも好きなほうとつきあえる>、という状況で
わざわざブスを推薦するって >>897 は罪作りな奴だなw
後で恨まれるぞww
0899774ワット発電中さん垢版2018/06/24(日) 06:59:19.70ID:IUiafEkC
ブス!とか言いながら、その子が気になってしょうがない小学生w
0900774ワット発電中さん垢版2018/06/24(日) 08:36:53.76ID:qfY2MA6a
AVR(のアーキテクチャ)は気になるけど、ardunoがウザイ。
AVRもPICみたいに簡易なデバッガが出て欲しいな
0902774ワット発電中さん垢版2018/06/24(日) 08:55:42.43ID:z1CV/Wzj
>AVRもPICみたいに簡易なデバッガが出て欲しいな
あるのでは? AVRスレで尋ねてみれば?
0903774ワット発電中さん垢版2018/06/24(日) 09:06:50.75ID:GnWhyKXX
LPC-Link2 2800円
ST-LINK/V2 3000円
MiniProg1 3650円
PICkit4 5700円
Atmel ICE 11000円

Microchipは高い
0907774ワット発電中さん垢版2018/06/24(日) 09:19:31.82ID:ROB4jaM6
>>905
僕 英語読めません、って素直に白状したら?
0910774ワット発電中さん垢版2018/06/24(日) 10:53:47.93ID:Pvr7sMv0
先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。

俺は詳しいんだ凄いだろう、AVRは凄いんだ、
と言う雑談は、 あっちのスレでお願いします。
0911774ワット発電中さん垢版2018/06/24(日) 10:54:53.43ID:u0+igbfY
マイコンプログラミングをはじめるなら
無難に32bitが良いよ
8ビットは色々と特殊すぎて
0913774ワット発電中さん垢版2018/06/24(日) 10:59:21.83ID:vOANkRU+
PIC←→AVR
フルーク←→フルーク以外
VHS←→β
非喫煙者←→喫煙者
・・・

非主流は姦しい・・・
0917774ワット発電中さん垢版2018/06/24(日) 12:35:58.24ID:u0+igbfY
次は

カラー画面
アニメの高画質化
表面実装部品による小型化
赤外リモコン送信機能
赤外リモコン受信
リモコン&メニューによる設定
USBを使ってPCから設定

この辺に挑戦してください
0918774ワット発電中さん垢版2018/06/24(日) 12:43:26.96ID:u0+igbfY
ROMサイズが必要ならこの辺を
PIC32MM 20pin 64KB
PIC32MM 28pin 256KB

基板設計もぜひ挑戦してみよう
今はとても安く作れます
0919774ワット発電中さん垢版2018/06/24(日) 12:47:09.86ID:u0+igbfY
今時電源がトグルスイッチも無いよね

自己保持回路による待機電力ゼロ化
でも良いし
リモコン受信可能なまま省待機電力に挑戦
でも良い
0920774ワット発電中さん垢版2018/06/24(日) 12:58:32.02ID:u0+igbfY
砂時計だから加速度センサで起動が普通か
1秒に1回くらい値を見て値が大きく変わったら起動

電源は3系統
PIC, 加速度センサ, 画面
0921774ワット発電中さん垢版2018/06/24(日) 13:18:01.46ID:kwQ67rjL
DC/DCのenableをプッシュボタンで起動して、
動作中はPICがenableを保持すれば、
オートパワーオフが成立しそうなんだが、
1ボタンでそれをやる回路が思いつかなかった。
PICからのenable信号がボタンと競合してしまう。
ダイオードとかで何とかなる?

20ピンの32MM、気になる。
0922774ワット発電中さん垢版2018/06/24(日) 13:24:37.48ID:7ud+1Wfz
>>921
ダイオード使ってもいいし、enableを駆動できる程度に
pic出力に1K位の抵抗直列に入れればぶつかってもok
0926774ワット発電中さん垢版2018/06/24(日) 13:44:27.29ID:kwQ67rjL
>>925
ボタン1個で、起動、砂時計容量変更、ブザーストップをさせたい。
電池はDC/DCに直結するが、動作時のみenableにする。
DC/DCはGNDに落とすとenableになる。

これが解けなかった。
0927774ワット発電中さん垢版2018/06/24(日) 13:55:11.91ID:KhRIf9c7
プッシュSW1回路の場合、どの電源系につなぐかが面倒くさそう。

卑怯な方法。二回路二接点プッシュスイッチ使い1回路を電源ON用に使う。

別の方法も考えられると思うけど、電源系の電圧が書かれた回路図がないと分からないな。
0929774ワット発電中さん垢版2018/06/24(日) 16:43:22.81ID:wgVV9TG7
XC8について質問さしてください

XC8で@(アット)マークを付けたら変数領域を指定のアドレスへ配置出来る
と思うんですが、この機能を使えば

myStruct1 AAAA @ 0x500;
myStruct2 BBBB @ 0x500;

と言う感じであえて同じアドレスに2つの変数を配置して、あたかも共用体の
ような使い方が出来ますでしょうか?
0930774ワット発電中さん垢版2018/06/24(日) 16:47:34.64ID:2J01mMpu
素直に共用体使ったら?
0934774ワット発電中さん垢版2018/06/24(日) 21:26:44.93ID:hTUJK9g6
賢いコンパイラだと、まずいかも。
たしか、cには、異なるタイプのポインタは同じものを指さない
と言う縛りがあってそれを使った最適化をするコンパイラがある。
アホなコンパイラなら、そんな最適化はしないだろう
それでもvolatileはつけとくべきね。
0938774ワット発電中さん垢版2018/06/24(日) 22:47:18.36ID:3e3r9nFD
enableの代わりにトランジスタ
マイコンからの制御にデジトラ

なところが違う
0946774ワット発電中さん垢版2018/06/25(月) 06:49:07.59ID:mPzchdJZ
そもそも電源の選定は正しかったのか。

PICと液晶は2.7V<Vcc<5Vだから、18650直結なら簡単だった。

PchMOSFETをDCDC上流に入れた場合、バッテリ電圧の下限はどの程度?
1.0Vで動かなきゃNiMH×1には使えない。
0948774ワット発電中さん垢版2018/06/25(月) 08:27:22.48ID:8zCYKMmx
>>940だと、
スイッチを押すとスイッチの抵抗側の電圧が変わるようにしておいてADCで検出
とか
0949774ワット発電中さん垢版2018/06/25(月) 10:41:09.73ID:GonHOTXi
>>929
出来ることはできるが、
変数のアドレス管理誰がやるんだよ
それは普通、アドレスマップのレジスタに対して使う機能
0953774ワット発電中さん垢版2018/06/25(月) 12:46:28.44ID:sQsmhZbM
色々な使い方があるのに乏しい経験で「普通」とかいってわざわざ用途を絞っちゃう
お前ソフトに向いてない
0954774ワット発電中さん垢版2018/06/25(月) 19:12:15.18ID:GonHOTXi
アホカ
ただのグローバル変数に絶対アドレス指定したらそこが他で使われていないか、
リンカのマップファイルみて一々確認しなきゃならんだろ
そんなめんどくさいことやる馬鹿いねーよという意味だよ
(普通に共用体で宣言すればいい)
それともあれか、 @ 機能つかったらそのアドレスは他で使われないように
コンパイラが管理してくれるのか?
ヒープの真ん中でも避けてくれるのか?w
それに「普通」ってのが用途を絞っていると断言している根拠はなんだよ
勝手に決めつけるなよw
0957774ワット発電中さん垢版2018/06/25(月) 19:49:57.38ID:RbY6Qp1Q
だから >949
0958774ワット発電中さん垢版2018/06/25(月) 20:13:41.49ID:8zCYKMmx
アドレス指定したいっていう人に
アドレス管理誰がやるんだよって
頭おかしい
0959774ワット発電中さん垢版2018/06/25(月) 20:24:20.92ID:I7aJr4QL
>>954
普通のメモリマップドIOの割り当てをコンパイラやリンカがどうやると思ってるんだろ
0960774ワット発電中さん垢版2018/06/25(月) 21:25:38.07ID:tW+lH6r5
普通にアドレス指定してるが・・・・・何か?????
0962774ワット発電中さん垢版2018/06/25(月) 23:21:21.99ID:CdGAXxfw
IOやSFRのアドレスと、変数のアドレスをごっちゃにしてはややこしくなる。
変数のアドレスはコンパイラ、リンカに任せればいいという話でしょね。

いやいや、アドレス指定したいって話なんだから、という話もわかるのだけど、
共用体ではなんであかんのでしょ、って疑問はあるのかも。俺もまあそう思う。
0964774ワット発電中さん垢版2018/06/25(月) 23:24:03.21ID:8zCYKMmx
>>962
疑問に思ったとしても質問の前提だから

素直に共用体にしたくない理由はいくつか考えられるし
共用体はおまけでアドレス指定が主な目的かもしれない
0965774ワット発電中さん垢版2018/06/25(月) 23:26:06.77ID:8zCYKMmx
質問に答えるだけならその理由は不要
代替案を知りたいなら理由も書くでしょう
0966774ワット発電中さん垢版2018/06/25(月) 23:28:40.09ID:8zCYKMmx
変数のアドレスを指定したい理由も色々と考えられます
経験の浅い人はそういう発想もないでしょうけど
0967774ワット発電中さん垢版2018/06/25(月) 23:34:40.64ID:8zCYKMmx
質問者も、
やって見ればすぐわかることをいちいち質問しないでやってみればいいんですよ
出来たならここに理由と共にテクニックとして紹介する
初心者同士そうやって高め合えば良い
0968774ワット発電中さん垢版2018/06/26(火) 00:05:08.91ID:MH2X+Y+e
>>964, >>966
>素直に共用体にしたくない理由はいくつか考えられる
アドレス指定とは別にして、共用体にしたくない理由って具体的にどんなこと
でしょうか。


>変数のアドレスを指定したい理由も色々と考えられます
昔のパソコンでVRAMをワークエリアに使うようなときにはアドレス指定をしていた
けれど、8bit PIC で変数のアドレスを指定するほかないようようなことって
どんなことなんでしょうか。

いろいろ考えられるうちの3個4個ぐらいを教えていただけると勉強になります。

と、こういう疑問は持ってますが、技法としての元質問の価値はあると思ってます。
必要なら自分でやっつければ済むことですけど。
0969774ワット発電中さん垢版2018/06/26(火) 06:52:22.86ID:U2j8GMB0
>>968

●共用体
◇文字数の削減や移植の手間や見易さの為
(※無名共用体が使えない場合)

◇ファイルやモジュールの分離性確保の為
・同時にインクルード出来ないヘッダ
・コンパイル依存性(コンパイル時間)
・ライブラリ化

◇共用体に出来ない構造体への対応
(※C++の場合)
0970774ワット発電中さん垢版2018/06/26(火) 07:09:48.97ID:U2j8GMB0
>>968

●アドレス指定したい場合

◇部分ビルドする場合のインターフェース
ブートローダーとアプリケーションや
複数のアプリケーションなど
ROMの複数エリアを別々にビルドする場合のインターフェースとし
エントリーポイントのテーブルなど

◇周辺モジュールとのインターフェース
DMAのバッファなどで特定の番地にしたい場合

◇高速化や簡略化の為
配列の先頭や終端のアドレスが特定の値で有ることで高速化やコードの簡略化を行う
+と&でリングバッファのポインタを更新するなど

◇セクタ考慮
ROMのセクタやRAMのバンクなどを考慮したい場合
境界を跨ぎたくないとかセクタ先頭からはじめたいとか

◇デバッグ性
よくデバッガで書き換える変数の固定アドレス化
外部からアドレス指定でアクセスしたい変数の固定アドレス化
0972774ワット発電中さん垢版2018/06/26(火) 07:33:03.70ID:MH2X+Y+e
>>969-971
共用体を避ける理由については、正直なところ俺にはピンとこないものでしたが、
アドレス指定については思い当たるところもなくはなく。
ただ、とても個人的な事情にすぎないことで、俺のPICの使い方ではあまり縁がないものばかりでした。

あと、俺の思い込みもありました。8ビットPICってPIC18も含まれるのですね。

ありがとうございました。
0973774ワット発電中さん垢版2018/06/26(火) 08:11:42.65ID:W4z6KEwg
>>972
アドレス固定にすれば、エンディアンとかの考慮要らないから、移植しやすい とかかな?
0975774ワット発電中さん垢版2018/06/26(火) 09:48:57.87ID:oi/2MisI
>>973
アドレス指定をするとエンディアンの何が解決出来るって?
少なくとも考慮要らないなんてことはない
0976774ワット発電中さん垢版2018/06/26(火) 10:18:31.43ID:+FLk9oh3
>929
GCC (XC8含め) のリンカは別の名前が同じアドレスをさしていても問題ない。
だからやろうと思えば適当にリンカへの指示を加えることで可能にはなる。
ただ、リンカへの明示的な指示なしでコンパイラが、暗黙のうちにリンカでエラーにならないように
セクションや名前を選定してくれるかは別で、

ゼロ以外で初期してたらだめ、
ゼロで初期化するやつは初期化しないやつとならマップ OK、
初期化してなければOK、

とかそんな感じになると思うけど、
GCC でファイルをまたぐ名前の扱いが 2012年あたりからちょいちょい変わってるので
XC の元ネタの GCCの版によって挙動がかわるかもだから保証はしない。

あと、異なる名前が同じアドレスを占めていて、それを一つの関数内で両方の名前を扱うなら、最適化で O2 以上は禁止な。
gcc -O2 は異なる名前は異なるアドレスをアクセスする前提で最適化する。volatile 関係ない。
ここ 2年くらいエイリアスの最適化の動作確認してないけど変わっとらんと思う。
0977774ワット発電中さん垢版2018/06/26(火) 13:08:30.85ID:WR7nqvMw
XC8ってアドレス指定すると何の警告も無しに同じエリアに値を割り振るんだね
怖い怖い
0978774ワット発電中さん垢版2018/06/26(火) 13:18:35.17ID:WR7nqvMw
最適化に関してはunionでも悪影響が無い保証なんて無いよね

volatileは読み書きの順番や回数はバイナリ上では保証されるから意味が無いことは無いけど
最適化が非常に制限されるからなるべく使いたくない

そもそも、最適化で変わるような関連が密なデータであれば素直にunionにした方が便利な事が多いと思う
0980774ワット発電中さん垢版2018/06/26(火) 22:26:29.21ID:KQN0txZ5
>>976
>> gcc -O2 は異なる名前は異なるアドレスをアクセスする前提で最適化する。volatile 関係ない。

これ、gccドキュメントのどこに書いてある?
前に書いたように、異なるポインタタイプは同じものを指さないという仮定=strict-aliasingルールはドキュメント上にある。
-O2はstrict-aliasingを仮定して最適化するとドキュメントに書いてある。
GCCのドキュメント(gcc6のね)から、

'-fstrict-aliasing'
前略
In particular, an object of one type is assumed never to reside at the
same address as an object of a different type, unless the types are
almost the same. For example, an 'unsigned int' can alias an
'int', but not a 'void*' or a 'double'. A character type may alias
any other type.
中略
The '-fstrict-aliasing' option is enabled at levels '-O2', '-O3', '-Os'.

volatile周りも、理解してないね。
0981774ワット発電中さん垢版2018/06/26(火) 22:39:29.47ID:KQN0txZ5
>>976
念のため例つけとくと、

void f(int *x, int *y)
{
int a = *x;
// a == *x に決まっている。
*y = 0;
// これ以降は、a != *xかもしれないと考えて最適化する

ということだからね。
同一視の可能性は名前じゃなく、ポインタの型だよ。
なお、int *とunsigned int *は類似の型なので、同一型のように扱う。
0982774ワット発電中さん垢版2018/06/27(水) 00:47:47.51ID:Qlu5v5Vu
先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。

俺は詳しいんだ凄いだろう と言う雑談は、 あっちのスレでお願いします。
0983774ワット発電中さん垢版2018/06/27(水) 01:11:03.22ID:9TsXY6B2
>>976
>>980
話題がそれてるけど
ポインタじゃなくてスタティックな変数への直接アクセスの話
unionとunionじゃない同じ番地の変数が同じように扱えるか
が質問内容

一旦ポインタを経由したら最適化が同じになることは容易に想像がつく
コードはポインタの中身に依存しないので
0990774ワット発電中さん垢版2018/06/29(金) 18:23:25.68ID:VAjBY0do
きみに
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 19時間 39分 25秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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