using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GHI.OSHW.Hardware;
using GHI.Hardware.FEZCerb;
using BoeBotLib;
using Pin = GHI.Hardware.FEZCerb.Pin;
namespace BoeBotLib
{
public class Program
{
DigitalOut LED1 = new DigitalOut(CPU.P22);
public static void Main()
{
new Program().main();
Thread.Sleep(Timeout.Infinite);
}
InterruptPort _ButtonDown;
InterruptPort mkPort(Cpu.Pin pin)
{
return new InterruptPort(pin, true,
Port.ResistorMode.PullUp,
Port.InterruptMode.InterruptEdgeLow);
}
void ButtonDownOnInterrupt(uint portPin, uint level, DateTime time)
{
Debug.Print("Button On " + portPin + " "+ level + " " + time);
}
private void main()
{
_ButtonDown = mkPort(CPU.P23);
_ButtonDown.OnInterrupt += ButtonDownOnInterrupt;
while (true)
{
LED1 <<= 1; // LED1.Write(true);
CPU.delay(500);
LED1 <<= 0; // LED1.Write(true);
CPU.delay(500);
}
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 InterruptPortオブジェクトを作るメソッド
24 チャタリングの処理をする
25 割り込む入力ポートはプルアップする
26 立下りエッジで割り込む
27
28
29 割り込み処理ルーチン
30 portPin : 割り込んできたピン番号
31 level : 割り込んできたレベル
32 time : 割り込んできた時刻
33
34
35
36 InterruptPortオブジェクトをP23に対して作る
37 割り込み処理ルーチンをButtonDownOnInterruptに設定
38
39 LEDの点滅を永久に行う
40
41
42
43
44
45
46
47
48
|