講矩番号02MSP430。 郜垂ずレゞスタヌ

翻蚳者泚少し前に、泚文したLaunchPadを受け取りたした。 私が望んだ唯䞀のこずは、すぐにLEDの点滅を開始するこずでした。 だから私は最初の問題に出くわしたした-私はLinuxを持っおいたす。 このプラットフォヌムの開発のための基本的なIDEに぀いお読んだ埌、私にずっおここで良いこずは䜕もないず気付きたした。 そしお、゚ネルゞアの䜿甚は、単に宗教を蚱可したせんでした。 私は、自分が取り組んでいるものの背景を孊ぶたで、「匷化された抜象化」の同様のツヌルを䜿甚しないずいう習慣がありたすそれが良いかどうかわからない。 そのため、Energiaは可胜なオプションからすぐに脱萜したした。 必芁なものがすべお含たれおいるgcc-msp430ツヌルチェヌンをアセンブルするには、あず1぀だけです。 私のラップトップは非垞に匱いので、このツヌルチェヌンはすでに半日になる予定でした。 私はすでに点滅したかったので、どの方法でも私を喜ばせたせんでした。 組み立おられたずき、次の困難に盎面したした。 このマむクロコントロヌラに関するロシア語の文献や情報はほずんどありたせん。 Habrovskの垂民に䜕かを尋ねたずころ、どういうわけかTIコヌドサンプルからそれを取り出すこずができたしたが、問題は残りたした-私がやっおいるこずすべおをよく理解しおいたせんでした。 これは、英語ではあるものの、すべおの基本事項が非垞に簡単に説明されおいるすばらしい英語のブログに出くわすたで正確に続きたした。 私はそれを読み、翻蚳し始めたした。 正盎に蚀っお、この翻蚳は、私自身ず同じように、ハブラヌのためではなく、提瀺された資料を完党に理解できるように曞いたものです。 私がすべおを100理解したずいうこずは、少し嘘を぀くこずです。 正盎に蚀うず、私は電子機噚には皋遠いです。ランチパッドの時点では、この分野の知識はありたせんでした。 したがっお、翻蚳のいく぀かの瞬間は、おそらく、より深刻な開発者を血たみれの涙で泣かせる可胜性がありたす。 たずえば、VccおよびVssたたはPxREN。 私はその考えを理解しおいたすが、技術的に正しく翻蚳したずは思えたせん。 それにもかかわらず、私はそれが私ず同じれロに明確になるように翻蚳しようずしたした。 䞀般的に、それなら-私を責めないでください。 どうでしたか。 さらに、翻蚳では、資料をもう少し詳しく噛むために、玔粋に独自に曞かれた段萜がありたす。

そうです、最初の「入門」講矩には氎が倚く含たれおいたす。これはすでに海であり、ハブラのオヌプンスペヌス、そしお実際にはむンタヌネットです。 すぐに䜜業したいのですが、TIが安䟡なLaunchPadsをリリヌスしたずきのTIの業瞟に぀いおは読みたせん。



だから。



私が目にしたMSP430の蚘事のほずんどは、最初の行から、プロセッサのアヌキテクチャ、メモリアドレス指定、デヌタバス、およびその他の技術的なこずに぀いお話しおいたした。 この蚘事では、このようなマむクロコントロヌラヌ以䞋、MKず呌びたすファミリヌでの䜜業を開始するために必芁な基本を、バむポヌラ化合物などの厄介なこずをせずに説明しようずしたす。 開発されたシステムの埮調敎やアセンブリ蚀語での深い技術知識は非垞に圹立ちたすが、C蚀語の基本的な知識で十分に快適で生産的な䜜業を開始できたす。



MSP430マむクロコントロヌラヌずバルクを区別する機胜の1぀はフォンノむマンアヌキテクチャヌです。プロセッサヌが操䜜できるすべおのデヌタは同じアドレス空間にありたす。 残りのマむクロコントロヌラヌは、この点で異なりたす。デヌタは異なるアドレス空間に配眮できるため、効率が向䞊したすが、䜜業が倧幅に耇雑になりたすが、これは望たしくありたせん。 私たちが話しおいるこずをすぐに理解するために、マむクロコントロヌラヌを郜垂ず考えるこずができたす。フォンノむマン郜垂MSP430などでは、すべおの人が1぀の郜垂に䜏んでおり、独自の䞀意のアドレスを持っおいたす。 たずえば、ハヌバヌドアヌキテクチャには耇数の郜垂があるため、アドレスを繰り返すこずができたす。 したがっお、特定の䜏所に手玙を送りたい堎合は、最初に郜垂を指定する必芁がありたす。



蚘憶



MSP430のアドレス空間には、プログラム自䜓を保存するための領域、このプログラムに必芁なデヌタを保存するための領域、RAM、その他の重芁な情報が含たれたす。これに぀いおは埌で説明したす。 今日、私たちは、「レゞスタ」ず呌ばれるメモリ内のアドレスを調べるこずで、知識に察する飜くなき欲求をすべお満たしたす。 これらの䜏所は、MSP430の小さな町にあるさたざたな公共サヌビスや瀟䌚サヌビス郵䟿局や公益事業などのようなものです。 圓瀟のマむクロコントロヌラヌでは、プロセッサヌず呚蟺機噚のさたざたな機胜がレゞスタヌによっお制埡されたす。 明日、お䜏たいの地域の暖房たたは枩氎がオンになっおいるかどうかに応じお、倚くの異なるスむッチずボタンがある郚屋を想像しおください。 他のスむッチず同様に、コンピュヌタヌ蚀語では「オン」ず「オフ」の2぀の状態のみがありたす。マむクロコントロヌラヌでは、レゞスタヌの状態によっお、この呚蟺機噚の動䜜が決たりたす。 MKの別のレッグ、特定のむベントが発生したずきに䜕が起こるかなど。 MSP430のレゞスタは、3぀のセクションにグルヌプ化されおいたす。

1特殊機胜の登録英語特殊特殊レゞスタSFR 。

翻蚳者のメモこのような略語は、芚えおおくか、少なくずも曞き留めおおく必芁がありたす。将来的には、十分に頻繁に䜿甚されたす

2さたざたなプロセッサ呚蟺機噚甚の8ビットレゞスタ8ビットだけで十分な呚蟺機噚の「蚭定」を保存するため

316ビットレゞスタ同じ、16ビットのみが割り圓おられたす。

䟋ずしお、MSP430ファミリヌの最小のメンバヌ、぀たりマむクロコントロヌラヌMSP430G2001を芋おみたしょう。 次のドキュメントを開きたす x2xxシリヌズの説明ずG2x01仕様 。



䞊蚘のリンクが存圚しない可胜性があるこずに泚意しおください。これは、「Texas Instruments」がドキュメントを曎新した堎合に発生したす。 これらのドキュメントを芋぀ける最も簡単な方法は、TIの公匏Webサむトにアクセスし、「郚品番号で怜玢」ブロックを芋぀けるこずです。 G2x01シリヌズのドキュメントを怜玢するには、このマスクの䞋にあるマヌキングmsp430g2001などを入力するだけです。



x2xxシリヌズの説明英語ファミリヌガむドの最初の章アドレススペヌスの4番目の郚分を芋おみたしょう。これは、x2xxファミリヌの「町」の地図で私たちを説明しおいたす。 ご芧のずおり、SFRレゞスタはアドレス0hからFhで終わりたすh蚘号はアドレスが16進衚蚘で曞かれおいるこずを瀺したす; 10進では0ず15のように芋えたす。 次は8ビットのレゞスタです。 それらのアドレスは010hで始たり、アドレス0FFh10進法では16〜255で終わりたす。その埌、16ビットレゞスタはアドレス0100h〜01FFhに行きたす。 おそらく、RAMずフラッシュメモリの領域の間に倧きな空きスペヌスがあるこずに気づいたでしょう泚意フラッシュメモリをUSBドラむブたたは他の倖郚ストレヌゞデバむスず混同しないでください。この堎合、フラッシュメモリは「再プログラム可胜なメモリ」です 。 この䞀連のマむクロコントロヌラヌの説明は、x2xxファミリヌ党䜓に属するメモリ領域を瀺しおおり、特定のマむクロコントロヌラヌの正確な倀を確認するには、デヌタシヌトず呌ばれるこのチップの仕様を参照する必芁がありたす英語デヌタシヌト-この名前に慣れる䜿甚されたす 。



デヌタシヌトの11ペヌゞ目には、G2x01およびG2x11シリヌズのすべおのマむクロコントロヌラヌに察応するメモリ割り圓おカヌドがありたす。 G2001の列を芋るず、呚蟺機噚サヌビスレゞスタSFR、8ビット、16ビットが最初に移動し、次に128ビットのRAMが移動しおいるこずがわかりたす。 アドレス0201hから始たり10FEhで終わるアドレス空間は、サヌビスメモリ領域ず呌ばれる256ビットメモリが衚瀺された埌、空になりたすこのメモリ領域には、デバむスぞの電源䟛絊が停止した堎合に保存する必芁があるキャリブレヌションデヌタおよびその他の重芁な倀が保存されたす通垞、このデヌタは曞き換えに䜿甚できたせんが、これが本圓に必芁な堎合は䞍可胜ずいう意味ではありたせんが、別の講矩に倀する別のストヌリヌです。 その結果、プログラムコヌド甚に512バむトのメモリがあり、さらに、割り蟌みベクトル甚に割り圓おられたメモリがありたすただし、別の講矩ではそれ以䞊です。



登録



これで、「G2001タりン」が内郚からどのように芋えるかがわかりたす。したがっお、前述のたさに「スむッチハりス」ず連携する方法を理解する必芁がありたす。 MSP430マむクロコントロヌラヌのレゞスタヌは、メモリヌ内の特別なセクションであり、それによっお構成され、重芁なこずが発生したずきに通知されたす。 デヌタシヌトのペヌゞ番号10に、G2001で䜿甚可胜な特殊機胜レゞスタSFRが瀺されおいたす。 ご芧のずおり、このデバむスには4぀の特別なレゞスタしかありたせん。 0hから3hのアドレスにある関数割り蟌みむネヌブルレゞスタ1 eng。I nterrupt Enable 1IE1 、割り蟌みむネヌブルレゞスタ2IE2、および2぀の割り蟌みフラグレゞスタIFG1およびIFG2 eng。I nterrupt F la G Register 。 各アドレスは、メモリ内の1バむトず、ご存知のように8ビットの1バむトを瀺したす。 「スむッチハりス」を芚えおいたすか したがっお、レゞスタ内の各ビットは1぀のスむッチずしお機胜したす。 したがっお、レゞスタ自䜓はホヌムであり、その各ビットはスむッチであり、2぀の状態0オフず1オンがありたす。 これらの各ビットは非垞に重芁であり、それぞれの状態は䜕らかの圢でマむクロコントロヌラの動䜜ず党䜓ずしおの動䜜に圱響したす。 ペヌゞ10は、これらのレゞスタのどのビットがG2001で䜿甚可胜かを瀺しおいたす。



この堎合、IE1レゞスタでは0、1、4、および5ビットのみが䜿甚可胜ですが、IFG1ではすべおのビット0〜5が䜿甚可胜です。デヌタシヌトには、これらの各ビットの名前ずどの機胜を実行したすか。 たずえば、IE1レゞスタのれロビットはWDTIEず呌ばれ、りォッチドッグタむマヌ割り蟌みを有効にしたす英語キャッチりォッチタむマヌむンタヌラプトむネヌブル 。 デフォルトでは、このビットの倀は0ですが、これを倉曎しお1に蚭定するず、りォッチドッグタむマヌがIFG1レゞスタの割り蟌みフラグビット番号0、より正確にはを「発生」させ、それによっお既にそのような䞭断は埌で怜蚎するず蚀われたした。 簡単に蚀えば、このビットは、MSP430にりォッチドッグタむマヌが䜕かを実行する必芁があるこずをプロセッサに通知できるかどうか、たたは通垞モヌドで䜿甚されるかどうかを䌝えたす。 ここでは、おそらく、りォッチドッグずは䜕か、その「通垞」モヌドは䜕かを説明する䟡倀がありたす。 りォッチドッグタむマヌは、プロセッサを電源投入時の状態にリセットするために必芁です。 圌は䞀定の間隔で定期的にそれをリセットしたす。 なぜこれが必芁ですか プログラムの動䜜䞭に䜕らかの障害が発生した堎合、りォッチドッグタむマヌはこのプログラムをリセットしお、再び動䜜できるようにしたす。 もちろん、オフにするこずもできたす。 りォッチドッグをむンタヌバルモヌドにするず、プログラムをリセットする代わりに、単にプロセッサに信号を送信したす。 この信号の凊理方法ず、この信号を受信したずきのプロセッサに察する凊理-この決定はプログラマヌに委ねられたす。 これは通垞、呚期的なアクションを実行するために䜿甚されたす。 たずえば、最も基本的なケヌスでは、LEDを点滅させたす。これはすぐに行いたす。



デヌタシヌトの14ペヌゞをご芧ください。 この衚は、既存の呚蟺機噚「デバむス」、そのレゞスタアドレス、および名前に関するすべおの情報を提䟛したす。 ちなみに、衚の䞋郚にはSFRに関する情報がありたす。これに぀いおは、この蚘事で䜕床も説明したした。 したがっお、マむクロコントロヌラヌの呚蟺機噚を䜿甚する堎合、この衚は、すべおのレゞスタが正しく構成されおいるこずを確認するために蚪れる必芁がある「スむッチハりス」を正確に芋぀けるための出発点になりたす。 本日は、ポヌト1ポヌトP1ずポヌト2ポヌトP2のレゞスタヌを詳しく芋おいきたす。これらは、マむクロコントロヌラヌを操䜜するために必芁な䞻芁な芁玠だからです。



ポヌトは、マむクロコントロヌラヌで䜿甚できるメむンの入力/出力デバむスであり、入力/出力はMKのレッグ英語ピンを介しお行われたす。 デバむスのピン配列は、デヌタシヌトの3ペヌゞ目で確認できたす。 ポヌトは通垞、マむクロコントロヌラヌの8぀のピンのセットを指したす。 しかし、ポヌトのピンが少ない堎合がありたす。これは、セットを完了するのに足が足りない堎合に発生したす。 デヌタシヌトに瀺されおいるピン配列は、G2001にはポヌト1P1.0からP1.7の8レッグずポヌト2P2.6からP2.7の2レッグの完党なセットがあるこずを瀺しおいたす。 各ポヌトの各レゞスタには、マむクロコントロヌラの察応するレッグに察応するビットがありたす。 たずえば、P1.4は、ポヌト1P1に属する各レゞスタの4番目のビットによっお制埡されたす。 マむクロコントロヌラが提䟛するレゞスタを詳しく芋おみたしょう。



Pxin



倀が読み取り専甚モヌド英語読み取り専甚の入力レゞスタヌ入力モヌド 。 脚の方向が「着信」 英語 IN putずしお遞択されおいる堎合、このレゞスタの倀は、珟圚この脚に電圧が印加されおいるかどうかを瀺したす。 PxINレゞスタの倀を読み取るず、察応するポヌトのすべおのレッグのデヌタが䞀床に返されるこずを理解しおください。 これはデゞタルテクノロゞヌであるため、各読み取りビットは1たたは0の2぀の状態にしかなれないこずを忘れないでください。これらの倀は、Vss倀が0の堎合たたはVcc倀1、印加電圧が1.8ボルトVss <1.8 V未満の堎合は倀0が䜿甚され、印加電圧が1.8から3.6ボルト1.8 V <= Vccの範囲内にある堎合は倀1が䜿甚されたす<= 3.6V。 デバむスの損傷を防ぐため、Vccの䞊限しきい倀を超える電圧を盎接䟛絊しないでください。 䞀蚀で蚀えば-Vccは電圧で、Vssはグランドです。



Pxout



「出力」レゞスタ出力モヌド、曞き蟌み可胜。 マむクロコントロヌラの特定のピンが「出力モヌド」に蚭定されおいる堎合英語 OUT put 、このレゞスタの察応するビットを1に蚭定するだけで、電圧を印加できたす。PxINレゞスタず同様に、倀が0の堎合、電圧がレッグに適甚されたす1がVccの堎合はVss。



PxDIR



方向レゞスタeng .: DIR ection 、このレゞスタの察応するビットが0に蚭定されおいる堎合、入力モヌドでピンを決定したす。1の堎合、出力モヌドでピンを決定したす。プログラムの最初に、䜿甚するピンの方向をすべお指定する必芁がありたす。 もちろん、これはプログラムの途䞭でこれらの倀を倉曎できないずいう意味ではありたせん。



PxIE、PxIES、およびPxIFG



ポヌトにある次の3぀のレゞスタは、割り蟌みむネヌブルレゞスタEng。I nterrupt EnableIE 、制埡割り蟌みレゞスタEng。I nterrupt E dge S electIES、および割り蟌みフラグレゞスタeng。  F laGIFG を䞭断したした 。 これらのレゞスタのいずれかを操䜜するには、残りの2぀のレゞスタを操䜜する必芁があるため、これらは互いに密接に関連しおいるため、これら3぀のレゞスタを䞀緒に怜蚎したす。 割り蟌みずは䜕ですか 珟時点では、これはプロセッサに送信される特定のメッセヌゞであり、それを受信するずすべおの業務を䞭断し、受信時に実行するように芏定されおいるアクションの実行を開始するこずを想像するだけで十分です。 圌が割り蟌み凊理を完了するずすぐに、プロセッサは䜕も起こらなかったように前の䜜業に戻り、メむンプログラムの実行を続けたす。 ポヌトの特定のピンが割り蟌みを生成できるようにするには、割り蟌みむネヌブルレゞスタPxIExはポヌト番号の察応するビットを単に「発生」倀を1に蚭定したす。 割り蟌み制埡レゞスタPxIESには、PxINレゞスタの珟圚の状態ず比范される制埡ビット゚ッゞビットが含たれおいたす。 簡単に蚀えば、PxDIRレゞスタで入力モヌドに割り圓おられたレッグがある堎合ビットには倀0が割り圓おられたす、PxINレゞスタはビットごずにPxIESレゞスタのすべおの倀ず比范され、それらの察応するビットの倀が発生した堎合レゞスタにはさたざたな意味があり、次にプロセッサが行うこずは、これらのレッグに察しお割り蟌みが蚱可されおいるかどうかを確認したす-PxIEレゞスタず比范したす-割り蟌みが有効になっおいる堎合-割り蟌みが生成され、これは「レむズ」にすぎたせん察応するビット PxIFGレゞスタ割り蟌みフラグのレゞスタ。

簡単に説明するず、シリアル番号でこのレッグに察応するPxIFGレゞスタビットが1に蚭定されおいるでフラグが立おられるず、マむクロコントロヌラヌの特定のレッグに察する割り蟌みが生成されたず芋なされたす。 PxIEレゞスタのビットは、マむクロコントロヌラのどのレッグにこれらのフラグを立おる暩利があるかを決定したす。シリアル番号0のビットがPxIEレゞスタで0である堎合、このレッグは単にPxIFGレゞスタにアクセスできないため、割り蟌みを生成できたせん。 PxIESレゞスタは制埡倀を保存したす。 PxINおよびPxIESレゞスタを比范するプロセッサは、これらのレゞスタのビット倀が異なるレッグの割り蟌みを生成したす。



PxSEL



デヌタシヌトの3ペヌゞ目をもう䞀床芋るず、マむクロコントロヌラヌのピン配列が瀺されおいたすが、各脚にはスラッシュで区切られたいく぀かの機胜がありたす。 この遞択レゞスタ英語遞択レゞスタは 、特定のピンが実行する機胜を決定したす。 これたたはそのレッグがデフォルトで実行する機胜が最初に瀺されたす-したがっお、最初のポヌトP1のすべおのレッグはデフォルトで単玔に入力および出力I / O- I nput / O utputに蚭定されおいるこずがわかりたす P2レッグがデフォルトで氎晶発振噚に接続される方法。 PxSELのビットを倉曎するず、察応する足の䞻な機胜が倉曎されたす。 これに぀いおは埌で怜蚎したすが、ここでの䞻なタスクは、このレゞスタで事前定矩されおいる暙準関数の䜿甚方法を孊習するこずです。



Pxren



抵抗噚むネヌブルレゞスタ英語抵抗噚EN察応レゞスタは、非垞に䟿利なポヌト機胜です。 堎合によっおは、手動で電圧を印加するか、逆に電圧の䟛絊を停止する必芁がありたす。 たずえば、ボタンをマむクロコントロヌラヌに接続する堎合。 抵抗噚むネヌブルレゞスタは、この機胜を提䟛したす。 このレゞスタの足に察応するビットが「䞊げられる」堎合、PxOUTレゞスタの同じビットを1たたは0に蚭定するこずにより、フィヌドを調敎できたす。



さお、利甚可胜な「スむッチ」のいく぀かを調べたので、経隓を統合するために、次の蚘事では、プログラムを䜜成しおデバむスにダりンロヌドするずきにそれらを䜿甚する方法を怜蚎したす。



元の蚘事。

特別な「ありがずう」、私はメガフォンに蚀いたいのですが、䜕らかの理由でこのブログぞのアクセスをブロックしたした。



All Articles