0

マイクロコントローラ ドメインの初心者です。知りたいのは、カウンタを使用せずにイベントをカウントすることはできないということです。つまり、イベント ジェネレータに接続されているピンを監視することです。現在、周波数を計算したいので、この質問をしています。センサーの私はすでにDSO(デジタルストレージオシロスコープ)を使用して周波数をチェックしており、それ(DSO)はその周波数が98khzであると言いますが、8ビットカウンターの最大値が255であるため、どのように可能でしょうか... ...センサーは PB0(TCNT0/Atmega16 のカウンター 0)に接続されています .........助けてください

4

2 に答える 2

1

あなたはそれを2つの異なる方法で行うことができます. 1 つ目は、プリスケーラを使用することです。たとえば、1024 に設定すると、1024 回ごとに PB0 がトリガーされます (または、正しい用語が何であれ、MCU を扱ってからしばらく経ちます) カウンターは 1 ずつインクリメントされます。 KHz (およそ)。

2 番目の方法は、プリスケーラを使用せずに MCU を設定して、カウンタがオーバーフローするたびに他のレジスタを 1 インクリメントし、そのレジスタがオーバーフローするたびに別のレジスタを 1 インクリメントするようにします。8 ビット タイマーとそれら 2 つの追加の 8 を使用します。 16,777,215までカウントできるビットレジスタ。私は実際にはこの2番目の方法を好みますが、おそらくこれは私だけです:)

また、Greybeard と Andy Brown は、stm32 とマイクロプロセッサのタグについては正しいので、それらを削除する必要があります。

于 2015-08-01T19:41:15.363 に答える
0

センサー ピンを外部割り込みピン ( INT0\INT1) に割り当て、センサーからの外部信号ごとにインクリメントするグローバル変数を作成し、ISR一定時間ごとにサンプルを取得することができます。

この時間はタイマー割り込みによって設定されますが、カウント数には依存しないため (タイマーはクロックとしてのみ機能しISRます)、タイマーの内部では、カウント数をこの固定時間 ( counter/Ts) で割る必要があります。

次に、カウンターを表す変数を zero に設定する必要があります。ここでのカウンター変数は でありunsigned long、高い周波数で動作することを確認します。

于 2016-01-13T18:42:51.677 に答える