X



トップページ電気・電子
1002コメント361KB
マイコンソフト 悩み事相談室 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2017/06/19(月) 02:24:24.69ID:mEcw5Uka
.
  ∧ ∧    
  ( ´・ω・) < コンフィグって何? 昆布なら知ってる。  ボラチルって何? ボラは魚だよ。
  ( ∪ ∪   ,.-、     ,.-、   ,.-、     ,.-、
  と__)__)  (,,■)   (,,■)  (,,■)   (,,■)
         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

  では、質問、ドゾ〜
0790774ワット発電中さん
垢版 |
2018/10/09(火) 00:08:49.19ID:HoMnW+bU
Windowsで使えるARM7TDMI向けのコードを吐けるclang/LLVMのビルド済みパッケージって無いのかな?
自分でビルドしようにもWindows環境向けの情報が少ないしそんな古いCPU向けの奴なんて見あたらない
lldがらみのチュートリアルも欲しいけど組み込み向け乗ってどこにあるのか・・・
0791774ワット発電中さん
垢版 |
2018/10/09(火) 01:59:48.12ID:ZC0sKGAP
>>788
方式によるけどね。
タッチセンサの検出方法って各社がそれぞれの方法を特許で押さえていて、
他社が真似できない。各社の原理を良く見た方がいいと思うよ。

mTouchみたいな弛張発振は特許にならないほどありきたりな方法で
簡単だけど、どうしてもセンサ部分が高インピーダンスになってくるので
耐ノイズ性や安定性の面では不利かな。

今まで見た中ではルネサスの第2世代方式が一番すぐれものだった。
https://www.renesas.com/jp/ja/solutions/key-technology/human-interface/touch-sensor-system2.html
https://www.youtube.com/watch?v=qIgsneAIg5A&;feature=youtu.be

動画みたいに、10mmのアクリル板でも木でもOK。
パネル面の上から水が垂らされてるような状態でも検出できてたし。
0792774ワット発電中さん
垢版 |
2018/10/25(木) 18:48:20.16ID:0niQHnwO
>>47
最初は、見やすさ優先で良いだろ。
無駄な処理有っても、ある程度は最適化かかるし。
0793774ワット発電中さん
垢版 |
2018/12/07(金) 13:19:53.10ID:E8KRG5bG
教えてください。
ノイズの多い環境でのシリアル通信は、通信上どんな工夫をして良いか考えています。

まず考えたのは、パリティを付加することですが、ノイズが2回来ると検出できない思います。
次に考えたのが、同じ文字を何回か送って、何度か一致したら、それは合格とすることです。
前者も後者も、確率の問題かなと思いました。
以上です。
0798774ワット発電中さん
垢版 |
2018/12/07(金) 19:53:24.09ID:tcnOibku
>>793
1文字中2回もノイズでやられてるってんなら物理層の対策の方が先だろう。
0799774ワット発電中さん
垢版 |
2018/12/08(土) 13:23:55.00ID:8yKCEIvF
>>793
1 速度を落として、ノイズフィルターをガッツリ入れる
2 誤り訂正符号追加する

好きな方を
0800774ワット発電中さん
垢版 |
2018/12/08(土) 13:24:40.27ID:cAAXHgLI
調歩同期だろ
スタートビットダメだったら文字丸ごとダメ
そんなに伝送路悪いのだったら
拡散符号にでもするかw
0803774ワット発電中さん
垢版 |
2018/12/08(土) 19:25:33.12ID:aDd7aQfL
>>802
宇宙通信の同期機構はもっとしっかりしているしデータの保護もリードソロモン符号で堅牢っすよ
0804774ワット発電中さん
垢版 |
2018/12/08(土) 19:55:15.61ID:B5nyN4gf
>>803
> データの保護もリードソロモン符号で堅牢っすよ
物理層って意味わかる? w
0805774ワット発電中さん
垢版 |
2018/12/08(土) 21:02:48.25ID:aDd7aQfL
マジレスすると宇宙通信の成立性は事前に証明した上で打ち上げるから
機器が故障したり予定外の軌道を飛んだりしない限りしないかぎり
物理層のエラーが多くて運用に支障をきたすなんて事はあり得ない
0806774ワット発電中さん
垢版 |
2018/12/08(土) 21:05:34.90ID:cNXYjkNa
生まれた子の性別を伝えたいなら
赤・青の狼煙爆破させればいいじゃん
0810803
垢版 |
2018/12/09(日) 00:24:20.42ID:U3oYEX5c
というかどのレベルで話せばいいわけ?w
1.一般人
2.高周波通信は判っている
3.人工衛星や探査機のシステムについて理解がある
0811774ワット発電中さん
垢版 |
2018/12/09(日) 00:53:03.59ID:RygVf826
>>809
>はやぶさ2ではX帯での通信機能も備え、天候が良ければKa帯、悪ければX帯を使うなど2種類の電波を使い分け、効率的に運用する。

らしいけど、何が3系統?
0812803
垢版 |
2018/12/09(日) 00:55:54.33ID:U3oYEX5c
というか>>804は一般人って感じじゃないんだが>>802,807だと素人丸出しだ
0813774ワット発電中さん
垢版 |
2018/12/09(日) 07:21:35.16ID:PuVTiZ+/
>>810
お前のレベルで話せばいいよ

>>811
ああ、はやぶさ2はKaバンドも使うんだったな、忘れてたわ
それ入れれば4系統か
ただ、物理層って周波数だけじゃ無いぞ
アンテナ4系統ある意味を考えなよ

>>812
はいはい、俺のことはどうでもいいからお前のレベルで話せよ
0814774ワット発電中さん
垢版 |
2018/12/09(日) 08:02:23.26ID:esAG7YGe
>>804
極近距離の有線ならともかく、
通信ではエラーが出る前提で設計しないと駄目だろ。
0816774ワット発電中さん
垢版 |
2018/12/09(日) 09:45:51.39ID:RygVf826
>>813
『オレは知ってるぜ」じゃなくて答えてくんない?本当はわかってないんだろ。
4系統って何だよ?
0817774ワット発電中さん
垢版 |
2018/12/09(日) 10:49:40.23ID:DhV8JNNX
そういえば、超低速通信でポチポチやってたりしたっけね。
0819803
垢版 |
2018/12/09(日) 14:25:01.47ID:U3oYEX5c
JAXAが日本語の資料を作っていたわ
ttp://sma.jaxa.jp/TechDoc/Docs/JAXA-JERG-2-400A.pdf
物理層は日本語の資料が作られているようだ。論理層以上はCCSDSの英語版しかないっぽい
多少なりとも通信の理解があれば眺めるだけでだいたい判ると思う

物理層の時点で誤り率が〜以下になる・・・みたいに設計されているんで通常の運用で同期が取れないほど
ビットが化けるなんて事はない
またCCSDSの資料によれば同期コードはBCHで符号化されているらしい。1〜2ビット化けたくらいではびくともしないだろう

はやぶさ2に関してはJAXAのはやぶさ2 Fact Sheetが良くまとまっている
搭載している通信系はXバンドとKaバンドの2種類
Xバンドはアンテナがローゲイン、ミドルゲイン、ハイゲインと3種類ある。Kaバンドはハイゲインのみ
運用はXバンド、観測データを下ろすのは速度を稼ぎやすいKaかXバンドかな

>>817
機上の自律化機能を使ってFM変調、地上のスペアナを使って復調って奴ですな
1ビットが8秒、実効ビットレートは0.0625bpsだったらしい
ソースは第9回宇宙科学シンポジウムのはやぶさセッションの発表とその講演集
以前はWebでpdfが公開されていたんだが残念ながら消滅したようだ

って組み込みである以外マイコン関係ねぇ・・・
0820774ワット発電中さん
垢版 |
2018/12/09(日) 21:12:45.62ID:VqQJmyS+
>>819
> またCCSDSの資料によれば同期コードはBCHで符号化されているらしい。1〜2ビット化けたくらいではびくともしないだろう
BCHの復号モードのSECの意味ぐらい理解してから書けよ
マジで恥ずかしいぞ w
0821774ワット発電中さん
垢版 |
2018/12/09(日) 22:24:19.88ID:U3oYEX5c
自分はエラー訂正符号に詳しい訳じゃないしBCH符号はRS符号より訂正能力が高いくらいの認識しかない
誤っているならそれで良いけど煽るんじゃなくソースを提示して論理的に説明してくれませんかね?
0822774ワット発電中さん
垢版 |
2018/12/09(日) 23:59:19.71ID:tY8DotOw
マイコンのシリアル通信だろ
UART介在してるのに同期も取れなくてエラー訂正もへったくれもない
同期からやるんだったら信号をADでサンプリングしてetcからの話になる
糸口が見つからなきゃ同期も取れないのだから相関取って最尤推定とか
本格的にやるならね
0823774ワット発電中さん
垢版 |
2018/12/10(月) 00:10:44.46ID:oFNtD0AX
あのー、ボイジャー並みに遠ざかってってますが。
0825774ワット発電中さん
垢版 |
2018/12/10(月) 12:35:31.12ID:xjNBppLr
>>821
だから自分が上げた資料ぐらい理解しろよ
SEC=Single Error Correction
の意味もわかってないのか?
0827774ワット発電中さん
垢版 |
2018/12/13(木) 23:42:29.74ID:cDKvgKfs
標準ライブラリのソース探してきて
それを使え
ツウはスタートアップから一通り自分でチェックするものだ
0829774ワット発電中さん
垢版 |
2019/04/26(金) 20:04:53.81ID:hAqKrhib
このマイコンを最低限動作させるのに必須の設定内容は?
たったこれだけの情報も明文化されておらずサンプルコードと格闘せざるを得ないマイコンは多い
ペリフェラルの初期化なんかも同様。マニュアルにレジスタ操作のフローチャートが記載されているマイコンは少ない
0831774ワット発電中さん
垢版 |
2019/04/28(日) 07:35:36.13ID:WNFCPDQI
初めてそのCPUに触れる人でも、読んで「理解すれば」プログラムを書けるように
マニュアルには必要な事項が記載されている。
また要所にアセンブラとCのプログラム例も記載されている(少なくともAVRのマニュアルには)

マニュアルを読んでもプログラムが書けないなら、
まだまだプログラミングの実力が足りないという事だから
マニュアルの内容に文句を言う前に本やネットで勉強した方が良い。

CPU製作会社のドキュメント製作部門の担当者が怒るぞw
0832774ワット発電中さん
垢版 |
2019/04/28(日) 09:04:21.30ID:idCsiR4O
むかつくのは昔ならハード屋の領分がすべてソフトでレジスタ設定しろって流れなことだよ。
今のハード屋なんて線つなげときゃ終わりじゃん。せいぜいアナログ回路くらい。
0834774ワット発電中さん
垢版 |
2019/04/28(日) 10:45:58.68ID:Ii0BtoEu
昨今の高機能なペリフェラルがいっぱい付いていてフレームワークの使用が前提のマイコンのマニュアルはそこまで書いてあるようには見えないな
ペリフェラルの機能上は出来るはずだがフレームワークでは出来ないようなことをしたい場合大体ソースコードとにらめっこになる

あと8bit世代ならROM数KB/RAM数百Bですむような内容なのにフレームワークだけでROM数十KB/RAM数KBとか
0835774ワット発電中さん
垢版 |
2019/04/28(日) 11:51:36.59ID:qbKH/uog
ペリフェラルはデータシートだけでは説明不足なのが多くてアプリケーションノートの
サンプルプログラムを読むしかないのが多い気がする
0836774ワット発電中さん
垢版 |
2019/04/29(月) 08:46:48.90ID:yXP2E57+
順番があったりタイミングがあったりするからねえ
つらつらとレジスタの説明があるだけじゃわからない
0838774ワット発電中さん
垢版 |
2019/04/29(月) 12:06:14.26ID:wyNMKCJp
糞なマニュアルしかない、ふざけたサンプルしかない、てのもあるからね
あたまいてーよ
0840774ワット発電中さん
垢版 |
2019/04/30(火) 07:57:09.73ID:AvOkeggL
斜め読みくらいしないと「この機能とこの機能は排他です」とか落とし穴ある。
0841774ワット発電中さん
垢版 |
2019/04/30(火) 09:22:44.74ID:McN+cc5c
>>840
斜め読みだと絶対見落とす。
RX621 の IO ポートの入力バッファを On にする設定は、まさか SPI の設定にまで効いてるとは思わずハマった。
0843774ワット発電中さん
垢版 |
2019/04/30(火) 11:15:54.04ID:fPfZiSt7
言ってることが現実に合わない。現実を知らないな。さてはニワカだろう。

という論法は必ずしも合ってないよな。

指導者の、励ましとか方法論とか教訓とかは、往々にして現実には合わないことが多いけれど、
それをもってその指導者がニワカだとは言えないよな。
0844774ワット発電中さん
垢版 |
2019/04/30(火) 12:37:26.17ID:sT4v0UuH
>>834
そのフレームワーク作成者は何を見て書いてるんだろうね。メーカー内部には懇切丁寧なマニュアルがあるのかな。
そのマニュアル開示すればみんな助かるし、cpu選定に有利だろうにね。

cpu開発者がコード書いてる?んな事ないだろうし。
0845774ワット発電中さん
垢版 |
2019/04/30(火) 12:44:21.34ID:wwZSXNB0
今はネットで検索してコピペのスピード時代だぞ
いちいちマニュアルなんて読んでられねぇよ
俺以外の誰か一人ががんばればいいんだよ
0846774ワット発電中さん
垢版 |
2019/04/30(火) 13:02:45.71ID:sT4v0UuH
>>845
ニワカとか罵倒してたのが居たが
本音はそれだよな。
0848774ワット発電中さん
垢版 |
2019/04/30(火) 14:26:17.06ID:vNCQfQfu
最低限の何が自分のコードに必要か何が不要がくらいは判らないとコピペプログラマーにもなれない。
0849774ワット発電中さん
垢版 |
2019/04/30(火) 15:47:13.42ID:eiFAvXO/
マルチタスキングする場合はコピペだけじゃうまくいかなくね?
0850774ワット発電中さん
垢版 |
2019/04/30(火) 18:32:29.86ID:fPfZiSt7
>>848
ソースで提供されているライブラリを組み込むときに、端から端まで理解して使うことも少ないかも。
結果的に自分が使っていないものとかも入っているだろうし、書いた人には恐らくわかっていることでも、
自分にとってはオマジナイであることも。
というか過去に自分のソースを組み込むときにも、すでにオマジナイ化している部分もあったりして。
0851774ワット発電中さん
垢版 |
2019/05/01(水) 16:44:57.52ID:6FN3I/Iy
仕事なら「time is money」だから、
コピペで工数(納期)が短くなるなら、コピペを採用するのは当然だと思う。

私はプログラミングが余暇の趣味なので、
「他人が書いたプログラムは出来るだけ採用しない」
という方針でやっている。(その分、楽しみが減るので)

この前、tiny2313用のI2Cマスター制御プログラムを、
(ターゲットは秋月のAQM0802A-FLW-GBWという液晶表示器)
マニュアルだけを見ながらアセンブラで書いたら何時間も掛かってしまった。
でも苦労した分、完成時の喜びも大きい。

自分で書いた後、メーカー発表のサンプルと比較する時もあるけど、
なぁるほどぉ、とすごく勉強になる。
0852774ワット発電中さん
垢版 |
2019/05/01(水) 16:50:48.34ID:6FN3I/Iy
>>849
小さなCPUでマルチタスクする時は、
個別案件ごとに細部を色々と工夫しなければいけないからでは?
0853774ワット発電中さん
垢版 |
2019/05/01(水) 20:34:26.34ID:N8bBUhJR
割り込みとポーリング時分割の考え方で何の問題もない
arduinoのスケッチと同じ
0854774ワット発電中さん
垢版 |
2019/05/03(金) 04:27:40.54ID:iWv/XVXO
プログラム以外も含んでしまうのですがディスクリートに相互容量方式のタッチセンサーを実装している資料ってありませんかね
アマチュアのタッチセンサーの作例は自己容量方式ばかりのようですし、アプリケーションマニュアルを見るとタッチセンサーペリフェラル付きの
マイコンとそれ用のライブラリが前提になっていたりして、センサーからどのように読み出すのかを書いている資料が見つかりません

簡単な自己容量方式ではなく手間のかかる相互容量方式にしたい理由は検出したい面積がかなり広いためです
0855774ワット発電中さん
垢版 |
2019/06/13(木) 08:06:38.94ID:NOoKO7FB
ここで良いのか分かりませんが、質問させてください。

その昔、コンピューターの読み取り装置として紙テープリーダーというのがあったと聞きました。
紙テープに穴が開いたり空いてなかったりで1と0を判別すると思うのですが、
8ビットで穴がパラレルで8個空いてるとすると、
リード信号はどこから得られるのでしょうか?
それとも回路の読み込み速度が 、テープが送られる速度より十分早いので、どれか1つの穴からの信号がくれば、もうリードしてしまうと言うことでしょうか
0857774ワット発電中さん
垢版 |
2019/06/14(金) 08:44:06.85ID:XeVWAJXF
>>856
ありがとうございました。
5bit 3bit の間にある小さい穴がそれですね。
ありがとうございました。

テープが途中で切れた時は、ラブアウトしたテープとともに、糊でつければ良いんですね。
頭いいと思いました。
0858774ワット発電中さん
垢版 |
2019/06/14(金) 13:57:01.61ID:MPBvl6hG
光学式の紙テープリーダーはそのスプロケット穴を基準に読み取ってるから
パンチ屑が取れてないとデータを読み飛ばすんだよ
0859774ワット発電中さん
垢版 |
2019/06/15(土) 20:06:06.71ID:8OEOj+DP
>>858
なるほど。
リード信号と同時に、紙テープの駆動用のギアが噛む穴なんですね。
穿孔するのは機械的に難しいですが、
リーダーなら光センサーで作れそうな気がします。
紙テープの駆動は手で引っ張るということで。
0860774ワット発電中さん
垢版 |
2019/06/17(月) 00:35:15.30ID:TV+z2tvj
ルネサスのマイコンを使おうとしたら、やめろと言われた。
入手性の問題らしい。自動車関係しか売る気ないんだって。
残念だわ。
0861774ワット発電中さん
垢版 |
2019/06/17(月) 07:27:39.82ID:yN1/xOpG
日本のメーカーは商社と手を組んで、
大手にはペコペコ頭を下げるけど、
中小企業にはフンゾリ返って偉そうな態度で接してくる。
いわんや趣味の電子工作においておや。
0862774ワット発電中さん
垢版 |
2019/06/17(月) 07:44:12.43ID:GCdz3gBw
ヒント:村田製作所
0863774ワット発電中さん
垢版 |
2019/06/19(水) 20:01:28.72ID:hOHwcmRU
>中小企業にはフンゾリ返って偉そうな態度で接してくる。
これ、むかつくね。

安倍君の言う「サラリーマンの平均給与が上がった」とかいう話と似てる。
調査する対象が大企業ばっかり。中小企業は対象外なら、
そりゃ上がったと言えるかも知れない。
0864774ワット発電中さん
垢版 |
2019/06/19(水) 23:11:12.72ID:FTVmtGGe
>>863
あと、今のサラリーマンに、企業内にいる非正規の人がふくまれてなさそう。
0865774ワット発電中さん
垢版 |
2019/06/24(月) 11:55:47.57ID:ni5qNXrV
初心者質問です。やさしく教えてください。

3~5接点のロータリースイッチ5個ほど同時に使いたいのですが、他のスイッチとの兼ね合いでピン数節約の為アナログ入力を使おうかと思ってます。
可変抵抗器をイメージしてこんな回路で組んでます。
https://imgur.com/YfrGDLm
ロータリースイッチ一個につき一回路使い、アナログ入力範囲に応じてスイッチ位置を判定しようかと思うのですが、どんな問題が考えられるでしょうか?

ネット調べるとこんな回路が紹介されていたので私の回路では何か問題があるのかとおもうのですが。。。
https://synapse.kyoto/tips/ResDiv/page001.html
0866774ワット発電中さん
垢版 |
2019/06/24(月) 12:55:43.79ID:eH1MecZI
>>865
それで問題ないと思いますよ。
ただスイッチが遠いところにあるとするとあなたの回路では電源、グランド、アナログ入力
と配線が3本必要になるけど、リンクの回路ではグランドとアナログ入力の2本で済むという
違いはある。
あと、オープンになる可能性があるなら入力の電位を確定させる対策が必要かな。
0867774ワット発電中さん
垢版 |
2019/09/07(土) 08:10:13.96ID:ucWJqqxn
基本的な組込みの設計の仕方でメインでやらせること、タイマ割り込みでやらせることの切り分けが分かりません。処理内容は以下の通りです。arduinoUNOを使っています。
·IOポート読出し(digital*7 adc*2)
·IOポート状態による状態分岐
·adc値ldfフィルタ、演算
·IOポート出力
·一定処理回数毎のEEPROM書き込み
·エラー判定
·エラー処理
·LED表示
·LCD表示
EEPROMとエラー処理をメインで、他はタイマ割込かなと思っているのですが。
また、割込周期の見積方がわかりません、1ms程度でできるものなのでしょうか?
0869774ワット発電中さん
垢版 |
2019/09/07(土) 16:59:33.69ID:C2iktJD4
確かに、難しいところがありますよね。

以下の3つに分けて考えましょう。
1. main()
2. タイマー割込
3. 関数

1. main()は、細かいことは書かないで「装置全体の動作の流れ」がわかるように書くと良いです。
     
2. タイマー割り込みは、いろいろできますが、多重割り込みになると面倒ですので、
   サッと抜けるような処理だけ書きましょう。
   時間は、1msで行けると思います。(PICは楽勝。アルデーノは知らない)

3. 関数
   main()で使用する関数の中身を書きましょう。

こんな感じです。

interrupt_timer....(){
  count++
}

void main(){
  st = 0;
  while(1){
    if( st==0 ){         // 0のとき
      init(); st=1;         // 初期化して、1へ

    } else if( st==1 ){      // 1のとき
      if( SW1==on ){         // SW1が押されたら
        LED1=on;  LED2=off;  LED2=off;  // LEDをセットして
        fprintf(xx, "Get1 \r\n");      // シリアルで送信して
        st = 2;               // 次へ

      } else if( SW2==on ){      // SW2が押されたら、
        LED1=off;  LED2=on;  LED2=off;  // LEDセットして
        Mootor_L( on );            // モーター回転on
        count = 0;              // 時間カウンタreset
        st = 3;                // 次へ
      }

    } else if( st==2 ){      // 2のとき
      if( count > 800 ){       // 800ms経ったら
        st = 3;             // 次へ
      }

    } else if( st==3 ){      // 3のとき
      if( SW_stop==on ){        // StopSWが押されたら
        fprintf(xx,"STOP....\r\n");    // シリアル送信して
        Mootor_L( off );          // モーター回転off
        st = 1;              // 1へ戻る
      }
    }
  }
}
0870774ワット発電中さん
垢版 |
2019/09/07(土) 18:27:03.29ID:+Zp6OwIH
arduino でやるって言ってるのに、なんでmain()とか書いてんだよ。
0871774ワット発電中さん
垢版 |
2019/09/07(土) 19:45:09.95ID:wSAtd1lR
ありがとうございます
IOだけタイマで同期させて監視しようかと思います
0872774ワット発電中さん
垢版 |
2019/09/07(土) 21:38:48.14ID:C2iktJD4
>>870
loop() と見てくれればいいじゃんか。
0875774ワット発電中さん
垢版 |
2019/09/10(火) 11:29:24.05ID:jkiE7wGb
>>867
全ての入力をタイマ割り込みで変数にセット
それから各種タイマーカウンターも全部インクリメント

他は全部メインで、変数とカウンターの値見て分岐と処理

メインで入力を直接見て処理を占有する手法は初心者しかやらん
0877774ワット発電中さん
垢版 |
2019/09/11(水) 05:45:15.64ID:ekdC/8qe
割込みは使えるようにしておいたほうがよいが、実務ではなるべく避けるのが身のため。
どうしても必要な時だけ使うのが吉。

カウンタしか使わないなら、そもそも割込み要らない。Arduinoだと裏でやってるかもだけど。
逆に、RTOS実装するなら、使うCPUの割り込みのすべてに精通要
0878774ワット発電中さん
垢版 |
2019/09/11(水) 06:42:50.15ID:AXMuX3Ht
この業界n十年いるが割り込みの必要ない実務案件に遭遇した事無いよ。
0879774ワット発電中さん
垢版 |
2019/09/11(水) 08:29:20.52ID:Lm2lwFoA
Arduinoで時間見ること限定で割り込みがいらないと言ってる人と
一般論として「カウンタしか使わないなら、そもそも割込み要らない」と言ってる人がいるような。

カウンタであっても割り込みを無理して避けるより、使うほうが簡単なことが多いような。
0880774ワット発電中さん
垢版 |
2019/09/11(水) 08:47:56.98ID:8tJxT/+x
>>875
頭いいですね。

>全ての入力をタイマ割り込みで変数にセット
この場合、チャタリングのフィルターは、どこでやりますか?
割り込み内部、メイン?
0881876
垢版 |
2019/09/11(水) 09:03:46.54ID:E3WYrMPa
言葉足らずみたいだったし書き足しておこうかな。

>>867の内容ならArduinoなんだし)millisでtick見てりゃ
(自分でわざわざ書き起こす)割り込み全く要らないなあ。
0882774ワット発電中さん
垢版 |
2019/09/11(水) 11:07:51.25ID:E3WYrMPa
今なにげに>>869のコード見てたら気づいた。ものすごい初歩的なバグが紛れてる。

>  if( count > 800 ){       // 800ms経ったら

768msくらいのタイミングで条件成立してしまうことがあるよ。
0883774ワット発電中さん
垢版 |
2019/09/11(水) 11:54:08.44ID:8tJxT/+x
>>882
まあ、説明の上での話ですからねぇ
0884774ワット発電中さん
垢版 |
2019/09/11(水) 12:05:46.60ID:E3WYrMPa
ちゃんと突っ込んどかないと、このレベルのゴミ情報をブログで拡散させちゃう人いるじゃない。
0886774ワット発電中さん
垢版 |
2019/09/11(水) 14:11:10.10ID:YLnLjOFP
>>880
そもそも割り込み中に、入力を変数にセットするんだから
割り込み処理前後でハード的なチャタリングあっても
onしたらon
offしたらoffのどちらかの処理を1回しかしないんだから
メインでその情報使って処理したって誤作動するようなものになりようがない
フィルタ掛かってるようなものだからな
0887774ワット発電中さん
垢版 |
2019/09/11(水) 15:29:42.45ID:E3WYrMPa
デジタル入力のチャタリング除去例

まずは、ある時間(start)から指定時間(pass)が経過しているか判断する関数。
時間単位はmsで、経過していればtrue、そうでなければfalseを返す。
uint8_t pass_chk(uint16_t start, uint16_t pass){
if (millis() - start < pass) return false;
return true;
}


チャタリング除去結果と監視時間用の変数を用意&初期化
uint8_t inbuf = 0xff;
uint16_t chatt_start = millis();


10ms毎にPINDをサンプリングして、4回一致したビットのみを更新。
最小30msのチャタリングフィルタとなる。
if (pass_chk(chatt_start, 10){
static uint8_t a = 0xff, b = 0xff, c = 0xff;
uint8_t d = PIND;

chatt_start += 10; // start更新
inbuf |= a & b & c & d; // 全OFF反映
inbuf &= a | b | c | d; // 全ON反映
a = b; b = c; c = d; // サンプルデータシフト
}

ほかの処理はinbufを入力と見なして動けばいい。
負論理に脳がついていけないならここで反転してもいい。
インターバルとサンプリング数は個人の好みでご自由に。
Arduinoじゃないならmillis()相当を自分で作るべし。
0888774ワット発電中さん
垢版 |
2019/09/11(水) 17:47:46.48ID:YLnLjOFP
>>887
頭悪い奴
そんな「遅延ありき糞処理関数」誰が使うんだね?

フラグをビット反転させる処理で
頭に、前回ビット反転させてから○ms経過した場合だけ受け付けるようにするだけでいい
○ms経過してりゃ入力した瞬間に処理が始まるし
チャタリング中には反転処理に進まない
0889774ワット発電中さん
垢版 |
2019/09/11(水) 18:58:35.15ID:ekdC/8qe
だからー スイッチ入力なんざ100msに一回読んでりゃあ、他になんもやることなんぞ無いわな。
■ このスレッドは過去ログ倉庫に格納されています

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