タグ付けされた質問 「microcontroller」

中央処理装置(CPU)、メモリ、および(一般的に)緊密に結合されたスタンドアロンの各種I / Oペリフェラル(UART、ADC、DAC、汎用I / O、I2Cなど)を含むデバイスパッケージ。

4
自動範囲メーターの設計
私は、AからDまでのマイクロのオンボードADCと、範囲を制御するためのプログラム可能な抵抗分割器としてのデジタルポテンショメーターを使用して、オートレンジ電圧計を設計しています。 私の懸念は、マイクロコントローラーがポットを適切な範囲に調整する前に、ADC入力が測定された入力電圧に瞬間的に短絡する可能性です。 このタイプのシナリオでは通常、過電圧保護はどのように実装されていますか? また、回路図などのデジタルマルチメータ設計のリソースがあり、それもアイデアに非常に役立つ場合(おそらくこれよりも優れた方法があると確信しているため)、検索しましたが、あまり見つかりませんでした。 更新 有益な回答をしてくれた皆さんに感謝します。こちらがIvが決めた過電圧保護回路です。精度を上げるためにショットキーダイオードを使うつもりです。 負の過渡電圧の間、下側のダイオードが導通し、それにより、電圧が接地より下の1つのダイオード降下にクランプされます。正の過渡電圧の間、トップダイオードは順方向にバイアスされ、サージを電源レールに伝導します。 差出人:http : //www.conformity.com/artman/publish/printer_116.shtml

7
エンベデッドシステムでアクティブハイとアクティブローの信号はどのように機能しますか?
これは、マイクロコントローラーが一般的にどのように機能するかについてです。 私たちが行うプログラミングは、コンパイラーによって1と0に変換され、これらの機械が理解できるコードがマイクロコントローラーにロードされます。 マイクロコントローラーはこれにどのように応答しますか?これらの1と0はDACによって対応するロジック電圧(5vと0)に変換されますか?そのような場合、この小さなシリコン片は、どのように5vと0vのこれらのさまざまな組み合わせをどうするかをどのように決定しますか? すべてのICが論理ゲートで構成され、これらのゲートがトランジスタで構成されていることを理解しています。では、これらのトランジスタは5vと0vのさまざまな組み合わせにどのように応答するのですか? 彼らがこれらのロジックを探す理由は何ですか。電源が入っているときに、これらの命令をどのように監視するのですか だから確かに、処理するように指示し、これらの命令を処理する方法を指示するオペレーティングシステムがmcuにロードされている必要がありますよね。 次に、タイマーについて考えてみます。これは、各クロックサイクルの後に1ずつインクリメントするレジスタです。OSが再び、各クロックの後にインクリメントするようにmcuに指示していませんか?私は正しいですか?その場合、オペレーティングシステムのすべてのコードはどの言語で記述されていますか? さまざまなタスク用にmcuをプログラミングする作業に進むことができますが、今日、このマシンでコードがどのように理解されるのか知りたいと思いました。 質問が長くてすみません。これらの基本的なことを学んでください。 前もって感謝します..

5
コンピューター制御水弁
私はコンピューター制御の屋内滝に取り組んでいます。要件の1つは、コンピュータインターフェイスを介して水圧を変更できることです。私は1日中グーグル検索していて、コンピューターで制御できるバルブを見つけられないようです。誰かがそのようなデバイスを知っていて、どこで見つけることができますか?

9
愛好家にやさしい強力なプロセッサはありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 電気工学スタック交換のトピックになるように質問を更新します。 4年前休業。 作成したいプロジェクトがありますが、少し処理能力が必要になります。私が今まで見た中で最も強力なものはATMega1284Pです。本当に力で私は私が生のMIPではなくプログラムメモリとRAMを必要とすることを意味します。 趣味に優しいものは他にありますか? 趣味にやさしいとは、はんだ付けするために高価な機械(リワークステーションなど)を用意する必要がないことを意味します。もちろん、腕と脚を使わずに、そのうちのいくつかを購入することもできます。そしてもちろん、無料で利用できるコンパイラやその他のソフトウェアツールがあります。 私のプロジェクトは、単純なグラフ作成機能と、場合によってはいくつかの限られたプログラミング機能を備えた小さな(ポータブル)計算機を構築することです。

3
組み込みシステムLINTの使用
現在、多くの異なるコンパイラーを使用して組み込みシステムを開発していますが、最も一般的なのはIARシステムです。 ハードウェアに対する私の愛は、組み込みシステムとファームウェアを実行するドライブです。しかし、私はソフトウェア工学にかなり欠けているようです。 良いリントはコードにとって非常に貴重であると何度も読んだことがあります。ここにいる誰かがLintを使用しているかどうか、どのLintであるか、およびエラーの検出にどの程度役立つかを知りたいです。

7
MCUを使用した0〜1MHz(0.25Hz分解能)方形波の測定
0から1MHzの範囲で変化し、0.25Hzの分解能を持つ方形波の周波数を測定する必要があります。 私はまだどのコントローラーを決定していませんが、それはおそらく20ピンAttinyの1つでしょう。 通常、より低い周波数の信号を測定する方法は、タイマーキャプチャモードで設定された2つのタイマーを使用して、外部信号の立ち上がりエッジで割り込みを行うように設定し、別のタイマーを毎秒割り込みするように設定することにより、前のタイマーは1秒後のレジスタ値をカウントします信号の周波数に等しくなります。 ただし、この方法は明らかに0.25Hzの解像度で0〜1MHzの範囲の信号をキャプチャするには機能しません。これには22ビットカウンターが必要です(AFAIK 8ビットマイクロには8/16ビットカウンターしかない)。 私が持っていたアイデアの1つは、信号をマイクロに適用する前に分割することでしたが、信号を61で除算する必要があるため、これは実際的ではなく、周波数は61秒ごとにしか更新できず、数秒ごとにしたい場合があります。 頻度を4秒ごとに更新できる別の方法はありますか? 更新: 最も簡単な解決策は、外部割り込みまたはタイマーキャプチャを使用して、信号の立ち上がりエッジで割り込みを行いisr、変数の型をインクリメントすることですlong int。4秒ごとに変数を読み取ります(0.25Hzまでの周波数を測定できるようにするため)。 アップデート2: JustJeffが指摘したように、8ビットMCUは1MHz信号に追いつくことができないため、すべての立ち上がりエッジで割り込みを中断し、long int... 私はtimororrが提案した方法を選びました。実装に取り​​掛かったら、投稿して結果を共有します。ご提案いただきありがとうございます。 経過報告: ここで紹介するアイデアのいくつかをテストし始めました。まず、vicatcuのコードを試しました。頻度の計算後にTCNT1がクリアされないという明らかな問題がありました-大したことではありません... 次に、コードをデバッグするときに、約2〜7回の頻度で計算されたタイマー1(外部イベントをカウントするように構成されたタイマー)のオーバーフローカウントが2だけ短いことに気付きました。これをタイマー0 ISRのレイテンシに置き、ifステートメントブロックをISRからメイン(以下のスニペットを参照)に移動して、ISRにフラグを設定することにしました。いくつかのデバッグは、最初の測定は問題ないが、その後の読み取りごとに、タイマー1のオーバーフローカウントが2を超えることを示しました。これは説明できません。 int main() { while(1) { if(global_task_timer_ms > 0 && (T0_overflow == 1)) { global_task_timer_ms--; T0_overflow = 0; } ..... } } 次に私はティムロスの提案を実装しようとすることを決めました。Atmega16の唯一の16ビットタイマーが外部信号の立ち上がりエッジをキャプチャするために使用されているため、必要な間隔(各timer_isr割り込みの間に約15ms)を生成するには、2つの8ビットタイマーをカスケードする必要があります。 オーバーヘッドのほとんどがタイマーにシフトされ、CPUが処理する短い残りが1つしかないため、このソリューションが機能し、はるかに効率的だと思いました。しかし、私が期待していたほど正確ではなかったため、測定値は約70Hzだけ前後にシフトしましたが、高周波数では問題にはなりませんが、低周波数では許容できません。私は問題の分析に多くの時間を費やしませんでしたが、2つの16ビットタイマーを備えた非常に遅い8051コントローラーにtimrorrsの提案と同様の構成を実装しており、結果は非常に正確だったため、タイマーのカスケード構成はそれほど正確ではないようです。 これでvicatcuの提案に戻りましたが、周波数計算をTimer 0 isr (下のスニペットを参照)に移動しました。このコードにより、一貫して適度に正確な測定が行われました。少しの校正で、精度は約+/- 10Hzになります。 ISR(TIMER0_OVF_vect) { TCNT0 = …

1
ニクロムヒーターとのインターフェース
私は加熱用途にニクロム線を使用しており、スロークッカーの清掃済み部品を使用しています。ニクロムをオン/オフにする最も簡単な方法は何ですか?私は、ニクロム線に直接給電するソリッドステートリレー(SSR)を介して120VACのマイクロコントローラースイッチを使用することを考えています。 気にする必要のあるインダクタンスの問題はありますか?ニクロムは1本の長いストリップであり、コイル状に巻かれていません。

5
プラグコンピュータのより説得力のある使用例にはどのようなものがありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 あるプラグコンピュータは、ネットワーク接続ストレージ以外に何のために有用? 私はあなたがそれらからドライブの束を掛けることができることを知っています、おそらくあなた自身のウェブサーバーをセットアップします。しかし、これらの用途は家庭環境や企業環境では魅力が限られているため、通常のサーバーを使用するのではないかと思います。環境コントローラーやエネルギー管理デバイスなどの産業環境で使用されているのを目にすることができましたが、I / O(キーボードとディスプレイ)の欠如がそれらの有用性を制限しているようです。 何か不足していますか?それとも私は単に想像力に欠けていますか?メディアサーバー/貧乏人のTivo以外の家庭環境でこれらを使用する方法を想定していますか?

2
AVRコードがビットシフトを使用する理由[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 AVRプログラミングでは、レジスタビットは、a 1を適切なビット位置に左シフトすることによって常に設定され、それらの1の補数によってクリアされます。 例: ATtiny85の場合、PORTB、b 4を次のように設定します。 PORTB |= (1<<PB4); または、次のようにクリアします。 PORTB &= ~(1<<PB4); 私の質問は次のとおりです。なぜそれがこのように行われるのですか?最も単純なコードは、ビットシフトの混乱になります。なぜビットがマスクの代わりにビット位置として定義されるのですか? たとえば、ATtiny85のIOヘッダーにはこれが含まれています: #define PORTB _SFR_IO8(0x18) #define PB5 5 #define PB4 4 #define PB3 3 #define PB2 2 #define PB1 1 #define PB0 0 私にとっては、代わりにビットをマスクとして定義する方がはるかに論理的です(このように): #define PORTB _SFR_IO8(0x18) #define PB5 0x20 #define PB4 0x10 #define PB3 …

1
AD5933は外部クロックで動作していません
AD5933インピーダンス測定チップを使用しています。外部クロックを接続するオプションがあります。ファンクションジェネレーターを使用して250 kHz、2ボルトのピーク方形波信号をMCLKピンに供給していますが、機能しません。 コントローラーとAD5933間の通信(I2C)は良好です。 (a)内部発振器を使用しており、5 kHz〜100 kHzの周波数範囲でインピーダンスを測定できます。内部発振器を使用して、さまざまな抵抗とコンデンサの組み合わせを測定しました。ここで、5 kHzの周波数範囲より下のインピーダンスを測定することにし、UG-364アプリケーションノートによると、外部発振器を使用して250 kHzのクロック周波数を適用し、5 kHz未満の周波数範囲を使用する必要があります。 (b)添付の図に示されている外部クロック周波数を適用するためにファンクションジェネレータを使用しましたが、AD5933が応答しません。コードでwhileは、AD5933のステータスレジスタのフラグセット(2番目のビット)を読み取ることで、有効な実数値と虚数値を待機しているループを確認できます。ステータスレジスタの2番目のビットはHighになりません。つまり、AD5933は有効な実数値と虚数値を取得していません。 (c)私の回路の概略図を以下に示します。 (d)3.3 VDCを使用しており、出力励起範囲は1です。つまり、出力励起電圧は1.98 Vp-pで、DCオフセットは1.48 Vです。 外部クロックをAD5933 MCLKピンに接続する方法についての経験を共有してください。 これは私のコードシーケンスです: スタンバイモード 外部発振器を有効にする スイープを初期化する スイープを開始 これは私のコードです: #include "Wire.h" #define SLAVE_ADD 0x0D #define ADD_PTR 0xB0 #define START_FREQ_REG1 0x82 #define START_FREQ_REG2 0x83 #define START_FREQ_REG3 0x84 #define FREG_INCR_REG1 0x85 #define FREG_INCR_REG2 0x86 #define FREG_INCR_REG3 0x87 #define …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.