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

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

3
マイクロコントローラーのPCBレイアウトの詳細
更新:フォローアップの質問は、結果のPCBレイアウトに対する私の見解を示しています。 私は最初のボードをuCでレイアウトします(組み込みシステムの使用とプログラミングでかなりの経験がありますが、PCBレイアウトを行うのはこれが初めてです)、これはSTM32F103ですSTMの内部DACといくつかの外部DACの両方をSPI経由で使用するミックスドシグナルボードであり、接地について少し混乱しています。 これらの質問に対する回答: デカップリングキャップ、PCBレイアウト 競合するPCB Crystalレイアウトの推奨事項 PSoCの混合信号PCBレイアウト uCのローカルグランドプレーンを正確に1つのポイントでグローバルグランドに接続し、ローカルパワーネットを同じポイントの近くのグローバル電源に接続する必要があることを明確に述べています。これが私がやっていることです。私の4層スタックは次のとおりです。 ローカルGNDプレーン+信号、uC、100nFデカップリングキャップ、水晶 グローバルGND、ビアを除く切れ目のない。Henry Ottなどの情報源によれば、グランドプレーンは分割されておらず、デジタルセクションとアナログセクションは物理的に分離されています。 電源、ICの下の3.3Vプレーン、3.3V外部DACの太いトレース、アナログセクションでボルトを分配するための太いトレース。± 15±15\pm15 信号+ 1uFデカップリングキャップ ボード上のさらに離れたところに、アナログコンポーネントと信号が最上層と最下層にあります。 だから質問: uCの下でグローバルグラウンドを破壊する必要がありますか、それともローカルプレーンの下に完全なグランドプレーンがあるのは良いですか? 電源プレーン:uCの下のみに電源プレーンを配置し、ビアを使用してデカップリングキャップに電力を供給し、したがって最上層のuCに電力を供給するつもりです。外部DACはスター型である必要があります。そのため、個別のトラックがあり、ボードの残りはボルトです。これは大丈夫ですか?± 15±15\pm15 uCのADCとDACの両方を使用し、ボードのアナログセクションで基準電圧を生成します。基準電圧は、電源プレーン上のトラックでuCのVref +ピンに供給します。Vref-ピンはどこに接続する必要がありますか:ローカルグランド、グローバルグランド、またはそれをアナログセクションのグローバルグランドに接続する電源プレーン上に別のトラックを作成します。たぶん、基準電圧が生成される場所の近くですか?STM32では、Vref-はアナロググランドVSSAピンとは異なることに注意してください(ローカルGNDプレーンに接続すると思われますか?)。 ここでのデザインに関する他のコメントももちろん歓迎します!

2
内蔵フラッシュメモリのサイズが十分ではありません
私のプロジェクトの1つで、Texas機器のTM4C1230C3PMIコントローラーを使用しています。32KBの内部フラッシュがあるため、アプリケーションには不十分です。より高いフラッシュサイズのマイクロコントローラーが市場で利用可能であり、使用できますが、このマイクロコントローラーのみを使用したいと思います。私の知る限りでは、外部EEPROMを使用して合計フラッシュサイズ(プログラムメモリ)を増やすことができます。 私の考えは正しいですか? そうでない場合は、コントローラーの合計フラッシュメモリサイズを増やす方法を提案してください。

4
RTCを照会する頻度は?
私はまだRTCを使用していないので、リアルタイムクロックを読み取るための「通常の」方法が完全にはわかりません。私が考えたいくつかの異なるアプローチがありますが、それについてのいくつかのアドバイスを期待していました。 これまでの時間を読んで使用することを考えた方法は次のとおりです。 電源投入時に日付と時刻を取得してRAMに保存し、タイマー割り込みを使用して1秒ごとにRAMの値をインクリメントします。その後、コードは日付/時刻を知る必要があるときにRAMの値を使用します。 タイマー割り込みを使用して、RTCを毎秒クエリし、受信した日付と時刻をRAMにコピーします。この場合も、コードは日付/時刻を知る必要があるときはいつでもRAMの値を使用します。 時間を調べる必要があるたびに、RTCを照会し、その応答を直接使用します。 どちらが最良のアプローチでしょうか?

1
MSP430の歴史
この質問は今日私の心を越えました。 MSP430の歴史は何ですか?いつ始まったのか、何から生まれたのか、何故それが作られたのか(つまり、どのような目標を達成しようとしていたのか、現在のuCで対処しようとしていた技術的な制限)、なぜ「MSP430」と呼ばれたのか? インターネット検索は、これだけ明らかに力点あまり言いません、。

3
20V信号を3v3マイクロコントローラーとインターフェースするためのこの回路はどのようになっていますか
12〜20Vの信号を3.3ボルトで動作するマイクロコントローラに接続する次の回路を設計しました。信号は20Vまたは開回路です。 回路の弾力性を可能な限り高めたい。EMIおよびESDを処理できる必要があります。 R1は、電流を制限し、トランジスタにバイアスをかけるためのものです。 C1はローパスフィルターを実装することです。 R2は、トランジスタのベースをプルダウンし、コンデンサC1を放電するために使用されます。20V入力は20Vまたは開回路です。 D1は、ベースの負電圧からトランジスタを保護するために使用されます。 R3は、マイクロコントローラピンをプルアップすることです。 この回路に関するコメントや改善は歓迎します。 副次的な質問:このトランジスタが許容できる最大の正電圧は?データシートには、ピークベース電流が100mAと記載されています。ベースが0.7ボルトに維持されている場合、入力は1000ボルト(10kオーム* 100mA)になります。ただし、入力が1000ボルトの場合、分圧器は電圧を500ボルトのベースにします。データシートによると最大Vcbは60ボルトです。

4
AVRフラッシュメモリの破損
この質問は、AVRのプログラミング解除自体に関連しています。 プロジェクト情報: ATMEGA644Pを使用したバッテリー駆動製品があります。アプリケーションはスリープモードで永続的に実行され、1秒間に1回(RTC)または2つの外部割り込みラインの1つがトリガーされたときにのみ起動します。 このデバイスは、UART(RS232インターフェースICを使用)で通信する非常にシンプルなブートローダーを備えています。これは、ハードウェアISPプログラマーが必要ないように、ファームウェアを更新する便利な方法としてのみ機能します。(ブートローダーは、チェックサムで保護された電報を期待しています) 消費電力が2倍になり、長いバッテリー寿命が必須であるため、デバイスは内部ブラウ​​ンアウトを無効にして設計されました(外部ブラウンアウト検出を使用する必要があったと思われます-再設計が進行中です)。 問題: 数か月ごとにデバイスが機能しなくなり、それらのデバイスでファームウェアの更新が実行されませんでした。ただし、さらに調査した結果、これらのデバイスのフラッシュコンテンツは破損しているようです。さらに、これらのデバイスの一部のバッテリーはまだ良好でしたが、何らかの低電圧状態を排除したくありません。 これは、元のフラッシュコンテンツ(左)と破損したコンテンツ(右)の比較です。 いくつかの観察: 破損したブロックは常に少なくとも1つのフラッシュページ(256バイト)で構成され、ページに揃えられます。つまり、影響を受けるのはページ全体であり、1バイトではありません。 破損したコンテンツはほとんどの場合0xFFを読み取りますが、他の値が含まれているか、完全に「ランダム」である可能性もあります。 画像の左側にある小さなバーは、影響を受けるすべての領域を示しています。このデバイスの場合、合計フラッシュコンテンツの約10分の1です。 影響を受けるページが1つだけのデバイスが1つありました。 フラッシュメモリへの書き込み中に低電圧状態が発生すると、フラッシュの内容が破損する可能性があります。ただし、これは、一部のフラッシュに敏感な命令を実行する必要があることを意味します。 おそらく、コントローラーは低電圧のためにランダムに再起動しており、この間、ブートローダーコードはまったく予測不可能な動作をしている可能性があります。不足電圧に関する別のフォーラムの人を引用するには: 「実行されるのはフラッシュからのランダムな命令だけではなく、ランダムな命令期間です(フラッシュからのコードが正しく読み取られ、解釈されるという保証はありません)。メカニズム。」 質問:「不足電圧時のランダムな動作と、フラッシュページ内のデータを変更する命令の実行」 と思われますか?説明は正しいですか?その場合、ソフトウェアの問題(スタックオーバーフロー、無効なポインター)の原因として、この種のエラーを常に表示しないのはなぜですか。 この種の破損を引き起こす可能性のある他のアイデアはありますか?これはEMI / ESDが原因ですか?

3
マイクロコントローラーからの負荷を切り替えるためのBJT対(MOS)FET
マイクロコントローラから負荷を切り替えるために、バイポーラ接合トランジスタ(BJT)と電界効果トランジスタ(FET)(MOSFETまたはJFET)を選択する理由は何ですか?私たちの仮定の状況では、負荷にはマイクロコントローラーが提供できるよりも多くの電流が必要であると仮定します。問題は、「使いやすさ」が考慮されていないと仮定して、BJTとFETスイッチの設計に有利または不利になるバイアスの考慮事項です。 この質問は、トランジスタの質問をいつ使用するかをより具体 化したものです。

3
マイクロコントローラのスリープレース状態
次のコードを実行しているマイクロコントローラーがあるとします。 volatile bool has_flag = false; void interrupt(void) //called when an interrupt is received { clear_interrupt_flag(); //clear interrupt flag has_flag = true; //signal that we have an interrupt to process } int main() { while(1) { if(has_flag) //if we had an interrupt { has_flag = false; //clear the interrupt flag …

1
マイクロコントローラーの弱い内部プルアップとEMI感受性
マイクロコントローラーで弱い内部プルアップ(100k)を使用する場合、どのようなデメリットがありますか?これらの弱いプルアップにより、影響を受けやすいライン(トレースとコンポーネントの寄生容量のみ)がどのようにEMIトランジェントになるのかと思います。 3〜4ミリ秒のウィンドウでデジタルフィルタリングを行うと、トランジェントが影響する確率を減らすことができますが、プロフェッショナルなPCBで他に注意することはありますか?

1
Cortex M0は本当に低消費電力ですか?
私は、最も低消費電力のCortex M0製品であるNXP LPC1100シリーズCPUを使用しています。ただし、データシートには、最適な条件(スリープモード+すべての周辺機器が無効)でも6 mAを使用することが記載されており、測定ではこれを確認しています。 私のスマートフォン(1 GHzのCPUと多くのアクティブな周辺機器を搭載)がスタンバイ状態で3 mAしか使用していないのに、この48 MhzのCortexはアクティブでなくてもはるかに多く使用しているのはなぜですか?


2
32 kHzクリスタルの負荷コンデンサ値の選択
作業中のデザインで32.768 kHz XTALの負荷コンデンサを選択するのに助けが必要です。 これは少し長いですが、大きな問題は次のとおりです。ローディングキャップの値を正しく設定することは重要ですか、これを決定する際にトレースとリードの寄生容量がどれほど重要になるでしょうか。 私のデバイスはTI CC1111 SoCを使用しており、TI から入手可能なUSBドングルのリファレンスデザインに基づいています。CC1111には、48 MHz高速(HS)発振器と32 kHz低速(LS)発振器の両方が必要です。リファレンスデザインでは、HS発振器に水晶を使用し、LS発振器に内部RC回路を使用しています。ただし、CC11111は32.768 kHz水晶発振器に接続して精度を向上させることができます。 CC1111 データシートには、負荷コンデンサの値を選択するための式(p。健全性チェックとして、私はその公式を使用して、リファレンスデザインの48 MHz xtalで使用されるキャップの値を計算しました。デザインで実際に使用されているのとほぼ同じ数を取得する必要があると考えました。しかし、私が思いついた静電容量値はTIで使用されているものと一致しないため、少し心配です。 私の調査の詳細は以下ですが、要約すると、48 MHzクリスタルのデータシートには18pFの負荷容量が必要であると記載されています。リファレンスデザインで使用されている2つの負荷コンデンサは、どちらも22 pFです。xtalのリードに見られる負荷容量を負荷コンデンサ(およびC b)の値に関連付けるためのCC1111データシートの式は次のとおりです。CaCaC_aCbCbC_b Cload=11Ca+1Cb+CparasiticCload=11Ca+1Cb+CparasiticC_{load} = \frac{1}{\frac{1}{C_a} + \frac{1}{C_b}} + C_{parasitic} CloadCloadC_{load}CaCaC_aCbCbC_bCparasiticCparasiticC_{parasitic}CaCaC_aCbCbC_b あるいは、TIアプリケーションノートAN100によると、 Cload=C′1×C′2C′1+C′2,Cload=C1′×C2′C1′+C2′,C_{load} = \frac{C_1' \times C_2'}{C_1' + C_2'}, C′xCx′C_x'CxCxC_x C1C1C_1C2C2C_2C′1C1′C_1' 負荷コンデンサの値を間違って選択すると、機能しないか、周波数が正しくないのではないかと心配しているので、これをすべて質問します。これらのタイプの水晶は、ローディングキャップの値に対してどの程度敏感ですか? 私の探偵の詳細: リファレンスデザインのzipファイルに含まれているPartlist.rep(BOM)から、クリスタル(X2)とそれが接続されている2つの負荷コンデンサ(C203、C214)は次のとおりです。 X2 Crystal, ceramic SMD 4x2.5mX_48.000/20/35/20/18 C203 Capacitor 0402 C_22P_0402_NP0_J_50 C214 …

4
マイクロコントローラ付きデジタル調光器
抵抗性負荷用のデジタル調光器を構築したい。私はそのためにこの回路を見つけました: 入力電圧は220VAC 50Hzです。 写真の赤いボックスはのためのものZero Crossing Detectionです。 AC電圧がゼロを横切ると、マイクロコントローラーが中断され、ゼロの交差を検出します。Triac特定の後にトリガーすることで必要な電圧に到達Delayできます。この回路をお勧めしますか?その場合Red Box、AC電圧のゼロ点を検出するために(図に示す)に置き換えるICがあるかどうかを知らせてください(私の回路は可能な限り小さくする必要があります)? PS負荷の消費エネルギーを削減するためにこの回路が必要なので、回路自体が最大5ワットを消費する必要があります。

6
非標準シリアル信号を効率的にデコードする方法
私は、RF送信ASICと、最終的にPCにデータを送信する必要があるワイヤレスレシーバーを含むプロジェクトに取り組んでいる研究チームの学部生です。 レシーバーは高速、連続、非同期、非標準のシリアル信号(SPI、I2C、UARTなどではない)を出力するので、私の仕事は、レシーバーをコンピューターに接続するマイクロコントローラーソフトウェアを作成することです。現在の私のアプローチは、エッジトリガー割り込みを使用してデータを循環バッファーに配置し、メインループでビットごとのデコードプロセス全体を実行することです。マイクロコントローラーは、USB(仮想COMポート)を使用してこのデータを同時にコンピューターに出力する必要があります。 これが私が抱えている問題であり、私が予期している問題の1つです。 非常に強力な72 MHz ARM Cortex M3プロセッサを使用しても、バッファリングされたデータを十分に速く処理できません。ビットレートは400 Kbps(2.5 us /ビット)です。参考までに、ビットあたり180サイクルしか残しません(デコードとISRを含み、オーバーヘッドは30サイクルまで!)。MCUは、メインループでポーリングする他の多くのタスクも処理する必要があります。 USB仮想COMポートドライバーも割り込みベースです。これにより、ドライバーが最終的にプロセッサに長い間中断され、ビットが送信される可能性のある2.5マイクロ秒(180サイクル)のウィンドウを見逃すことになります。このような割り込みの競合/競合が通常はどのように解決されるのかわかりません。 だから問題は単純に、これらの問題を解決するために何ができるのか、これはまったく正しいアプローチではないのですか?私は、ソフトウェア中心のアプローチを少なくすることも検討します。たとえば、デコード用に何らかの種類のハードウェアステートマシンを備えた専用のUSBチップを使用しますが、これはなじみのない領域です。

6
PIC16マルチタスクRTOSカーネルが機能しない理由は何ですか?
PIC x16マイクロコントローラー用のセミプリエンプティブ(協調)RTOSを作成しようとしています。私には、前の質問、私は、ハードウェアスタックポインタにアクセスすると、これらのコアは不可能であることを学びました。私はPIClist でこのページを見てきましたが、これはCを使用して実装しようとしているものです。 私のコンパイラはMicrochip XC8で、現在、構成ビットで4MHzの内部RC発振器が選択されたPIC16F616で作業しています。 コンパイラのヘッダーファイルを確認しながら、CでPCLATHおよびPCLレジスタにアクセスできることを学びました。そこで、簡単なタスクスイッチャーを実装してみました。 カーソルが最初の行(TRISA=0;)ではなく別の行(などANSEL=0;)にあるときに、再起動後にデバッガを一時停止してリセットし、カーソルにPCを設定すると、デバッガで必要に応じて機能します。デバッガーの最初の起動時に、これらのメッセージがに表示されますDebugger Console。 Launching Programming target User program running No source code lines were found at current PC 0x204 編集:私はそれがうまくいった理由はわかりませんが、デバッガは完全に動作するようになりました。したがって、上記の出力と段落は省略してください。 編集:このようにメイン定義を変更すると、以下のコードが機能します。これはプログラムアドレスでメイン機能を開始します0x0099。何が原因なのかわかりません。これは実際の解決策ではありません。コンパイラ固有のエラーがあると思います。 void main(void) @ 0x0099 { これが私のCコードです: /* * File: main.c * Author: abdullah * * Created on 10 Haziran 2012 Pazar, 14:43 */ #include …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.