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í.

clip_image002

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