AVRマイコン総合スレ Part40
■ このスレッドは過去ログ倉庫に格納されています
ゴメン、少し言葉足らずだったかな。
ラウンドロビンも出来るみたいだし。
→逆に優先順位を付けないラウンドロビンも出来るみたいだし。 >>363
そこまで行っちゃうと、tinyのコア4個入チップとかの方が
安上がりだったりして… 優先順位を設定出来ない多重割り込みってあまり意味が無いよな xmegaのタイマーと言えば1usの32bitカウンターが
割り込み無しで作れるのには感心したな。イベントシステムは面白い。 SPI通信を利用するDDS用IC AD9833の設定を手動スイッチで行いたいのですが、
可能でしょうか?
ICの反応が全然なくて困っています。 >>373
理論上可能だろうけど、
チャタリングがあるから相当に難しいと思う
その労力考えたらMCU入れた方が、遥かに楽だと思う スイッチをAVR通してデバウンスしてポチポチ送るんですね 手動スイッチをトリガーにしてAVRから送る
って事だよな?
本当にスイッチで1ビットずつ送るつもり?
そんな事をしなくても
デバッガのステップ実行でゆっくり動作できるけど >>378
ステップ実行って、ハードもゆっくり動かせるのか・・・ センターオフのトグルスイッチ使ってラッチ通して入力したなぁ
SPIじゃないシリアル入力のPLLだったが しかし、手動でゆっくり送ると何かいいことがあるんかね?
とりあえず配線確認して、プロトコルアナライザーで見たほうがいいよ。 道具が無いときには意味がある
テスターでもLEDでもわかる >>383
せっかくのマイコンなんだから
それぞれの時点でポート読み出しして
シリアル出力するとか考えようよ。 >>384
おれに言うな
お前が買ってやれ
>>385
SPIもまともに動いてない状況で
他が正しく動いてるっていう発想がそもそもおかしい >>386
さすがに非同期シリアルはステップ実行できないからな。 皆さんに原理的に可能だと教えてもらえたので、上手くいかない原因は自分にあると確信を持って、
問題解決に当たったところ、チャタリングが原因でした。
TTL信号を送る回路にシュミットトリガインバータとローパスフィルタを入れてから、
スイッチをカチカチ押してSPI通信したところ、上手くDDS ICを制御できるようになりました。
ありがとうございました。 チャタリングは、そういう現象があるんだって最初から知ってる場合以外は、わりとハマるよね チャタリング除去って割と基礎的で重要なことだと思うんだけど、
アマチュアではあんまり触れる人いないよね。
仕事でやってる人でもCR任せでソフトで全くやらない人いるし。 仕事でやってて
数ms〜数10ms オーダーをCR任せにする人がいるとは
本当?それ 適切な回路で(R×2+C)、ちゃんとしたスイッチなら
十分にいけるよ
ただし、経年劣化でスイッチの接点がへたると危ないけど… そんな所にわざわざ金と面積をかける
競争の少ない業界は良いねえ 回路設計とファームは自社でやって、基板のアートワークと製造は外注というところはたくさんあると思う。
タクトスイッチ数十個をマイコンのポートにつないだ基板と言うのも良く来る。
キーマトリクスなんて使わずに多ピンマイコンを使う。
全キーにCR入れる。ダイオードは入れない。
値からして明らかに静電気対策ではなくチャタリング対策。
しかも交換しやすいようリード品指定するところもある。
>>393
スキマ製品だと思うだろう?
大量生産品からインフラ機器までどこにでもあるんだよ。 そうなのか勉強になった
ありがとう
うちはまともな方だってこともわかって良かった まともならハードとソフトの両面で対策すると思うぞ
ソフトでどうとでもできるからと、たかを括った結果、
大量の不具合発生で「特別キャンペーン」やらざるを
えなくなった棒アジとかあるからなぁ
(あれって、韓国メーカーのOEMでしょ?) ほほう、ソフトで対策のできないチャタリングってどんなものがあるの? セットリセットのラッチ使って
セットに入ってバウンド起こしても
セットはセットなのですから
チャタリングしようが何しようがセットでラッチ
リセットに入れたら、ラッチ解除で
即座にOFF!コレ最速最強。是非お勧め♪
by単極双投無双 (6 lゝ、_ .ノ ヽ、__ノ |!/
| ,.' i、 |}
', ,`ー'゙、_ l
\ 、'、v三ツ /
|\ ´ ` , イト、
/ハ ` `二 二´ ´ / |:::ヽ
/::::/ ', : . . : / |:::::::ハヽ
https://twitter.com/ibuki_air
09058644384 スィッチも色々あるので、これでOK、と言うような万能の解決方法は無いと思う。
たとえば、単純なプッシュSWでもオルタネートとモメンタリがあるし、
使い方としても、プッシュオン(立ち上がり)でA処理、長押しでB処理、
プッシュオフ(立ち下がり)でC処理など組み合わせるときがある。
私はハードのCR積分回路と、自由度が高い(応用範囲が広い)ソフトのシフトレジスタ方式で
チャタリング除去している。 ピンポイントな例でも構わないので、
CR積分回路が無かった場合の不具合例を教えてくださいませんか? >>403
ボタンを押した回数を数えたり、ボタンを押す毎にLEDをオン・オフしたりとか。 >>405
もちろん簡単なのはウエイト時間を作るとかチャタリングに対応するコードを書けばできるよ。
でも回路上スイッチからマイコンまでの距離が長く、配線にチャタリング以外の電磁的ノイズが入る環境とかだとCRが入ってたほうが無難だな。 意外とオシロのスイッチがすぐおかしくなるのは気のせいかな
テクトロも中華も反応するけど値がすっとぶ ロータリーエンコーダとかはソフトだけで対応するの結構大変 >>407
磁気式のエンコーダだと経時変化で軸受けのガタ、光式だとそれに加えてホコリでの誤動作も増えてくる。
>>408
ほんと。
サーボモータ制御とか高分解能のエンコーダだとパルスの周波数も相当に高くなるしね。 >>406
その「無難」がわからないんです。「難」があるのはどういう時ですか?
静電気や電磁ノイズからの保護にDやRの存在意義はわかりますがCって? ローパスフィルタかますんだよ。
スパイクノイズやチャタリングで暴れるのをまず抑えてから、シュミットトリガで受けるのが常套手段 スイッチの信号を受ける端子について、接点バウンスによるチャタリングの防止「だけ」が目的なら
コンデンサは要らないかも。 チャタリング以外のノイズが入ってくることを想定すると、
ソフトウェアでは簡単に除去できないことや、ダイオード、抵抗で防げないことは
はありますよね。
どこまでを想定するか、ということもあります。 >>410
CRのローパスフィルタはあらゆる回路の基本中の基本。
一般的なスイッチ(ON/OFF)信号のノイズ除去以外にも、刻々と変化するアナログ信号をA/D変換入力してマイコンで解析計算をする時には、ナイキスト周波数(サンプリング周波数)と言って入力信号の重要な周波数制限があり、この場合は必ず(急峻な肩特性を持つローパス)アナログフィルタを入れる。
細かな用語の定義や理由は各々の単語を検索してみてください。 そうそう、その「防げないことはありますよね 」の具体例が知りたいんです。
何を想定すれば必要となるんでしょう?
散々ノイズ試験やインパルス試験を経験しているのですが、
不幸なことに積分回路の有用性に出会ったことが無いんです。
前出のエンコーダーなどソフトで対策しにくい速度のものは当然除外しますが、
単なる有接点スイッチの入力に積分回路が無いことによって、
ソフトで対策出来ないどんな不具合が隠れているのでしょうか? >>416
自分は、1000V発生させて製品を検査する装置の周りで使うデバイスを作ったことがあるけど
こんときはさすがにスイッチにCR回路つこうた 教科書に異を唱える真のプロ降臨!
…と思ってたら
>静電気や電磁ノイズからの保護にDやRの存在意義はわかりますがCって?
これで萎えた >>416
○強い静電気が回路に飛び込むケース。
端子間短い抵抗は放電で飛び越える。
保護ダイオードが壊れる。
でもセラコンは壊れにくい。最後の砦
○継続するノイズ
たとえば、スイッチのON/OFF検出を0.1秒以内に判定する場合で
数秒にわたって継続する高周波ノイズだと、、ソフトウェアでは除去するのは難しい。
場合によっては、保護ダイオードで整流されてDC値がふらふらしたり。
逆にいえば、そんなケースはありえない、というふうになっていれば考慮する必要はないのです。
筐体やスイッチの構造、配線の配慮で、「回路に静電気放電の電流が流れることはありえない」となっていたり、
「スイッチから入力デバイスまでの距離も短く、相応のシールドもあるから、そんな信号はのらない」と言えるものなら
コンデンサはなくても良いでしょうね。
チャタリングを防止するようなフィルターなんか使うより
ソフトの方が応答速度は速く出来ます
キーのCRはチャタリングよりずっと高周波な物の除去に使うもの キーの場合
高周波ノイズの除去は回路で
チャタリングの除去はソフトで
が普通かと ちょっと話はずれますが、
定番とされる回路があって、
・自分が納得できない場合は定番といえども見直す
・定番はとりあえず採用する
という2つの端っこがあって、たいていの人がその両極のあいだのどこかにふわふわと位置しています。
ただ「自分で納得できない場合」は曲者です。
トラブルが起きるところは想定外なことが多いわけで、つまり、実際にそこまで事前に想定できなかったわけです。
定番回路は、先人達の想定外の失敗の積み重ねの中で作られてきたものかもしれません。
先人が見逃して痛い目にあったことを避けるだけの抜け目なさを、先人達全員よりも一人の自分の方が備えていると
言えるのでもなければ、受け入れる方が良いという考え方あるかと思います。 基本は>>422
マトリクスでも単独でも
当然、事情があるならそれ以外の構成も使う >>416
BBFのスイッチだとLPFが無い場合、一瞬
オープンの状態ができてしまいますがな… 俺も単なるプッシュスイッチがつながるだけの所にコンデンサなぞ入れんぞ。
必要なのはEMC対策がうるさいところだけじゃないか?
先達ってのはなんかわからんが入れとこうみたいな人達もたくさんいるからな。
定番と言うべきか慣習と言うべきか。 オモチャから軍事医療宇宙産業までいろいろな所にボタンが使われている
品質の考え方も色々ある いつも電源が一瞬で落ちること考慮せずにプログラム書いてるんでだけどさ
マイコン上で処理が走っているのにもかかわらず電源ってぶち抜いても問題ないの?
OSの乗ったパソコンとかだとシャットダウン処理走らせるじゃん? 処理していた内容を保存したいなら
保存処理する必要がある
駆動部分とか加熱部分、
そのままだとショートするようなトコがあってヤバいなら
安全側にしてから死ぬ必要性がある
特に危なくないなら、適当で構わない 私は、スィッチ入力には、高い周波数用のノイズ対策用にCRフィルターを入れ、
チャタリング除去はソフトで対処するこが多い。
入力信号に乗るのがチャタリング「だけ」なら問題無いのだが、
数KWのサーボモータが近くにいくつもあるような工場で使う装置で、
何回かノイズでイヤな思いをしてきたので、どうしても臆病、慎重になってしまって、
スィッチにCRを付加する手間とコストを惜しまない。
一言でいうなら、「溺れる前に藁をも掴む」、てかw >安全側にしてから死ぬ必要性がある
昔、トンネル炉のコントローラを作った時に、
非常時には何が何でもプラスティック・フィルムを駆動するモータを動かして下さい。
そのままにしておくとフィルムが燃えますから。
と要求された事がある。
で、非常時になった時にモータが動かず(!)、
炉の中でフィルムが燃えて、
「機械は真っ黒になるし、工場中に細かな煤の雨が降って掃除が大変でしたよ」
と言われた……。
原因は機械屋の方にあったが、私としても関係者の一員として、
何だか、土下座して謝りたいほどの気持ちになった。 メカ接点はいきなり落っことすからどうしても
跳ね返りが起きるわな。
アクティブローなら、極端なこと言えば、
しきい値超えなきゃ下で暴れてる分には知らんみたいな。 >>434
モーター駆動系を物理的に冗長設計すべきだな
そういうのは >>434
逆に電流駆動制御のDCモーターにガツンと電流を流したままマイコンが停止すると
モーターが超高速回転になって危険な状態になる場合もあるな。
いずれにしろリアルタイム制御をする以上は、電源断にしろ瞬断にしろバグにしろ、
処理がおかしくなることを全く考慮せずにプログラム書くなんてことはありえない。 現場を知らない奴の机上の空論としては >>436 の方がまだマシだな。
「事件は会議室で起きてるんじゃない!現場で起きてるんだ!」w >>442
トラブルは実験室で起きてるんじゃない客先で起きてるんだ。 アララ、こんな朝早くからかぶってしまった…
どうもごお早うございます、東日本の雨、早くやむといいですね >>448 九州や広島のほうが大変ですよ。
関東はこれからかな。
ご安全に〜 すみません、東と西を間違えてしまいました。
ネタかぶりで少し動揺してしまったのかな? 当たり前の事だけど、異常対策は費用対効果で決る。
たとえ人身事故の可能性があったとしても利益以上の金は掛けられない。
だから異常対策は難しい。 ノイズ対策も同じような事(費用対効果)が言える。
また、現場でトラブった経験を積み重ねないとノイズ対策は難しいと思う。
(AVRそのもには関係無い話しでスマン) おっと、マルツでATMEGA4809の販売が始まったよ。
次期Arduinoに採用されたやつ。 ■ このスレッドは過去ログ倉庫に格納されています