chakokuのブログ(rev4)

日々のごった煮ブログです

nrf51822の割り込みについて

nrf51822の割り込み制御ブロック(NVIC(nested vector interrupt controller)の仕様書がないと思っていたらやはり同じような質問がなされていて、Cortex-M0のNVICはARM標準アーキだから、ARMの仕様書を見ろということらしい。URLは以下

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0497a/CIHIGCIF.html

Interruptを有効にするフラグは以下の様で、多分各ビットが割り込みNoに対応してEnable/Disableを管理するのだろう。。と

0xE000E100	ISER	RW	0x00000000	Interrupt Set-enable Register

nrf51822でNVICが配置されているアドレスが何なのか?仕様書を探しても見つけられず。また同様に、RTC/Counterの割り込み番号がどれなのか?も見つけられず。結局、nordicが提供するライブラリ(system_nrf51.h)のヘッダファイルから、以下と判断

  RTC0_IRQn                     =  11,              /*!<  11  RTC0 */
  RTC1_IRQn                     =  17,              /*!<  17  RTC1 */ 

NVICの番地が分からないのだが、、CortexMに連結されているとするなら、、0xE000E100と思われる。

■追記
最終的には、nrf51822のRTC(RealTimeCounter)と割り込み(NVIC)による組み合わせで1秒周期Lチカできるプログラムが組めた。NVICのレジスタの番地が分からなかったが、これはARM Cortex-M0のコア内のハードなので、標準仕様と同じであった(0xE000E100)。また、RTCが起こす周辺IO割り込みベクタが何番か分からかなった件は、上記system_nrf51.hの通り、RTC0は11番であった(ソース必要ならDL可能にしますが、、こんなマイナーなソース要らないですよね)。ひとまず、シリアル通信、割り込みプログラミングまでできたので、ボチボチ俺VTLのポーティングに取り組む予定。。それには、俺VTLの整数仕様を従来のshort(16bit)からint(32bit)に変更が必要(俺VTLでマイコンの周辺IOレジスタを叩けるようにするたため)。

■ご参考URL
以下のリストにもnrf51XXXの割り込みベクタ一覧が書かれている。
https://github.com/pfalcon/cortex-uni-startup/blob/master/nrf51/nrf51.lst

メモ:Cで書いたStartUp
https://github.com/pfalcon/cortex-uni-startup/blob/master/startup.c