架构师_程序员_码农网

ユーザー名 パスワード取得
会員登録

QQ登录

ワンステップ

検索
閲覧:5109|返信: 0
打印 上一主题 下一主题

[翻訳] Zigbeeの旅(IV): いくつかの重要なCC2430基礎実験 - タイマ割り込み

[コピーリンク]
リフトで直接跳转到指定楼层
ビルのオーナー
I. 前回からの続き

  前回は、簡単な外部割り込みの実装を一緒に学びました。CC2430には4つのタイマがあり、タイマ1、タイマ2、タイマ3/4(タイマ3とタイマ4の使い方は同じ)の3つに分けられます。

  筆者もCC2430を触ったばかりで、タイマーに関わるプロジェクトの経験は基本的にゼロなので、タイマーの詳細な解析をするつもりはない(お手伝いもできない)。この記事では、タイマ1のカウントオーバーフロー割り込みの使い方を簡単に実験してみるだけで、その入力キャプチャ/出力比較/PWM機能については省略する。タイマ2とタイマ3/4についても簡単に紹介する。筆者のパワーが一定の火に達するのを待って、Zigbeeの戦闘経験の高さに立って、このエッセイを改善する。

タイマー1

  Timer1はタイマ/カウンタ/パルス幅変調機能を持つ16ビットタイマである。個別にプログラム可能な3つの入力キャプチャ/出力比較チャンネルを持ち、それぞれをPWM出力として使用したり、入力信号のエッジ時間をキャプチャするために使用したりできる(入力キャプチャ/出力比較とは何か、PWM出力をどのように実装するかについての詳細は、読者各自でCC2430の中国語マニュアルを参照されたい)。

  タイマーには、動作モードという非常に重要な概念がある。

  動作モードには、フリーランモジュロアップダウンがある。

  以下は、CC2430中国語マニュアルからの3つのモードの紹介です:



  3つのモードを比較すると、フリーランニング・モードのオーバーフロー値は0xFFFFで変更できないが、他の2つのモードはT1CC0に値を代入することで、タイマーのオーバーフロー値を正確に制御できることがわかる。本実験では、この機能を利用し、T1CC0に値を割り当てることで、タイマーを1秒ごとに割り込みを発生させ、LEDの点滅間隔を1秒単位で正確に制御する。

(1) 実験の導入

  タイマーのモジュロ・モードでは、LEDの点滅間隔を1秒に正確に制御する、すなわち、明0.5秒→暗0.5秒→明0.5秒→暗0.5秒......とする。 → 明0.5s → 暗0.5s(つまり、暗から明への遷移の瞬間は1s)。明暗の反転はオーバーフロー割り込みによって実現される。

(2)プログラムフローチャート

(3) 関連計算

  前述したように、LEDの状態は、明0.5s → 暗0.5s → 明0.5s → 暗0.5s .... → そのために、対応するオーバーフロー値を計算する必要がある(一時的にNとする)。

  システム・クロック周波数は32MHzに選択され、タイマーに供給されるクロック周波数はデフォルトで16MHzである(いずれも、CC2430中国語マニュアルにある特殊機能レジスタ CLKCONによって 設定される)。

  タイマー1については、そのクロック周波数を128分周に設定する。

  まとめると、計算式は次のようになります:

.gif")2011022120560133.jpg
c

  N=62500を調べ、その16進数は0xF424、つまり、T1CC0H = 0xF4、T1CC0L = 0x24を設定する必要があります。








(
4) 実験ソースコードと解析/* 実験内容: タイマー1の実験、タイマーカウントオーバーフロー、LED1点滅 * / # include #define led1 P1_0 # define led2 P1_1 #define led3 P1_0 #define led3 P1_1

1 #define led3 P1_2 #define led4 P1_3 &





nbsp; /* システムクロックの初期化------------------------------------------------------------------------*/void xtal_init(void) { SLEEP &=~0x04;&
nbsp; // 両方の電源投入while(!
(SLEEP & 0x40)); //水晶発振器オン、安定 CLKCON &=~0x47; & nbsp; // 水晶発振器選択。







nbsp; //32MHz水晶発振器選択 SLEEP |=0x04; }/*LED初期化-------------------------------------------------------*/void led_init(void) { &
nbsp; P1SEL = 0x00; //P1は通常のI/Oポート P1DIR |=0x0F; &

nbsp; //P1.0 P1.1 P1.2 P1.3 出力 led1 =1; &






nbsp; //全てのLEDを消灯 led2 =1; led3 =1; led4 =1; }/*T1 の初期化----------------------------



----------------------------*/void timer1_init(void) {EA=1; // トータル割り込みをオンにする &
nbsp;T1IE=1; // T1割り込みをONOVFIM=1; // T1オーバーフローをON



割り込み T1CC0L=0x24; //オーバーフロー値下位8ビット T1CC0H=0xF4; //オーバーフロー値上位8ビット &

nbsp; T1CTL =0x0e; //128分割、モジュロモード(0x0000->T1CC0); 実行開始;T1IF=0; &




nbsp; // 割り込みフラグをクリア }/* メイン関数--------------------------------------------------------*/void main(void





) { xtal_init(); led_init(); timer1_init();while(1); &





nbsp; //オーバーフロー割り込み待ち }/*T1ターミナルサービスサブルーチン---------------------------------------*/#pragma vector=T1_VECTOR __interrupt



v oid T1_ISR(void) {EA=0; //割り込みオフ led1 = !


led1; //LED反転EA=1; //割り込み中 &nbsp

; T1CTL &=~0x10; // 割り込みフラグをクリア }.

  OK]を、プログラムをコンパイルし、オンラインデバッグは、LED1の開発ボードは、期待どおりに点滅し、約1秒の点滅間隔を感じる。 しかし、これは実験の成功を証明するには十分ではありません、あなたは厳密に1秒の間隔を決定することができれば完璧だろう〜ので、私はWIN 7の時計を(タスクバーの時間の右側をクリックするとすることができます)開いた。秒針を見ながら、目の端で点滅するLED1をちらっと見た。結果は:2分で、2つのペースは基本的に同じです(この精度は許容することができます〜)。この時点で、実験は基本的に完了したと言える。

タイマー2

  タイマー2は MACタイマーとも呼ばれ、IEEE 802.15.4 MACのイベントトラッキングプロトコルをサポートするために特別に設計されています。このタイマーには、発生したサイクル数を記録するために使用できる8ビットのオーバーフローカウンターがあり、フレーム開始デリミターが受信/送信された正確な時間、または送信が完了した正確な時間を記録するために使用される16ビットのキャプチャレジスタがあり、また、特定の時間(受信開始、送信開始など)に無線モジュールに様々なコマンド選択通信信号を生成するために使用される16ビットの出力比較レジスタがあります。

タイマー3/4

  タイマ3/4はタイマ/カウンタ/PWM機能を持つ8ビット・タイマです。t3/t4には2つの出力比較チャネルがあり、それぞれPWM出力として使用できます。

V. まとめ

  このセクションでは、タイマ 1 のオーバーフロー割り込みのカウント方法を学び、LED 点滅間隔 1 秒の正確な制御を実現しました。次の章では、CC2430のシリアル・ポート通信について紹介する。






前へ:【再掲】Zigbeeの旅(III):CC2430基礎実験~外部割り込みについて
次へ:[再変更]Zigbeeの旅(V):CC2430基礎実験~シリアル通信編
收藏转播分享ブックマークリレー淘宝
コード農家ネットワーク、唯一の練習過程で公開され、技術的な困難に遭遇し、他の人を誤解させない。
投稿するにはログインが必要です ログイン会員登録

このバージョンのインテグラルルール


免責事項:Code Farmerによって公開されたすべてのソフトウェア、プログラミング教材や記事は、学習と研究の目的のみに使用するために制限されています。上記のコンテンツは、商業的または違法な目的のために使用してはならない、そうでなければ、すべての結果は、ユーザー自身が負担するものとします。本サイトはネットワークからの情報であり、著作権紛争は本サイトとは関係ありません。上記のコンテンツはダウンロード後24時間以内にコンピュータから完全に削除する必要があります。もしあなたがこのプログラムを気に入ったなら、正規のソフトウェアをサポートし、登録を購入し、より良い正規のサービスを受けてください。もし著作権侵害があれば、メールでご連絡ください。

メール To:help@itsvse.com

QQ|( 鲁ICP备14021824 号-2)|サイトマップ

GMT+8, 2024-9-17 14:50

クイック返信トップに戻る一覧に戻る