Robotický den s .NET Micro Framework – FEZ Panda II, přerušení
Velmi často potřebujete přerušit běh hlavního programu v reakci na nějakou důležitější událost, např. najetí na hranici arény při mini sumu. K tomu se dají velmi dobře využít tzv. přerušení. Můžete velmi rychle reagovat na změnu stavu digitálního pinu. Je to velmi podobné systému událostí v běžných operačních systémech. Jako zdroj přerušení použijeme tlačítko, které připojíme na digitální pin, který podporuje přerušení.
private static InterruptPort i;
private static OutputPort ledGreen;
private static OutputPort ledRed;
public static void Main()
{
i = new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.Di11, true, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeLow);
i.OnInterrupt += new NativeEventHandler(i_OnInterrupt);
// Blink board LED
bool ledState = false;
ledRed = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di0, ledState);
ledGreen = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di2, ledState);
while (true)
{
// Sleep for 500 milliseconds
Thread.Sleep(500);
// toggle LED state
ledState = !ledState;
ledGreen.Write(ledState);
}
}
static void i_OnInterrupt(uint data1, uint data2, DateTime time)
{
ledRed.Write(!ledRed.Read());
}
Štěpán