lpc1114 で短めなパルスをつくる。

Raspberry Pi に乗っけられるlpc1114のボードで相変わらず遊んでいます。

どれくらい短いパルスをこれで生成できるのか実験してみました。PWMを使うのが常識的とは思いますが、ここでは、Ticker で0.1秒程度に1回割り込みをかけて、下のルーチンでいくつかの異なったやり方でGPIOをトグルして、オシロスコープで生成したパルスを観察しました。

void pulse () {
// 常識的
 LPC_GPIO0->DATA |= 0x0000080; // dp28 set 1
 LPC_GPIO0->DATA &=~0x0000080; // dp28 set 0

 // faster?
 int n,n0,n1;
 n=LPC_GPIO0->DATA;
 n0= n|0x80;
 n1= n&(~0x80);
 LPC_GPIO0->DATA =n0;
 LPC_GPIO0->DATA =n1;

// 他のポートに影響を与える
 LPC_GPIO0->DATA = 0x80; // dp28 set 1 (affect other pin)
 LPC_GPIO0->DATA = 0x0 ; // dp28 set 0
}

結果

  1. 常識的な、ORしてANDしてbit を上げ下げするもの: 104ns
  2. ポートのデータを読んでおいて、OR, ANDしたものを用意しておいてから、順次書き込む。: 42ns
  3. 他のポートのことは無視して、定数を書き込む: 62ns

というわけで、一番短くて42ns のパルスが作れることがわかりました。ちっちゃなマイコンなのにすごいね。

PWMを使ってパルスを作るのもやってみましたが、こちらは644ns より短いパルスにならないので論外(ペリフェラルのマニュアル読んでないので、何でか分かってないけど)。

… あとで調べたら、mbedのpwm ではプリスケーラーが30に設定されているために、パルスが短くならないとわかった。

実験ではpin dp18のpwm を使っていた(TMR16B1)ので、これに対応しているレジスタを調整して、パルスを出してみる。

# prescaler 0
TMR16B1->PR=0
# MR3: PWM period maximum 16bit value (一番間隔を長くする)
TMR16B1->MR3=65535
# MR0: PWM duty cycle 16 bit
# この値になったときにパルスが立つので、一番大きな値にすると短いパルスとなる。
TMR16B1->MR0=65535

pin 番号とTMRの関係は、pwmout_api.c とかPinNames.hをみて調べた。

mbedを使わずに直接やってもいいけど、とりあえず実験なので、PwmOut でpwm を使うようにした後にレジスタを書き換えるという乱暴な方法を取りました。まあ、動いているからよい。

結果

20.8ns=(1/48M)のパルスを1.37ms (=65536/48M)間隔で出力することができました。めでたしめでたし。オシロで観察していると、プローブへのGNDラインの引き方でパルスの反射がとってもぐらぐら動くので面白いです。

とりあえず、あとのために、pwm ポートと設定レジスタの対応を下記にまとめる。

  • dp1 P0_8 PWM_1 LPC_TMR16B0 MR0
  • dp2 P0_9 PWM_2 LPC_TMR16B0 MR1
  • dp18 P1_9 PWM_3 LPC_TMR16B1 MR0
  • dp24 P0_1 PWM_5 LPC_TMR32B0 MR2

中学受験生の正月

我が家のケースはこんな感じでした。

大晦日:塾から帰って過去問やって、すき焼きでご飯食べて紅白見て、年越しそば食べて寝た。過去問は、1月の千葉受験校を年内に一度は解いてみよう!ってことでやってみたけど、「難しくて久しぶりに頭が痛くなった」とのこと。合格点には達していたけど、国語で稼いだのが大きく、算数は受験者平均に達せず。

元日:夜更かししないようにしたけど、朝起きてこない。起きて計算問題に取り組んだ後、お雑煮(白みそ関西風)と簡単なおせちで朝を。ささやかなお年玉のあと、初詣は、近所の氏神様へ歩いて行った。人がほとんどいないのでゆったりとお願いをした後、甘酒を楽しむ。

帰宅後、昼は昨日のすき焼きの残りに残りの肉を入れてインスタントすき焼きで楽をしつつ、娘は過去問に取り組む(1月埼玉受験校)。辛うじて合格点には達している。さらに、過去問に取り組む(2月併願校)。こちらは合格点に達せず(キビシー)。

夕方、文房具等補充が必要と思って、平塚ラスカの無印に買い物に出かけたが、元日お店がやっておらず、時間を無駄にする(みどりの窓口にも用事があったのでいいけど)。同じく平塚のららぽーとに行ってみたらと思ったけど、周囲1kmがド渋滞であきらめる。ひょっとしたらと思って秦野のイオンのところにある無印に行ってみたら店は開いていたがお目当ての文房具が売ってない。通販がいいね(正月やってないけど)。イオンもめっちゃ人が多い。実は、一人でドライブして息抜きでした。

カニすきで夕食時ニュースを見る流れで見たNHKの解体新書のドラマ面白そうと思ったけど、見ていると過去問進まないので、途中でテレビを消す。

そのあと、一生懸命2/1校の願書を書く。文章案の内容、長さ(枠に収めること)かなり苦労したが、一応書きあげる。書類のコピーを取っておく。

1/2: 今日も塾はないので、2/1の模擬を試験時間を合わせて実施。お雑煮今日はけんちん汁仕立て。

午後入試を受けるつもりなので、午後入試受験校の過去問も用意。昼ごはん(ポルチーニ茸のリゾット)を食べた後、面接の練習をやってみるが、うーん・・・って感じ。黙ってちゃ通じない・・・

午後入試校の過去問をやった後に、午前午後両方の採点をしてみるが、ミスが多くて午後校はともかく午前校は受験者平均点にも達しない(涙)。

夕方、昨日の解体新書のドラマの続きを見てしまう。夕食後、娘は、今日昨日やった過去問の振り返りに取り組む。私は、マイコン遊びで時間を無駄にする。

1/3: やっぱり朝起きてこなかったけど、起きた後計算を自分からやっているようだ。。。私は、朝からマイコン遊びで時間を無駄にする。。。もう〆ないと。

と思ったけど、相変わらずマイコン遊びに逃避。娘は黙々と計算の後、振り返りをやり、そのあと2/2午後受験校(昨日とは別)の過去問をやる。声教の赤本に解答が載っていない!ことに問題を解いた後に気が付くが、娘に「前に間違えて買った前年度の赤本なら載っているかも」と言われ、本棚にしまってあるのを引っ張り出してきて確認したところ、そっちには載っていた。娘good job!

3年分、とか書いてあるのに、3年目は第一回の入試しか載っていないというアコギな商売。赤本は、必ず、購入時に内容の確認が必要(今更気が付いても!)特に午後入試は、全然載っていないのとかもある。どういうこと!?

結果は、算数は受験者平均点に達していなかった(これも第一問でのミスのせい!)が、理科で挽回して合格点には達していた。

午後元気に娘は塾に行き、私は元日開いていなかった無印で買い物をして帰宅。

明日から仕事だー。そして、2月校の出願準備が始まる!

年賀状まだ作っていないけど、「郵便局からのお知らせです、年賀はがきを52円で差し出すことができる期間は1月7日までです。」に気が付き、緊張する。今日やらねば。