.
∧ ∧
( ´・ω・) < コンフィグって何? 昆布なら知ってる。 ボラチルって何? ボラは魚だよ。
( ∪ ∪ ,.-、 ,.-、 ,.-、 ,.-、
と__)__) (,,■) (,,■) (,,■) (,,■)
PIC AVR H8 ARM
学校でC言語を習ったことがあるので「楽勝でしょ」って、マイコンを始めたけど、
わからないことだらけ。誰か教えて!
PCとは、別世界のマイコンのソフト。難しいよね。
ツールの使い方、ツールの設定、マイコン特有のC言語の書き方、
「デバッグモードにプログラミングモード。何?」 Eclips, Emacs って何?
VBAしか知らないよぉ、という人まで、
各社マイコンに関するマイコンソフト相談室です。
質問者は、「初心者質問スレ」の>>1を見て、分かり易く質問を書いてね。
回答者は、威張らない、バカにしない、言葉使い注意で、親切に教えてあげてね。
あっ、そうそう。
ハードウェアに関する質問は、それぞれのマイコンのスレに、達人がいるから。
では、質問、ドゾ〜 今気が付いたけど、
keisankekka = 2000 - sokutei * 0.17;
を四捨五入して整数化したものと、
keisankekka = (200050L-sokutei*17L)/100;
とでは結果が異なる場合があるのは内緒なw
sokuteiが5750の場合とかね。
0.17が二進の浮動小数で正確に表現出来ない事に起因するので諦めるしか!
一方で、sokutei∈[0, 10000](整数)の範囲で、
keisankekka = (200050L-sokutei*17L)/100;
に、
keisankekka = (1048838144L - sokutei * 89129L)>>19;
を一致させようとすると、1048838144Lに398足して、
keisankekka = (1048838542L - sokutei * 89129L)>>19;
って微調整すればいいのだけど、こんな事やってられないよなぁw 09579462016/08/02(火) 07:44:33.70ID:qAhqgg7j
>>955-956
ターゲットに依るんでしょうね。
実行速度が問題になる場合は、実機でベンチマーク取って
どの方法にするかを決めるしか! 0958774ワット発電中さん2016/08/02(火) 12:55:45.51ID:SGjLoi+o
プログラムROMってね何%まで使えますか?
気持ち悪いので、いつも50%くらいで使っているんですが。
70%を超えると、ドキドキしてしまいます。
なににドキドキするのかわかりませんが、基本 100% 使えるでしょう。
それよりあなたの書き込みの方がキモいです。
>>957
やっぱ実機で検証して満足行くかですね。
しかし、普段Cでしか書かないので同じ計算量でもintだと出来たHEXの容量が少ないlongやdoubleだと容量が大きい、程度の認識しか無いのですが命令数も多い少ない有るのでしょうか?
自分もMikroCのフリーなので2kワードの制限で使ってるので興味深いです。 コンパイラにアセンブラコード吐かせてどんな処理になってるかみたりしますね。
まあ普通に思いつくコード書いてれば、たいていそれがほぼ最適なコードになるんですがね。
無理してポインタとか駆使しても、見にくいだけで大して効果はないという。
さて、
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代わりにするとか。
>>962について、>>953みたいな事を試みると、
24100024Lに99足してやると良くて、
keisankekka = (24100123L + (long)sokutei<<11)/12047; // 四捨五入
これも手作業ではやってらんないw ん〜〜、自分で決められる立場にない人ばっかりなんだろうとは思うけど
今は最低でも Cortex-M0 使うことに何の障害もないはず
発注元がバカだったとしても、「今はこういうマイコンが出てます」って
提案して「それはダメだ」とか拒絶されることって、少なくとも自分の
経験ではないんだけどな
>>965
8051は永遠に不滅でぇーす!w
…触った事ないけどww
USBつきとか頭おかしい←絶賛
ttp://www.atmel.com/ja/jp/products/microcontrollers/8051architecture/usb_mcus.aspx >>952みたいな事態に何でなるのかと云うと、計算過程で、
0.17 * sokutei ≡ 0.5(mod 1)
になる様なsokuteiが存在して(50, 150, 250, ...)、かつ
0.17 * sokuteiを含む式の値を正確に計算出来ないからなので、
0.17ではない他の値の場合には当て嵌まらないのに注意してね。
つか偶数丸めなんか知らんぞw
みんな真面目に偶数丸めになる様に組んでる? まだやってたのか・・
コンパイラは最適化最強にするとこんな感じのコード吐くんだよ↓
int sokutei;
int keisankekka;
keisankekka = 2000 - (int)((11142L * sokutei) >> 16);
この程度に四捨五入なんていらんだろ。
どうしても四捨五入したいならこうだが時間とメモリの無駄。
keisankekka = 2000 - ((int)((22284L * sokutei) >> 16 + 1) >> 1);
0971774ワット発電中さん2016/08/05(金) 03:35:47.45ID:4eGtmERS
みなさんに質問です。
世の中に、バグのないソフトウェアって、あると思いますか?
JRの切符と改札のソフトは、バグを潰しに潰したのか、異常は出ないですよね。
銀行もスゴイ。自動車は・・・
ソフトウェアにバグが存在しないことは証明できない、と誰かが証明していた。
LEDチカチカくらいならバグなしに出来そうだけど。
0975774ワット発電中さん2016/08/05(金) 10:07:31.16ID:h0pmrqNf
確かに、巷では、バグの80パーセントは10年たっても
発見されていない場合が多いともいわれるし
20年後にバグが発見されることもある・・・・
0976774ワット発電中さん2016/08/05(金) 14:03:37.40ID:EkITNEpO
>LEDチカチカくらいならバグなしに出来そうだけど。
でも、電源on時に起動しないとか・・・ これはハードウェアのバグか。
ちなみに、プログラム動作用にLED1個を贅沢に付けているのは、この私です。
>プログラム動作用に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するのが筋だろうけどね。
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秒ね。
アートワークの時に出してもらっとけじ良かったな、と後悔しても遅いね。
とにかく端子やチェックランドは付けて置いて損は無いよね。
実務で徹夜を何度もやったことのある人なら、わかってくれる
システム設計がテキトーだと後が大変って教訓ならわかる
例外処理にバグがあったとして、
その例外処理が発生する確率が極めて少ない確率だった場合、
バグは発生しないように見える状態が継続します。
そんなもん。
while(1){バグ対策がバグの嵐を呼ぶ。結局、作り直す。}
0989774ワット発電中さん2016/08/06(土) 03:37:56.22ID:6xfp2KvI
1カ所変更したら、全機能をチェックし直す。これが基本ですよね。
やってられません。
>>982
>10年くらい前になるけど
まで読んだ。 0991774ワット発電中さん2016/08/06(土) 06:52:00.27ID:VxIu7htE
>>989
自動化出来るとこは自動化しておくとかって思ったけど、
このスレが対象にしてるやつって、PC内だけでチェックが完結する訳では
ないんでしょうねぇ…。 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
行番号とかのデバッグ用の情報無しでコンパイルしたバイナリが、
コメント追加の有無で(バイナリに埋め込まれたタイムスタンプを除いて)
変化しないのなら、気にしないのも手ではないかと。
一致しないのならコンパイラが腐ってるので捨て!
…る訳にはいかないのだろうな。メーカー純正ツールの場合は。 コメント行追加とかデバッグON-OFFでオブジェクトが違うとか
今時ないと思うんだけど、甘いかな?
そうだと思う。
けど、もしかしたら・・・と思うと。
チェックに使ったデバッグルーチンも「込み」で完成品にすることがほとんど。
0999774ワット発電中さん2016/08/12(金) 19:02:35.30ID:du2V288Y
123
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 701日 4時間 52分 41秒