ATtiny202のPTIで七転八倒を楽しむ。

 PTIの研究結果
(日本語マニュアル  P140 22.5.1. 初期化を読んで)
 
 

 
 
スリープモードでpower downしているattiny202を定期的に起こしたいのですが、PTIの周期タイマーの割り込みという機能を見つけたので使ってみます。ど素人の私にはなんのことなのかさっぱりですが、一定時間ごとに「起きて~!」と目覚ましを効かせるイメージでしょうか?
スリープモードのpower downを起こせる機能は限られています。PTIの周期タイマー割込みはその一つ…らしいです。
正直、日本語マニュアルを読んでもサッパリ理解できません。なのでまずは想像の翼をめいいっぱい広げて、適当に理解したつもりになって自分をだましてみます。これはその第一弾です。
 てか割り込みってなに?どうやらプログラムの話しらしい。で割り込みって言うからには本流があるに違いない。この本流の処理中に割り込んで処理を優先させる事なのかな?スリープモードでpower downしているattiny202を定期的に起こすのも割り込みの仕事らしい。割り込まないとattiny202はいつまでも寝ているのでしょうね。
 
 
 RTCのクロック数を選択?
「RTCクロック(CLK_RTC)用の供給元を選びます。」 とあります。基本となるタイマーを何にする?指定しないとだめよん!ということなのかな。RTCクロックは下記のPTI周期用タイマーの下で動くチクタク機能だと思うのですが、どうなんでしょう?
選べるのは3種。内訳は、ATtiny202内部のクロックスピードが違う二つ。外部クロック用が一つ。ま、内部クロックのどちらかの選択なのかな。


 
PTI周期用タイマーの割り込み許可?
PTI周期用タイマーは、RTCクロック を使って一定間隔で発動させる、そんなイメージでしょうか?(10カウントごとにゴングを鳴らす的な?)
でこの許可はPTI周期用タイマーを割り込みで使えるように許可してくださいね。ってことなんでしょうね。ほんとか?
前回のスリープモードのpower downで寝ているATtiny202を外部からのpin刺激で起こした時の七転八倒を思い起こすと、割り込みの許可を出しっぱなしだと何かの拍子に意図せず割り込みが発動される場合があるようです。周期用タイマーの感覚が短いとattiny202はスリープできないように感じる場面もでてくるのではないでしょうか?
よってISR ()でPITINTFLAGSのPIを1にすることでタイマーの割り込み許可が0に戻るのではないか?

 
割り込みタイマーのセッティング
割り込みまでの周期時間(間隔時間)を選ぶ。
んで、タイマーを使うぞ!のスイッチを入れる(0から1に変更する)。
 
 
 
日本語マニュアルにあった説明で・・・
● ビット0 - PI : 周期割り込み要求フラグ (Periodic Interrupt Flag)
このフラグは周期割り込みが発行される時に設定(1)されます。
‘1’書き込みがこのフラグを解除(0)します。
意味がよくわかりません。1に設定されたものに1を書き込むと0になる? 
なので(1)を(真)、(0)を(虚)に変換してみると合点がいきます。‘1’はそのまま。


コメント