X



トップページ電気・電子
1002コメント383KB
マイコンソフト 悩み事相談室
レス数が1000を超えています。これ以上書き込みはできません。
0001PIC24FV32KA304
垢版 |
2014/09/11(木) 14:10:27.62ID:9fiLP72Z
.
  ∧ ∧    
  ( ´・ω・) < コンフィグって何? 昆布なら知ってる。  ボラチルって何? ボラは魚だよ。
  ( ∪ ∪   ,.-、     ,.-、   ,.-、     ,.-、
  と__)__)  (,,■)   (,,■)  (,,■)   (,,■)
         PIC    AVR  H8    ARM

  学校でC言語を習ったことがあるので「楽勝でしょ」って、マイコンを始めたけど、
  わからないことだらけ。誰か教えて!

  PCとは、別世界のマイコンのソフト。難しいよね。

  ツールの使い方、ツールの設定、マイコン特有のC言語の書き方、
  「デバッグモードにプログラミングモード。何?」 Eclips, Emacs って何?
  VBAしか知らないよぉ、という人まで、
  各社マイコンに関するマイコンソフト相談室です。

  質問者は、「初心者質問スレ」の>>1を見て、分かり易く質問を書いてね。
  回答者は、威張らない、バカにしない、言葉使い注意で、親切に教えてあげてね。

  あっ、そうそう。 
  ハードウェアに関する質問は、それぞれのマイコンのスレに、達人がいるから。

  では、質問、ドゾ〜
0952946
垢版 |
2016/08/01(月) 18:34:43.55ID:9OnHLFU2
今気が付いたけど、
keisankekka = 2000 - sokutei * 0.17;
を四捨五入して整数化したものと、
keisankekka = (200050L-sokutei*17L)/100;
とでは結果が異なる場合があるのは内緒なw

sokuteiが5750の場合とかね。
0.17が二進の浮動小数で正確に表現出来ない事に起因するので諦めるしか!
0953946
垢版 |
2016/08/01(月) 19:05:45.88ID:9OnHLFU2
一方で、sokutei∈[0, 10000](整数)の範囲で、
keisankekka = (200050L-sokutei*17L)/100;
に、
keisankekka = (1048838144L - sokutei * 89129L)>>19;
を一致させようとすると、1048838144Lに398足して、
keisankekka = (1048838542L - sokutei * 89129L)>>19;
って微調整すればいいのだけど、こんな事やってられないよなぁw
0957946
垢版 |
2016/08/02(火) 07:44:33.70ID:qAhqgg7j
>>955-956
ターゲットに依るんでしょうね。
実行速度が問題になる場合は、実機でベンチマーク取って
どの方法にするかを決めるしか!
0958774ワット発電中さん
垢版 |
2016/08/02(火) 12:55:45.51ID:SGjLoi+o
プログラムROMってね何%まで使えますか?
気持ち悪いので、いつも50%くらいで使っているんですが。
70%を超えると、ドキドキしてしまいます。
0959774ワット発電中さん
垢版 |
2016/08/02(火) 13:30:25.81ID:5tz7cI5t
なににドキドキするのかわかりませんが、基本 100% 使えるでしょう。
それよりあなたの書き込みの方がキモいです。
0960774ワット発電中さん
垢版 |
2016/08/02(火) 18:41:17.44ID:6TG4VSSB
>>957
やっぱ実機で検証して満足行くかですね。
しかし、普段Cでしか書かないので同じ計算量でもintだと出来たHEXの容量が少ないlongやdoubleだと容量が大きい、程度の認識しか無いのですが命令数も多い少ない有るのでしょうか?
自分もMikroCのフリーなので2kワードの制限で使ってるので興味深いです。
0961774ワット発電中さん
垢版 |
2016/08/02(火) 21:31:39.45ID:5tz7cI5t
コンパイラにアセンブラコード吐かせてどんな処理になってるかみたりしますね。
まあ普通に思いつくコード書いてれば、たいていそれがほぼ最適なコードになるんですがね。
無理してポインタとか駆使しても、見にくいだけで大して効果はないという。
0962946
垢版 |
2016/08/03(水) 02:19:23.15ID:eKxjBQ58
さて、
0.17≒2^13/48188==2^11/12047
なので、
2000 + sokutei * 0.17 + 0.5
≒ (2000 + sokutei * 2^11/12047 + 0.5)*12047/12047
≒ (24100024 + sokutei * 2^11)/12047

これから、

int sokutei;
long keisannkekka; // intでもいいのかも
keisankekka = (24100024L + (long)sokutei<<11)/12047; // 四捨五入

>>948と比較して、定数がひとつだけ16ビット値に収まる様になった。
除算は乗算よりも演算速度が不利な場合があるけど、それよりも、
メモリを削るのを優先させたい場合もあると思う。
0963774ワット発電中さん
垢版 |
2016/08/03(水) 02:31:40.51ID:3GJWCb0I
メモリーが足りないときは、何でもやりますよね。
未使用の周辺機能の設定レジスタをRAM代わりにするとか。
0964946
垢版 |
2016/08/03(水) 02:44:18.95ID:etjzpf9Y
>>962について、>>953みたいな事を試みると、
24100024Lに99足してやると良くて、

keisankekka = (24100123L + (long)sokutei<<11)/12047; // 四捨五入
これも手作業ではやってらんないw
0965774ワット発電中さん
垢版 |
2016/08/03(水) 02:50:42.49ID:a6FUjuf/
ん〜〜、自分で決められる立場にない人ばっかりなんだろうとは思うけど
今は最低でも Cortex-M0 使うことに何の障害もないはず

発注元がバカだったとしても、「今はこういうマイコンが出てます」って
提案して「それはダメだ」とか拒絶されることって、少なくとも自分の
経験ではないんだけどな
0966946
垢版 |
2016/08/03(水) 03:22:22.00ID:etjzpf9Y
>>965
8051は永遠に不滅でぇーす!w

…触った事ないけどww
USBつきとか頭おかしい←絶賛
ttp://www.atmel.com/ja/jp/products/microcontrollers/8051architecture/usb_mcus.aspx
0967946
垢版 |
2016/08/03(水) 03:47:33.08ID:etjzpf9Y
>>952みたいな事態に何でなるのかと云うと、計算過程で、
0.17 * sokutei ≡ 0.5(mod 1)
になる様なsokuteiが存在して(50, 150, 250, ...)、かつ
0.17 * sokuteiを含む式の値を正確に計算出来ないからなので、
0.17ではない他の値の場合には当て嵌まらないのに注意してね。

つか偶数丸めなんか知らんぞw
みんな真面目に偶数丸めになる様に組んでる?
0968774ワット発電中さん
垢版 |
2016/08/03(水) 03:51:40.57ID:R/8mJAlX
まだやってたのか・・
コンパイラは最適化最強にするとこんな感じのコード吐くんだよ↓

int sokutei;
int keisankekka;
keisankekka = 2000 - (int)((11142L * sokutei) >> 16);

この程度に四捨五入なんていらんだろ。
どうしても四捨五入したいならこうだが時間とメモリの無駄。
keisankekka = 2000 - ((int)((22284L * sokutei) >> 16 + 1) >> 1);
0969946
垢版 |
2016/08/03(水) 23:33:54.18ID:8j5SlpDn
>>968
をー
0971774ワット発電中さん
垢版 |
2016/08/05(金) 03:35:47.45ID:4eGtmERS
みなさんに質問です。

世の中に、バグのないソフトウェアって、あると思いますか?
JRの切符と改札のソフトは、バグを潰しに潰したのか、異常は出ないですよね。
銀行もスゴイ。自動車は・・・
0973774ワット発電中さん
垢版 |
2016/08/05(金) 07:23:10.88ID:+YI0VmUa
ソフトウェアにバグが存在しないことは証明できない、と誰かが証明していた。
0975774ワット発電中さん
垢版 |
2016/08/05(金) 10:07:31.16ID:h0pmrqNf
確かに、巷では、バグの80パーセントは10年たっても
発見されていない場合が多いともいわれるし
20年後にバグが発見されることもある・・・・
0976774ワット発電中さん
垢版 |
2016/08/05(金) 14:03:37.40ID:EkITNEpO
>LEDチカチカくらいならバグなしに出来そうだけど。
でも、電源on時に起動しないとか・・・ これはハードウェアのバグか。
ちなみに、プログラム動作用にLED1個を贅沢に付けているのは、この私です。
0977774ワット発電中さん
垢版 |
2016/08/05(金) 14:20:51.57ID:3nZbY4fd
>プログラム動作用にLED1個を
動作確認用に、なら俺も付けてる。
LEDと抵抗、合わせてたった2円だしな。
0978774ワット発電中さん
垢版 |
2016/08/05(金) 14:55:51.91ID:XVaO62hW
え!
0980774ワット発電中さん
垢版 |
2016/08/05(金) 18:32:38.94ID:AfWXBVQB
四捨五入ですらバグが入り込む事があるんだぜw
ttp://d.hatena.ne.jp/hnw/20160702
0981774ワット発電中さん
垢版 |
2016/08/05(金) 20:35:56.44ID:EkITNEpO
LED 1つでも、点滅してくれていると「おっ、タイマ割り込み、ちゃんと動いてるね」と
わかって、いい。
タイマー割り込みじゃなくて、メインループでon/offするのが筋だろうけどね。
0982774ワット発電中さん
垢版 |
2016/08/05(金) 23:07:16.22ID:krW4Xwpu
10年くらい前になるけど、ボードにJTAGデバッグ用のコネクタ付けようとしたら
派遣先の責任者に、「実運用時には、シリアルポートからプログラム及び
FPGAのコンフィグデータをダウンロードしてフラッシュメモリに書き込むから
(コストダウンのために)必要ない」って言われた。

自分は、ハードだけの担当で、派遣期間も終わりに近かったから
言われた通りに(回路図だけ書いて)おさらばしたら、半年後に
他の仕事してるときに、「頼むから週2日とかでいいから来てくれ」って
言われて、1か月ほど週2日で行った。

すでに修羅場は過ぎてたみたいだけど、聞いたところによると、その前の
2か月ほどは(派遣先の正社員が毎日午前3時に退社とか)地獄だったらしい。

フラッシュメモリへの書き込みプログラムが出来損ないで、30分とか
掛かってたこともあるんだけど、ホント、自分で開発やったことない連中は
デバッグ(官僚用語では「評価」とか言うらしいけどw)環境軽視してるんだなって
痛感した、今ではいい思い出
0983774ワット発電中さん
垢版 |
2016/08/05(金) 23:48:16.08ID:EkITNEpO
へー、スゴイね。
連日午前3時までやって、翌日はちゃんし8時半とか9時に来るの?

デバッグと同じくらい、チェック(検査)も舐めちゃ行けない。
「あの電圧を測定するくらいなら、1分もかからずにできるな」と思ったら
測定のための線だしの段取りだけで1時間とかザラ。測定は5秒ね。

アートワークの時に出してもらっとけじ良かったな、と後悔しても遅いね。
とにかく端子やチェックランドは付けて置いて損は無いよね。

実務で徹夜を何度もやったことのある人なら、わかってくれる
0985774ワット発電中さん
垢版 |
2016/08/06(土) 00:15:04.86ID:gxSFR8c7
例外処理にバグがあったとして、
その例外処理が発生する確率が極めて少ない確率だった場合、
バグは発生しないように見える状態が継続します。
そんなもん。
0989774ワット発電中さん
垢版 |
2016/08/06(土) 03:37:56.22ID:6xfp2KvI
1カ所変更したら、全機能をチェックし直す。これが基本ですよね。
やってられません。
0991774ワット発電中さん
垢版 |
2016/08/06(土) 06:52:00.27ID:VxIu7htE
>>989
自動化出来るとこは自動化しておくとかって思ったけど、
このスレが対象にしてるやつって、PC内だけでチェックが完結する訳では
ないんでしょうねぇ…。
0992774ワット発電中さん
垢版 |
2016/08/06(土) 09:02:04.38ID:UUWNijER
pc内では完結しなくても、pc繋いだら完結するのが出来たら良いかな。
0993774ワット発電中さん
垢版 |
2016/08/06(土) 09:46:40.91ID:uYYuioVm
一箇所変更したら全機能チェックしないと逆にバグで
やられてしまいます。
俗に言うパッチあててそのまま納入したらバグの嵐になったことがある。
0994774ワット発電中さん
垢版 |
2016/08/06(土) 14:27:35.39ID:oKfHeE5K
// コメント1行だけの追加でも、やっぱり全チェックでしょうか?
0995774ワット発電中さん
垢版 |
2016/08/06(土) 19:11:53.91ID:/lw0n104
>>994
行番号とかのデバッグ用の情報無しでコンパイルしたバイナリが、
コメント追加の有無で(バイナリに埋め込まれたタイムスタンプを除いて)
変化しないのなら、気にしないのも手ではないかと。

一致しないのならコンパイラが腐ってるので捨て!
…る訳にはいかないのだろうな。メーカー純正ツールの場合は。
0996774ワット発電中さん
垢版 |
2016/08/08(月) 01:09:01.86ID:nxeZ/gD7
コメント行追加とかデバッグON-OFFでオブジェクトが違うとか
今時ないと思うんだけど、甘いかな?
0997774ワット発電中さん
垢版 |
2016/08/08(月) 14:55:28.31ID:PfS2CIS7
そうだと思う。
けど、もしかしたら・・・と思うと。

チェックに使ったデバッグルーチンも「込み」で完成品にすることがほとんど。
0999774ワット発電中さん
垢版 |
2016/08/12(金) 19:02:35.30ID:du2V288Y
123
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 701日 4時間 52分 41秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。

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