1. TImer (タイマー): TImer には多くの種類がありますが、2 つのカテゴリに分類できます。1 つは固定時間間隔の TImer、つまりタイミングはシステムによって設定され、ユーザー プログラムを制御することはできません。ユーザー プログラムが選択できるのは、32Hz、16Hz、8Hz などのいくつかの固定時間間隔のみです。この種の TImer は 4 ビット MCU でより一般的であるため、クロックやタイミングなどの関連機能を実装するために使用できます。 。 もう 1 つは Programmable Timer (プログラマブル タイマー) です。名前が示すように、このタイプのタイマーのタイミング時間はユーザーのプログラムによって制御できます。制御方法には、クロックソースの選択、分周(プリスケール)の選択、プレハブ数の設定などが含まれます。MCUによっては3つすべてを同時に備えている場合もあれば、そのうちの1つまたは2つを備えている場合もあります。この種のタイマー アプリケーションは非常に柔軟であり、実際の使用方法も常に変化しています。最も一般的なアプリケーションの 1 つは、PWM 出力を実現するために使用することです。 クロックソースを自由に選択できるため、このようなタイマーは通常イベントカウンターと組み合わせて使用されます。 2. IO ポート: どの MCU にも特定の数の IO ポートがあります。 IO ポートがないと、MCU は外部との通信チャネルを失います。 IO ポートの構成に応じて、次のタイプに分類できます。 純粋な入力ポートまたは純粋な出力ポート: このタイプの IO ポートは、MCU ハードウェア設計によって決まります。入力または出力のみが可能であり、ソフトウェアによってリアルタイムに設定することはできません。 IO ポートの直接読み取りおよび書き込み: たとえば、MCS-51 の IO ポートは、このタイプの IO ポートに属します。 IO ポート読み取り命令を実行する場合、それは入力ポートになります。 IO ポートへの書き込み命令を実行すると、そのポートは自動的に出力ポートになります。 入出力方向を設定するプログラム プログラミング: このタイプの IO ポートの入力または出力は、実際のニーズに応じてプログラムによって設定され、アプリケーションは比較的柔軟で、I2C などの一部のバス レベル アプリケーションを実現できます。バス、各種LCD、LEDドライバ制御バスなど IO ポートを使用する場合、重要な点に留意する必要があります。入力ポートの場合、フローティング状態にならないようにクリアなレベルの信号が必要です (プルアップまたはプルアップを追加することで実現できます)。ダウン抵抗);出力ポートの場合、その出力の状態レベルは外部接続を考慮する必要があり、スタンバイまたは静的状態では電流ソースまたはシンクがないことを確認する必要があります。 3. 外部割り込み: 外部割り込みも、ほとんどの MCU の基本機能です。これは通常、信号のリアルタイムトリガ、データサンプリング、ステータス検出に使用されます。割り込みには、立ち上がりエッジ、立ち下がりエッジ トリガー、レベル トリガーなどのいくつかの種類があります。外部割り込みは通常、入力ポートを通じて実装されます。 IO ポートの場合、割り込み機能は入力に設定されている場合にのみ有効になります。出力ポートの場合、外部割り込み機能は自動的にオフになります (ATMEL の ATiny シリーズでは一部の例外があり、出力ポートでも割り込み機能をトリガーできます)。外部割り込みの適用は次のとおりです。 外部トリガー信号の検出: 1 つはシリコン制御整流器の制御、バースト信号の検出などのリアルタイム要件に基づくもので、もう 1 つは省電力の必要性です。 信号周波数の測定: 信号が見逃されないようにするには、外部割り込みが理想的な選択です。 データのデコード: リモート コントロール アプリケーションの分野では、設計コストを削減するために、マンチェスター エンコードや PWM エンコードのデコードなど、さまざまなエンコード データをデコードするソフトウェアを使用する必要があることがよくあります。
Key detection and system wake-up: For an MCU that enters the Sleep state, it generally needs to be woken up through an external interrupt. The most basic form is a key, and the level change is generated by the action of the key.
4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows: SPI インターフェイス: このタイプのインターフェイスは、ほとんどの MCU が提供する最も基本的な通信方法です。データ送信は同期クロックによって制御されます。信号には、SDI (シリアル データ入力)、SDO (シリアル データ出力)、SCLK (シリアル クロック)、および Ready 信号が含まれます。場合によっては、Ready 信号がない場合があります。このタイプのインターフェイスはマスター モードでもスレーブ モードでも動作します。よく言われるのは、誰がクロック信号を提供しているのかを確認することです。クロックを提供する側がマスターであり、その反対側がスレーバーです。 UART (Universal Asynchronous Receive Transmit): 最も基本的な非同期送信インターフェイスです。信号線はRxとTxのみです。基本データ形式は、スタートビット + データビット(7ビット/8ビット) + パリティビット(偶数、奇数、なし) + ストップビット(1~2ビット)です。 1ビットのデータにかかる時間をBaud Rate(ボーレート)といいます。 ほとんどの MCU では、データ ビットの長さ、データ チェック方法 (奇数チェック、偶数チェック、チェックなし)、ストップ ビットの長さ (ストップ ビット)、およびボー レートをプログラミングによって柔軟に設定できます。確かに。このタイプのインターフェイスで最も一般的に使用される方法は、PC のシリアル ポートと通信することです。 I2C インターフェイス: I2C はフィリップスによって開発されたデータ伝送プロトコルで、SDAT (シリアル データ入出力) と SCLK (シリアル クロック) の 2 つの信号によっても実装されます。その最大の利点は、複数のデバイスをこのバスに接続でき、アドレスを通じて識別してアクセスできることです。 I2C バスの最大の利点の 1 つは、ソフトウェアを使用して IO ポート経由でバスを実現するのが非常に便利であることです。また、その送信データ レートは SCLK によって完全に制御されます。制御するには、UART インターフェイスとは異なり、高速または低速にすることができます。 、厳格な速度要件があります。 5. ウォッチドッグ (ウォッチドッグ タイマー): ウォッチドッグはほとんどの MCU の基本構成でもあり (一部の 4 ビット MCU にはこの機能がない場合があります)、ほとんどの MCU ウォッチドッグはプログラムによるリセットのみを許可し、リセットすることはできません。これは閉じられており (Microchip PIC シリーズ MCU など、プログラムの焼き付け時に設定されるものもあります)、一部の MCU (Samsung の KS57 シリーズなど) は、プログラムがウォッチドッグ レジスタにアクセスしている限り、特定の方法で開くかどうかを決定します。は自動的にオンになり、再度オフにすることはできません。一般にウォッチドッグのリセット時間はプログラムで設定できます。ウォッチドッグの最も基本的な用途は、予期しない障害による MCU のクラッシュに対する自己回復機能を提供することです。
マイクロコントローラープログラミング MCU プログラムのプログラミングと PC プログラムのプログラミングには大きな違いがあります。 C ベースの MCU 開発ツールはますます人気が高まっていますが、効率的なプログラム コードやアセンブリの使用を好む設計者にとって、アセンブリ言語は依然として最も簡潔で効率的なプログラミング言語です。
2. C言語プログラミングコードの効率を向上させる方法 シングルチップマイコンの開発と応用においては、シングルチップマイコンのプログラム設計にC言語を使用することは避けられない傾向となっています。 C でプログラミングする際に最高の効率を達成したい場合は、使用している C コンパイラに精通することが最善です。まず、コンパイルされた各 C 言語に対応するアセンブリ言語のステートメント行数をテストして、効率を明確に知ることができます。今後プログラミングする場合は、コンパイル効率が最も高いステートメントを使用してください。各 C コンパイラには特定の違いがあるため、コンパイル効率も異なります。優れた組み込みシステム C コンパイラのコード長と実行時間は、アセンブリ言語で記述された同じ関数レベルよりもわずか 5 ~ 20% 長いだけです。
開発時間が限られた複雑なプロジェクトの場合は、C 言語を使用できますが、C 言語と MCU システムの C コンパイラに精通しており、C コンパイラ システムが処理するデータ型とアルゴリズムに特別な注意を払っていることが前提となります。サポートできる。 C 言語は最も一般的な高級言語ですが、MCU メーカーごとに C 言語のコンパイル システムが異なり、特に一部の特殊な機能モジュールの動作が異なります。そのため、これらの機能を理解していないとデバッグ時に問題が発生し、アセンブリ言語よりも実行効率が低くなってしまいます。
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. By using this site, you agree to our use of cookies.
Privacy Policy