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

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