マイコンソフト 悩み事相談室 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
.
∧ ∧
( ´・ω・) < コンフィグって何? 昆布なら知ってる。 ボラチルって何? ボラは魚だよ。
( ∪ ∪ ,.-、 ,.-、 ,.-、 ,.-、
と__)__) (,,■) (,,■) (,,■) (,,■)
PIC AVR H8 ARM
学校でC言語を習ったことがあるので「楽勝でしょ」って、マイコンを始めたけど、
わからないことだらけ。誰か教えて!
PCとは別世界の、マイコンのソフト。難しいよね。
ツールの使い方、ツールの設定、マイコン特有のC言語の書き方、
「デバッグモードにプログラミングモード。何?」 Eclips, Emacs って何?
VBAしか知らないよぉ、という人まで、
各社マイコンに関するマイコンソフト相談室です。
質問者は、「初心者質問スレ」の>>1を見て、分かり易く質問を書いてね。
回答者は、威張らない、バカにしない、言葉使い注意で、親切に教えてあげてね。
あっ、そうそう。
ハードウェアに関する質問は、それぞれのマイコンのスレに、達人がいるから。
過去スレ
1 2014/09/11〜
2 2016/07/31〜 http://rio2016.2ch.net/test/read.cgi/denki/1469905691/l50
では、質問、ドゾ〜 わざわざ行儀の悪いプログラム自慢をしなくても良いよ >>469
理解できてない奴の筆頭乙 w
あと>>468のアンカー間違えてた
>>463 ⇒ >>462 マルチタスクいいよ楽だよと書いといてなんだけど、最近はとんと使ってない。
次々来る新規CPUにいちいち作ってらんないし、出来合いのを入れるのも
それはそれで面倒だしで使わなくなってしまった。
メインループ一個で、順番にポーリングしていくのばかり >>462
並列処理をやった事のない奴に、簡単なプログラムしか書けない奴に
いくら並列処理のメリットを説いてもムダだよ
シングルタスクのポーリングだらけのグチャグチャプログラムを死ぬまで書いてろ
たとえ小さなAVRであってもマルチタスクで書きたいって気持ちはよく分る >>472
使いにくさとのトレードオフになるけど、シンプルなものにすればいい
どちらにするかは人それぞれ、適用するプログラムそれぞれで
もちろん使わないという選択肢もある >>473
> たとえ小さなAVRであってもマルチタスクで書きたいって気持ちはよく分る
ソフトからスタックがさわれないPIC厨には無縁 >>475
たしかPIC18はOKでしょ?
でも >もちろん使わないという選択肢もある です
どんなCPUを使うかもあなたの自由ですよ
雑談になるけど
昔、シーケンサ(PLC)のプログラムを書いていた人とPCの事務処理プログラムを書いていた人に
機械制御の簡単なプログラム(もちろんシングルタスク)を書いてもらった事がある
PLCあがりは条件が成立しなければすぐにそのチェックルーチンから抜けてくるような
リアルタイム処理風に書いていたが
PCあがりはクセになっているのか、何回か注意したのに
ローカルの条件成立ループ待ちをしてしまう
PLC上がりの人に、リアルタイム処理になってますねと言ったら
「え、今までこうやってましたし、これが普通だと思っていました」
と言われて、そうだよなと納得した >>476
> PCあがりはクセになっているのか、何回か注意したのに
> ローカルの条件成立ループ待ちをしてしまう
windows3.1あがりならそんなことしないのだが。 >>473
普通CPUて色々な処理を行うのが普通なわけで
1つの仕事しかしない方が珍しいかと
私自身の経験を言うと
RAMが数十バイトの8bitマイコンの世界から
8コアSoCまで業務で扱うし
PCやLinux上のプログラムも扱う
RAMが128バイトレベルのマイコンで
せいぜいUART通信、キー、LED、リモコン、簡単なフィードバック制御くらいな簡単な処理
わざわざ複雑にしなくても
RAM/ROM/CPUパワーも余分にいるし RAM128バイトで何個のタスクにわけるつもり?
どう考えても>>479みたいな処理は無理だろ >>472
> メインループ一個で、順番にポーリングしていくのばかり
ないわー、テレビのリモコンみたいに単機能で基本ひとつのことしかしないようなやつならまだしも >>481
平行とか並列と言ったってしょせんシングルコアなんだから順番にやるしかないでしょに。
俺が対象にしてるのはシリアルやいくつかの接点入力、SPI、I2C、A/D、
OUTはモーターONOFF、PWM、たまに音声出力、そういうものなんだけど、
ループはなるべく一個でやる。
タイミングはタイマー割込みで正確に取るぞ。 >>478
その辺がどの辺を指してるのかよくわからんけど、マルチタスク/マルチスレッドをサポートしてる環境は普通にあるでしょ
>>383とかが言ってるのはもっと小規模な奴のこと もちろんタイマー以外の割り込みも使えるものは使って、バッファに取り込んでから
ループ中でポーリング >>482
別に好きにやればいいと思うが、今時面倒なことをよくやるよな
って感じ >>472
自分もマルチタスクのフレームワーク作ってるけど、個人の研究用だな。
同じマイコン使ってても、仕事では使わない。なんか問題起きると厄介だし。 マルチコアシングルタスクの実装を見たときの衝撃を皆に分けてあげたい。 >>481
良くある普通のシングルタスク処理
タイムクリティカルな処理は割り込みでやる
超小規模であればシングルタスクとシングル割り込みで十分
もうちょっと大きくなるとシングルタスクと多重割り込みで良い
多重割り込みとマルチタスクはもっと規模が大きい時に使う
そもそも
プライオリティもイベントもセマフォも無いプリエンプティブなマルチタスクなんてどうやって使うんだ?
それこそ各タスクでポーリングするしか無いのでは? >>487
OpenMPで使うとかじゃなくて?
ISR専用でISRに重い処理をさせるとか 非対称デュアルコアで、
サブコアはISRの形でしか動けないマイコンがあったような
今のGPUにちょっと似てるかも
あと、
マルチコア(8コア)のマイコン用OSなのに
各コア独立に動くってのもあったな
PCが普通だと思ってると色々と驚く >>476
ループ待ちは非常に短い時間なら普通にやる
最近多くのCPUに載ってるLL/SC命令なんかはループ前提だし
セマフォやミューテックスもループではないけど条件が整うまで待つ為の物
通信もブロッキングの方が圧倒的に楽に作れる場合が多い >>486
個人の研究用にOSを書くのは勉強にもなるしオススメなんだけど
>>383の場合は「簡単だし楽だからみんなも作れ」としつこく書いた前科がある
機能がほとんどないOSもどきを作っただけで >>488
> プライオリティもイベントもセマフォも無い
なに勝手に妄想してディスってるんだよ...
タスクスイッチ作るならプライオリティはともかく待ち合わせ機能を実装するのは当たり前、でないとほぼ意味ないし
>>492
> 機能がほとんどないOSもどきを作っただけで
OSってなんかよくわからんけどすごく難しいもんだって思ってないか? w
ちょうど>>493があげてる本の著者が書いてるWebがあるからこれでも読んどけ
ソースも公開してくれてる
http://monoist.atmarkit.co.jp/mn/spv/1107/25/news004.html 欲しいものが無ければ諦めるか、自作するかの選択で
諦める人と自作する人がいるって簡単な話だよ
自作する人は役に立つから自作するって言ってる
自作した事が無い人がそんなもの役に立たないなどととやかく言ってもしょうが無い >>495
>欲しいものが無ければ諦めるか、自作するかの選択で
>諦める人と自作する人がいるって簡単な話だよ
そんなことは役に立たないだろう、金銭的にペイしない、って周りから批判的に言われるようなことを
グダグダやっている人の存在を許す組織と、許さない組織があります。
変則的な事態に強いのは前者だと思います。 タスクリスト、イベントリスト、セマフォリスト、メールリスト
こんくらいあればだいたい間に合うよね。
チェーンリストじゃなくて配列にして、ヒープはめんどいからやらないことにすれば
実装は簡単か どこから組織的な話になるんだろう?
前提がおかしすぎる >>498
すみません。端折ってしまいました。
>欲しいものが無ければ諦めるか、自作するかの選択で
>諦める人と自作する人がいるって簡単な話だよ
後者みたいなことをする人が存在できる組織は変則的な事態に対応する力があるって話です。
あたりまえながら、俺の見聞きした範囲ですが。
自作OSは業務に使わない・使えない、という結論と
自作OSを作る行為が業務の役に立つ・立たないということとは別だし、
そこを混ぜて話をしたらお互いに接点も見いだせないと思うのです。 だれも組織的にやろうなんて話題は出してないから混ざりようもないでしょ。
まあ時分割くらい昔から業務でも使われてるんだけどね。 >>489の最後の3行の「話が混ざる」ということは組織の話はしてないですよ。 >>496
個人のスキルアップなら業務外にやってね
あと製品に搭載するとか言い出さないように >>502
少なくとも業務の話は出てたはずだし>>499の主張の意味もわかる
それぞれの3回の書き込みだけみれはきみの方が変なヤツ >あと製品に搭載するとか言い出さないように
それをうまく抑える常識派 (というと、とても語弊がありますが) がいないと組織が成り立たないですね。
昔いたところに、日がな役に立たなさそうな実験とか設計とかしてる人が何人かいて、
トップの人も普通にプロジェウトに組み込まれた俺も同僚も、あいつらそれでいいんだと考えていました。
小さい組織じゃそんな余裕はないですが。 少なくとも俺には>>501はさっぱりわからんが... 言った言わないの話は、森友と日大で良いよ。
俺は今まで会社と無関係な勉強や実験を散々したが、
しばらくすると、業務でその知識を使う場面が生じ、仕事に使う羽目になる経験を沢山してる。
電子工作だろうと、株取引だろうと、園芸だろうと、
自分で考え苦労して工夫した事は応用が効く。 業務中に勉強しちゃダメ
業務外で習得したスキルは業務で使っちゃダメ
なんだろ? >業務中に勉強しちゃダメ
>業務外で習得したスキルは業務で使っちゃダメ
そんなこと言う人いるかな? 人と同じ事をやっているだけでは人より先に進むことは出来ない
誰もがやれる事をやっていたら納期と価格の勝負になってしまう
……なんてこんな所で書いてもしょうがないか >>511
プリミティブなことを追体験することや、既存のものを自分で作ることを、
「車輪の再発明」「先に進む行為ではなく後ろ向けに進む行為」と考える人もいる、
ということでしょね。
どんどん進歩してる世の中だし、その時間を新しいことを取り入れることにむけるべき、
という考え方もわかります。
幅の広い電子やITというジャンルの中だと、小さい組織も個人もできることは限られてて
「仮想の他の人」にできることを、一通り自分もできるようにすること自体ほぼ不可能です。
それゆえに、急き立てられるようなプレッシャーの中で好む好まざるにかかわらず
ブラックボックスを受け入れつつ新しいことを取り込んでいこうとしている人からすれば、
原理的な部分に取り組むのはかったるいことに見えても仕方がありません。
もしそれが組織なら、誰かが新しいことをやって、誰かが足元のことを固めていく、というような
差配を上の人がすればいいのですが。
あと、自分が向いてる方向が正しいことを認識するために、他の人も同じ方向を向くべき、って
考え方になるとぎくしゃくします。
自分が向くべきでないと考える方向に他の人が向いていても、自分の正しさと他の人の正しさは
両立することが少なくないのにね。
5chのような場所で、ほか人のやり方が間違っている、と感情的になってしまうのはヘンな話です。
たぶん、組織や個人の中で同じような議論や葛藤があって、それがここで出てしまうのだと思います。 そんなつまらないこと外注しろとか、
オフショア開発で安くしろとか言ってたら、
何も作れなくなっていたと言うオチ。
様々な車輪の再発明をしてると、
ロケットとか宇宙船を発明するようになってくんだ。 >とか言ってたら、
ここに来ている人の多くは言われてる立場だったりして。
言われてる立場だからこそ、そこからフリーでいられる人が疎ましいのかも。 >>508
業務中に勉強することも当然あるが、
業務で勉強する以上は勉強の効率や成果が期待される
普通はもっと業務に直結する効率の良い学習をする
下っ端であれば無許可でやるのもまずい
普通は業務で使わないコードを書いていたら
遊んでいると思われる
暇で仕事がない期間にこっそりやるのがせいぜい 別にOSを自分で作ること自体を私は否定していないし、
個人的には非常に楽しいと思う
他人に強制する
OSを作った事がない人を見下す
こんなヤツが問題だってこと 自作OSに限らずマルチタスクやマルチスレッドは罠がたくさんある
ベテランエンジニアでもミスすることもある
業務でも趣味でも、
使うときは以下のような項目を学んでおいた方が良い
同期、排他制御、イベントドリブン、様々なロック現象、アトミック処理、マルチコアの注意点、アウトオブオーダーの注意点 >>516
> 他人に強制する
> 個人のスキルアップなら業務外にやってね
> あと製品に搭載するとか言い出さないように
とか強制してる奴が何を言ってるんだか w >>518
>>516は「他人に強制すること」を問題だと言ってるのではないでしょね。
「他人に自分が作ったOSを使うことを強制すること」を問題だと言ってるのだと思いますよ 当然その通り
わざわざ書かないとわからなかった?
それは失礼 >>520
で?
対象はなんであれ匿名掲示板で他人に強制するなんて意味ないって嘲笑してるんだが
ってところまで説明しないとダメなの? >>518の書き込みで>>522の意味だと?
それは無理がありすぎる >ってところまで説明しないとダメなの?
そうでしょね。>>520が誤解だと言うぐらいなら、ですけど。 >>523
ああごめん、理解力無さすぎる奴もいたのね w >>525
つきあいが長くてだいたい考える傾向がわかっている相手とのSNSでのメッセージ交換とか
対面していて顔色、身振り手振り、声色を把握できる相手とのコミュニケートと
一緒してちゃ駄目だと思います。
文字と説明を尽くしましょうよ。 >>526
別に全員にわかってもらおうとは思ってないのでわからないならそのままでいいよ >>527
リアルな会話なら、>>527を聞けば「いじけてヘソを曲げてるな、かまってあげないと」と気遣うものです。
「そんな、キミ、まちなよ」とか言って、ハンカチを差し出したりするところです。
そういう気遣いがほしいですか?
書かれたそのままではなく、書かれていないことまで理解を求める人なので忖度してみました。
それとも今回はそのまま理解してよろしいですか? 俺が同じことを言うときはそのまま理解して欲しいですけど。 自作ディスパッチャ君が暴れてる
そろそろスレタイ読め 昔、とあるニッチ製品メーカーの機械制御はリレーシーケンスだった。
ある日、一人のマニアがマイコン制御化した。
会社は成長し、製品に対するニーズは高まり、より多くの機能・性能が求められた。
多重割り込み程度ではバグだらけでデバッグも難しく、市販OSもニッチ商品故に手が出せなかった。
社で定期購読させてもらっていた専門誌やフリーランスからのアドバイスなどを手掛かりに
自作マルチタスクを標準化し、人員を増し、手分けしてソフトを作れる環境を構築した。
自社製品・他社委託品を生み出しながら、8bit、16bitを経て、今では32bitマイコンで
ライセンスフリーなRTOSを標準とするようにまでなった。
その技術者が定年するときに苦労をねぎらうと、
「趣味を好き勝手にやらせてもらって楽しかった」と笑っていた。 >>528
頓珍漢な気遣いとかリアルにいたら相当うざいだろうなw volatile って、なんと発音すれば良いでしょうか?
ボラティル? >>530
たかが機械制御にマルチタスク?
頭悪すぎ
あんなのは単に定期割込みですべての内部リレーの
変数を更新掛けてやってるだけで
メインループ1個だけのシングルタスクだ
オブジェクト処理に近いことをやってる
そのループが高速だから、マルチタスクのようにふるまって
多数の機械が同時に動いてるだけ
多重割込みとかバグとか、その時点でアホ丸出し マイコンがやっているのがリレー制御だけだと思っているのか
こいつは
頭悪すぎ アホ丸出し >>535
最新の機械に頼らず生きろよ
たかが電話機にマイコン積むなんてアホ丸出しって言ってるのと変わらんのだから >>534
普通はボラタイルだろう。
名詞形はボラティリティ。金融系でよく使う言葉
意味は変わりやすいとか、変わりやすさとか。 機械制御って
単にスイッチを切り替えるだけの簡単な物から
ロボット制御みたいな非常に大規模な物まで
まあ普通は単にスイッチを切り替えるだけの簡単な物は機械制御とは言わないような気もするが 嗚呼、マイコンエンジニアがもう定年退職するような時代になったんやねぇ・・・
むかしはマルチタスクとかマルチスレッドとかとは言わずにリアルタイムモニタっていったよねぇ・・・ >>535
機械制御の手段をを固定化して考えていないか?
あんたが書いていることはPLCの動作そのものだな。
PLCは1スキャンで必要なI/O全てを1点づつ処理するので
あくまでも<スキャンタイム内>でリアルタイム処理になっている。
CPUを使ってPLCと同じスキャン制御させたとしても、
確かにあんたの言う通り、これをマルチタスク処理とは言わない。
でも >>530 はPLCと同じスキャン制御、とは書いてないぞ。
機械制御はスキャン制御だけではない。
私は昔、機械制御に特化した並列処理のインタープリタを書いたことがある。
PLCに慣れた人からは、使いにくいと悪評だったがw
でももう20年以上、全国の工場の何台もの機械で使われ続けている。 >>524
最近のニーチャン達は昔と違ってマルチタスクを自分で作れないんじゃないか?
だから、落語の「饅頭怖い」と同じで、
そんなものは必要ない、役に立たないなどと言ってるのでは?
tiny2313用のディスパッチャなんて想像もつかないんだろうな。
落ちぶれていく日本が悲しいけど仕方が無い。
「老兵は死なずただ消え去るのみ」 >>543
PLCはそれより歴史古いし
マイコンで機械制御で同じことも出来る
それなのにそうしないで
自己満な自称機械制御に特化した並列処理してるアホ >>546
ウーム、意味不明で論評できないw
ちゃんと読んだ?
でも、もう時間切れで終わりだからね、残念! カミサンの晩ご飯を作らないといけないんだよ、悪いね。 >>547
ぷっ
ではご自慢の並列処理で処理待ちしてる10個の処理
同時に5個の入力が入った後に残りの5個が5ms後に同時に入った場合に
出力はそれぞれ何ms後に出る? >>544
お得意の「見下す」ですか
RAM128バイトで色々なことをやる場合
マルチタスクなんかにRAMを割くのはアホだ
ってことがわからんのか
シングルタスクと多重割り込みでスタックを使い回す
非常に良くできた仕組み もっと規模の大きなCPUでまともなOSを作りなさい
最低限以下の機能がある物を
プライオリティ付きタスク
優先度継承ミューテックス
イベント >>551
多分やりたくてやってんだからほっとけよw
釣りが趣味なんだよw LED 1個を点滅させる為のタスク
do {
led_on();
sleep(500);
led_off();
sleep(500);
} while (1);
贅沢〜 (アホ) いや別に多重じゃない割り込みでも良いけど
単に十分という意味だよ
>>488 ATtinyは多重割り込みが使えるので
RAM量とタイムクリティカル度で決めれば良い >>556も>>488も
アホの典型
入出力10点だろうが100点だろうが同じ作り方で出来るものを
規模の大小で作り方変える?
変えてもメリット無い
>>543のバカと同じ
入出力10点の機械10台のために、クソ恥ずかしい自作インタプリタ?
マイコンから見れば機械の台数に意味はない
どちらも入出力100点でしかない
わざわざ低速化、難読化してまさにアホの極み 何でこんなに荒れてんのよ
別に各自好きにすればエエやん
アホくさw >>558
RAM 128バイトと32bit CPUのソフトが同じ作りになるわけがない 自作ディスパッチャが低速化難読化の極みと思うが
8bitは8bitに適した作りって物がある じゃあ共通化の為に8bitにもWindowsやLinux APIが使えるようにしてくださいな (アホ) >>559
自分と異なる意見は何が何でも否定しないと気が済まない、
言葉遣いが下品なアホが一人いるんだよ。
他のスレでもこのアホのせいでトゲトゲしい雰囲気になる。
偏執狂だと思う。 マイコンの開発も敷居が下がったからなぁ
昔はそれである程度篩になったもんだが 仕事が上位にシフトしてるからね
下は機械がやればいい
機械がやることは今後増え続ける >>558の考え方では
「入出力10点だろうが100点だろうが同じ作り方で出来る」という前提があって、
その前提であれば
「10点から100点程度の規模の大小で作り方変えることにメリットはない」
と、至極当たり前のことを言ってるに過ぎない。
なので、
>RAM 128バイトと32bit CPUのソフトが同じ作りになるわけがない
これは別の話ですね。
もっとも、RAM128バイトでできることだけを前提とするなら、
32bitでもたいして作りは違わないと思いますが。
対立する人をいてこますより、お互い、違う考え方の人から自分が知らない観点を
見出すようにすればいいのに。
接点をさがそうよ。 ■ このスレッドは過去ログ倉庫に格納されています