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

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

2
Cコーディング設計-関数ポインター?
私が持っているPIC18F46K22をしてXC8コンパイラでそれをプログラムします。最後に、私は、搭載したPCのようなシステムがあるでしょうstdinし、をstdout。したがって、メインループには、新しい入力があるかどうかをチェックする関数があります。入力がある場合、それに応じて関数が呼び出されます。たとえば、Aを入力するstdinと、PICはBを入力したときに呼び出される関数のfunction_A代わりに、次のような関数を実行しますfunction_B。 関数でPICが完了したら、新しい入力が関数に送信されるようにします。したがって、Aを押すとRS232トランスミッタが開き、その瞬間からすべての入力がRS232経由で送信されます。最終的に、プロジェクトはスタンドアロンのテキストエディターです。そのため、Aを押すとファイルシステムが開き、その瞬間からテキストの編集は行われず、ファイルのリストを確認します。つまり、上と下を押すことは、テキスト編集環境とは異なることを意味します。 私はこれをCでプログラムする方法について多くのことを考えてきました。昨晩、これを考えて、可能かどうか、可能であればどのようにしたらよいかを知りたいと思います。私がやりたいことは: main機能のような関数を呼び出しますfunction_A function_Aグローバル変数function_addrを関数のアドレスポインターに変更しますin_function_A その瞬間から、新しい入力があるときにmain関数を呼び出しfunction_addrます。 したがって、必要なのは、ゼロmainかどうかをチェックする関数function_addrです。もしそうなら、「通常の」関数を呼び出す必要がありますfunction_A。そうでない場合、関数at function_addrを呼び出す必要があります。またfunction_A、function_addrへのポインタに変更するが必要in_function_Aです。 注:ファイルシステム関数を閉じる必要がある場合は、0にis_function_A変更function_addrするだけです。 だから基本的に私の質問は 関数のアドレスを取得(および変数に格納) 指定されたアドレスで関数を呼び出す


7
マイクロコントローラとシステムオンチップ
私はマイクロコントローラーのプログラミングを始めており、いくつかのドキュメントや教科書を読んでいました。マイクロコントローラーとシステムオンチップの違いは何ですか? 一部のドキュメントでは、これら2つの用語を相互に変更可能に使用しています。しかし、ほとんどの教科書は、2つの用語を相互に変更可能に使用することは正しくないことを指摘しているため、いくつかの顕著な違いがあるはずです... ありがとう!

7
初心者向けのファームウェア開発向けの良い本
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私は仕事で多くのファームウェアの仕事をしていますが、このトピックに関するより高度な本を探しています。「割り込みとは」の基本とは異なるもの。組み込みシステム開発に関するO'Reillyの本を読んでいます。たとえば、Flashページ(これは非常に便利です)のようなものについて議論する本、メモリの特定の領域にコードのセクションを配置する方法は本ではまれです。 おそらく、いくつかのヒントとコツがあるものです。私は主にPICプログラミングを行っています。

13
Intel HEX(.hex)ビューア/リーダー
最近、Intel HEXファイルで多くの作業を行っています。Intel HEXファイルをインポートし、各アドレスのバイトの内容を表示できるプログラムが必要です。 私がこれを見たプログラムはいくつかありますが、無料であり、16進ファイルの先頭への相対アドレスではなく、絶対アドレスでコンテンツを見ることができる優れたプログラムがあります(たとえば、Intel HEXファイルがアドレス200で書き込みを開始する場合、アプリケーションはアドレス0〜199が空白であり、アドレス0で始まるように表示されないことを示す必要がありますか? 私が見つけた最高のツールは、実際にはHEXファイルを表示するためのツールではなく、SeggerのJ-Link Flashプログラミングソフトウェアです。本当にチップをプログラムするためのものですが、HEXファイルを美しく読みます。J-Link / J-Trace Downloadsで見つけてください。


6
シリアルプロトコルの区切り/同期技術
非同期シリアル通信は今日でも電子機器に広く普及しているため、私たちの多くはそのような質問に時々出くわしたと思います。電子デバイスDと、PCシリアル回線(RS-232または同様のもの)で接続され、継続的に情報を交換する必要があるコンピューターを検討してください。すなわち、PCそれぞれコマンドフレームを送信しており、それぞれステータスレポート/テレメトリーフレームで応答しています(レポートはリクエストへの応答として、または独立して送信できます-ここでは実際には関係ありません)。通信フレームには、任意のバイナリデータを含めることができます。通信フレームが固定長パケットであると仮定します。X msDY ms 問題: プロトコルは継続的であるため、受信側は同期を失ったり、進行中の送信フレームの途中で「結合」したりする可能性があるため、フレームの開始(SOF)がどこにあるかはわかりません。Aデータは、SOFに対する相対的な位置に基づいて異なる意味を持ち、受信したデータは破損する可能性があり、永久に破損する可能性があります。 必要なソリューション 短い回復時間でSOFを検出するための信頼性の高い区切り/同期スキーム(つまり、再同期に1フレーム以上かかることはありません)。 私が知っている(そして使用している)既存のテクニック: 1)ヘッダー/チェックサム -事前定義されたバイト値としてのSOF。フレームの最後のチェックサム。 長所:シンプル。 短所:信頼できません。不明な回復時間。 2)バイトスタッフィング: 長所:信頼性が高く高速な回復で、どのハードウェアでも使用可能 短所:固定サイズのフレームベースの通信には適していません 3)9番目のビットマーキング -各バイトに追加ビットを追加します。SOFでマークされたSOF 1とデータバイトには次のマークが付けられ0ます。 長所:信頼性が高く、高速な回復 短所:ハードウェアサポートが必要です。ほとんどのPCハードウェアおよびソフトウェアでは直接サポートされていません。 4)8番目のビットマーキング -上記の一種のエミュレーション。9番目ではなく8番目のビットを使用し、各データワードに7ビットのみを残します。 長所:信頼性の高い高速リカバリは、どのハードウェアでも使用できます。 短所:従来の8ビット表現と7ビット表現の間のエンコード/デコードスキームが必要です。やや無駄だ。 5)タイムアウトベース -定義されたアイドル時間の後に来る最初のバイトとしてSOFを想定します。 長所:データオーバーヘッドなし、シンプル。 短所:それほど信頼できません。Windows PCなどのタイミングの悪いシステムではうまく動作しません。潜在的なスループットのオーバーヘッド。 質問: 問題に対処するために存在する他の可能な技術/解決策は何ですか?上記のリストで簡単に回避できる短所を指摘できますか?システムプロトコルをどのように設計しますか(または設計しますか)?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
MCUブレイクアウトボードのPCBレイアウトに関する質問
基本的に、LPC23xx / LPC17xx MCUのブレークアウトであるボードを配線しようとしています。この複雑さに近づいたものをこれまでにルーティングしたことはなく、いくつかの懸念事項があります。4層PCBが最適であることは知っていますが、私は趣味であり、これを4層ボードに変えると、市販のオプションと同じくらい高価になります。実績のある2層の商用ボードに基づいて設計を行ったので、この作品を作ることが可能であることを知っています。まず、これはほとんど配線されたボードです(右側のすべてのUSB機器を無視し、それを含めるかどうかも決めていません) ): 1)私が懸念している1つの領域は、MCUとクリスタル間のトレースの長さです(1つはRTC用、もう1つはMCU用です)。それらは私の設計の基になったボードのいずれよりも長くありませんが、少し検証をお願いします。 2)別の懸念事項は、デカップリングです。一般に、デカップリングが多すぎるということはありませんが、この場合、スペースが不足しているため、VCC / GNDペアのすべてをデカップリングしていません(たくさんあります!)。私の設計の基にしたボードには、デカップリングキャップが2つしかなく、3つしかありません。少なくとも1つまたは2つを獲得するために作業する必要がありますか? 3)底層にほぼ切れ目のないグランドプレーンを提供するために、私は一生懸命努力しました。壊れているのはいくつかの点だけです。1つは水晶の1つにあるスルーホール(実際にはパッドであると思います)、もう1つはVCCからMCUへの大きなルートです。接地面は十分に頑丈ですか? 4)配電は私にとって特別な問題でした(前の質問はこちらをご覧ください)。最終的に、MCUの下に大きなフィルを注ぎ、大きなトレースでVCCピンに接続することにしました。これは配電の受け入れ可能な戦略ですか?4層ボードで作業している場合、VCCには層全体を使用しますが、コスト上の理由から2層に固執したいと思います。 全体的に、私はここでどのようにしたのですか?これは起動する可能性がありますか、それとも描画ボードに戻る必要がありますか?



7
I2Cがプルダウン抵抗ではなくプルアップ抵抗で動作するように設計されているのはなぜですか?
I2Cでは、SCLおよびSDAラインはプルアップ抵抗を使用し、ピンドライバーはピンをグランドに駆動できるオープンコレクターNPNデバイスであることを理解しています。これにより、同じバスを複数のスレーブと共有できるようになり、2つ以上のスレーブが誤って同時にバスをドライブしようとしてもシステムに損傷を与えないというI2Cの利点が得られます。 ただし、これは、SDAおよびSCLラインでPNPオープンドレインドライバーとプルダウン抵抗を使用して行うこともできます。これにより、クロックストレッチングやマルチマスター調停のようなことも実現できます。 I2Cプロトコルの現在の実装は、上記の提案された代替実装よりも利点がありますか?

6
長期サポートが必要なマイクロコントローラーを備えた長距離製品を計画するにはどうすればよいですか?
大幅な変更をせずに長期間(10年)動作し続ける必要があるシステムで、マイクロコントローラーを使用する必要があります。常に交換部品があることを保証するために、ファームウェアバイナリおよびカプセル化ピンと互換性のある方法で長期生産または一部のメーカーによって生産されるマイクロコントローラーが必要です。選択したマイクロコントローラーがこれらの基準を満たしていることを確認するにはどうすればよいですか? アプリケーションは、多くの計算能力を必要としません。その目的は、モーターやその他の産業システムを制御することです。0.5〜1 MHzの周波数で約8〜16のIOピンの状態を変更できる8ビットのマイクロコントローラは問題ありません。ADCは価値があるかもしれませんが、単純な外部コンパレータに置き換えることができます。

6
「基本」マイクロコントローラーからARM Cortexに移行する方法
さまざまなメーカーの8ビットコア(8051、PIC、AVRなど)で長年の経験があり、現在Cortex M0を把握しています。具体的にはこれですが、それよりももっと一般的になりたいと思います。 システムのさまざまな部分をさまざまな詳細レベルで説明する複数のドキュメントがあり、実際にすべてを結び付けているものは見当たりませんでした。これは、すべてを説明する1つのデータシートを持つことに比べて。そもそもドキュメント化するものがはるかに多いことは理解していますが、フォーマットの変更によりループが発生しています。 上記のWebサイトには、各サブシステムとペリフェラルの概要を説明するドキュメントと、各レジスタの詳細を説明するドキュメントがあり、ヘッダーファイルやいくつかの複雑な例を含むSDKのすべてのソースコードがありますが、それがすべて一緒に接続する方法を説明するものは何もない Cortexアーキテクチャの簡潔なウォークスルーがあり、CPUから周辺機器への複数のバス層(それぞれが独自のウォッチドッグタイマーを備えているなど)の小さなコントローラーにはない機能と、それらのすべての接続方法について説明していますか?

5
中央コンポーネントの長期製造を確保する方法は?
この質問は、プロジェクトの計画と将来のリスクの最小化に関連しています。X社がこの巧妙なデバイスを構築するとします(私は会社を所有していません-私はただ興味があります)。賢いデバイスは、マイクロコントローラーユニット(MCU)を中心的な最も重要なコンポーネントとして利用します。このMCUはY社によって製造されています。今日、2013年に、Y社または他の誰かによって、ブランドYとモデルが今後X年も製造されることをどのように保証しますか? 現在、特定のブランド+モデルファミリ(または単に一般的なアーキテクチャ)があり、その(予測できない)将来に利用できることを信頼できますか?不確実であることが知られているブランド/モデルファミリー/アーキテクチャはありますか?IntelとAtmelは特定のモデルファミリを生産しているに違いないと思います。これらのモデルファミリは、数年/数十年にわたって生産を継続することが非常に確実です。しかし、正確にどのモデルまたはアーキテクチャですか?

7
GPIOピンを使用した乱数ジェネレーター?
質問AVR Random Number Generatorを読んで、AVRでランダムシードを生成するいくつかの方法に遭遇しました。 専用の「Secure AVR」を使用する 内部温度センサーを使用する 書き込まれていないEEPROMを読み取る ユーザー入力間の時間間隔を測定する フローティングADCピンを使用します。 プルアップとフローティングなしで入力として構成された単一のデジタルピンだけではどうですか?理論的には、ランダムビットのストリームを生成する必要があります。なぜこれを使用しないのですか?状態の変化が遅すぎますか?1または0でスタックする傾向がありますか?他の問題はありますか?

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