{"id":1157,"date":"2016-01-20T20:54:00","date_gmt":"2016-01-20T20:54:00","guid":{"rendered":"http:\/\/wp.andreas.bieri.name\/myblog\/?p=1157"},"modified":"2016-01-20T20:54:00","modified_gmt":"2016-01-20T20:54:00","slug":"democode-interrupts-arduino","status":"publish","type":"post","link":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/","title":{"rendered":"Democode: Interrupts (Arduino)"},"content":{"rendered":"<p>3 Codest\u00fccke aus dem Arduino Forum, die verschiedene M\u00f6glichkeiten zeigen, Interrupts zu verwenden. Mit einer Z\u00e4hlschleife kann die Geschwindigkeit des Codes gmessen werden.<\/p>\n<p><span style=\"color: #3366ff;\">\/\/ 3 Beispiele aus dem Arduino Forum zur Ansteuerung von Interrupts<\/span><br \/>\n<span style=\"color: #3366ff;\"> \/\/ ===================================================================<\/span><\/p>\n<pre>\n\/\/ \/\/ Beispiel 1 langsam\n\/\/ #define LED_PIN 5\u00a0 \/\/ digital pin #13 (portb)\n\/\/ #define LED_ON() PORTB |= _BV(LED_PIN)\n\/\/ #define LED_OFF() PORTB &amp;= ~_BV(LED_PIN)\n\n\/\/ void myfunc() {\n\/\/ LED_OFF();\n\/\/ }\n\/\/ void setup() {\n\/\/ pinMode(13, OUTPUT);\n\/\/ attachInterrupt(0, myfunc, RISING);\n\/\/ }\n\n\/\/ void loop() {\n\/\/ LED_ON();\n\/\/ delayMicroseconds(20);\n\/\/ }\n\/\/ ===================================================================\n<\/pre>\n<pre>\n\/\/ \/\/ Beispiel 2 schnell\n\/\/ #define LED_PIN 5\u00a0 \/\/ digital pin #13 (portb)\n\/\/ #define LED_ON() PORTB |= _BV(LED_PIN)\n\/\/ #define LED_OFF() PORTB &amp;= ~_BV(LED_PIN)\n\n\/\/ ISR(INT0_vect) {\n\/\/ LED_OFF();\n\/\/ }\n\/\/ void setup() {\n\/\/ pinMode(13, OUTPUT);\n\/\/ digitalWrite(2, HIGH);\n\/\/ LED_ON();\n\/\/ \/\/ enable INT0 interrupt on change\n\/\/ EICRA = 0x03;\u00a0 \/\/ INT0 rising edge on SCL, falling is 0x02\n\/\/ EIMSK = 0x01;\u00a0 \/\/ enable only int0\n\/\/ }\n\n\/\/ void loop() {\n\/\/ \/\/LED_ON();\n\/\/ delayMicroseconds(2000);\n\/\/ }\n\/\/ ===================================================================\n<\/pre>\n<pre>\n\/\/ Beispiel 3\n\/\/ LED connected to digital pin 13\n#include &lt;TimedAction.h&gt;\nint ledPin = 13;\n\/\/ This is the INT0 Pin of the ATMega8\nint sensePin = 2;\n\/\/ We need to declare the data exchange\n\/\/ variable to be volatile - the value is\n\/\/ read from memory.\nvolatile int value = 0;\n<\/pre>\n<pre>\n\/\/ Install the interrupt routine.\nISR(INT0_vect) {\n  \/\/check the value again - since it takes some time to\n  \/\/activate the interrupt routine, we get a clear signal.\n  value = digitalRead(sensePin);\n}\n\nISR(PCINT0_vect) {\n  \/\/check the value again - since it takes some time to\n  \/\/activate the interrupt routine, we get a clear signal.\n  value = digitalRead(8);\n  delayMicroseconds(500);\n}\n<\/pre>\n<pre>\nint perfCounter = 0;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Zaehler f\u00fcr Messung der Durchlaufzeiten des Loops\nTimedAction timedAction1 = TimedAction(100,timedperfCounter);\n\nvoid timedperfCounter(void)\u00a0\u00a0\u00a0 \/\/ Zaehler f\u00fcr Messung der Durchlaufzeiten des Loops\n{\n  Serial.print(\"Anzahl Loops in 100 ms \");\n  Serial.println(perfCounter, DEC);\n  perfCounter = 0;\n}\n<\/pre>\n<pre>\nvoid setup() {\n  Serial.begin(9600);\n  \n  Serial.println(\"Initializing ihandler\");\n  \/\/ sets the digital pin as output\n  pinMode(ledPin, OUTPUT);\n  \/\/ read from the sense pin\n  pinMode(sensePin, INPUT);\n  digitalWrite(sensePin, HIGH);\n  pinMode(8, INPUT);\n  digitalWrite(8, HIGH);\n\n  Serial.println(\"Processing initialization\");\n  \/\/ Global Enable INT0 interrupt\n  \/\/EIMSK |= ( 1 &lt;&lt; INT0);\n  \/\/ Signal change triggers interrupt\n  \/\/EICRA |= ( 1 &lt;&lt; ISC00);\n  \/\/EICRA |= ( 0 &lt;&lt; ISC01);\n  PCICR\u00a0 |= (1 &lt;&lt; PCIE0);\u00a0 \/\/ Pin Change Interrupt Enable 0\n  PCMSK0 |= (1 &lt;&lt; PCINT0); \/\/ PCMSK0 Pin Change Mask Register 0, Arduino D8 = PCINT0 Pin\n  Serial.println(\"Finished initialization\");\n}\n<\/pre>\n<pre>\nvoid loop() {\nif (value) {\n    \/\/Serial.println(\"Value high!\");\n    digitalWrite(ledPin, HIGH);\n  } else {\n    \/\/Serial.println(\"Value low!\");\n    digitalWrite(ledPin, LOW);\n  } \n  \/\/delay(100);\n  \/\/ Messung der Geschwindigkeit des Loops\n  timedAction1.check();\n  perfCounter++;\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>3 Codest\u00fccke aus dem Arduino Forum, die verschiedene M\u00f6glichkeiten zeigen, Interrupts zu verwenden. Mit einer Z\u00e4hlschleife kann die Geschwindigkeit des Codes gmessen werden. \/\/ 3 Beispiele aus dem Arduino Forum zur Ansteuerung von Interrupts \/\/ =================================================================== \/\/ \/\/ Beispiel 1 langsam \/\/ #define LED_PIN 5\u00a0 \/\/ digital pin #13 (portb) \/\/ #define LED_ON() PORTB |= [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[38],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Democode: Interrupts (Arduino) - Merkbar.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Democode: Interrupts (Arduino) - Merkbar.\" \/>\n<meta property=\"og:description\" content=\"3 Codest\u00fccke aus dem Arduino Forum, die verschiedene M\u00f6glichkeiten zeigen, Interrupts zu verwenden. Mit einer Z\u00e4hlschleife kann die Geschwindigkeit des Codes gmessen werden. \/\/ 3 Beispiele aus dem Arduino Forum zur Ansteuerung von Interrupts \/\/ =================================================================== \/\/ \/\/ Beispiel 1 langsam \/\/ #define LED_PIN 5\u00a0 \/\/ digital pin #13 (portb) \/\/ #define LED_ON() PORTB |= [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/\" \/>\n<meta property=\"og:site_name\" content=\"Merkbar.\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-20T20:54:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"wp_blogadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#website\",\"url\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/\",\"name\":\"Merkbar.\",\"description\":\"IT, Elektronik und Mathematik\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#webpage\",\"url\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/\",\"name\":\"Democode: Interrupts (Arduino) - Merkbar.\",\"isPartOf\":{\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#website\"},\"datePublished\":\"2016-01-20T20:54:00+00:00\",\"dateModified\":\"2016-01-20T20:54:00+00:00\",\"author\":{\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\"},\"breadcrumb\":{\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Democode: Interrupts (Arduino)\"}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d\",\"name\":\"wp_blogadmin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g\",\"caption\":\"wp_blogadmin\"},\"url\":\"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/author\/wp_blogadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Democode: Interrupts (Arduino) - Merkbar.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/","og_locale":"de_DE","og_type":"article","og_title":"Democode: Interrupts (Arduino) - Merkbar.","og_description":"3 Codest\u00fccke aus dem Arduino Forum, die verschiedene M\u00f6glichkeiten zeigen, Interrupts zu verwenden. Mit einer Z\u00e4hlschleife kann die Geschwindigkeit des Codes gmessen werden. \/\/ 3 Beispiele aus dem Arduino Forum zur Ansteuerung von Interrupts \/\/ =================================================================== \/\/ \/\/ Beispiel 1 langsam \/\/ #define LED_PIN 5\u00a0 \/\/ digital pin #13 (portb) \/\/ #define LED_ON() PORTB |= [&hellip;]","og_url":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/","og_site_name":"Merkbar.","article_published_time":"2016-01-20T20:54:00+00:00","twitter_card":"summary","twitter_misc":{"Verfasst von":"wp_blogadmin","Gesch\u00e4tzte Lesezeit":"2 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#website","url":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/","name":"Merkbar.","description":"IT, Elektronik und Mathematik","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"WebPage","@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#webpage","url":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/","name":"Democode: Interrupts (Arduino) - Merkbar.","isPartOf":{"@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#website"},"datePublished":"2016-01-20T20:54:00+00:00","dateModified":"2016-01-20T20:54:00+00:00","author":{"@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d"},"breadcrumb":{"@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/2016\/01\/20\/democode-interrupts-arduino\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/"},{"@type":"ListItem","position":2,"name":"Democode: Interrupts (Arduino)"}]},{"@type":"Person","@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#\/schema\/person\/47691942dec3f2eb9d34bb8b5507870d","name":"wp_blogadmin","image":{"@type":"ImageObject","@id":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/#personlogo","inLanguage":"de","url":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/d0dc804558b03f640b22e497ec010c9a?s=96&d=mm&r=g","caption":"wp_blogadmin"},"url":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/author\/wp_blogadmin\/"}]}},"_links":{"self":[{"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/posts\/1157"}],"collection":[{"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/comments?post=1157"}],"version-history":[{"count":0,"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/posts\/1157\/revisions"}],"wp:attachment":[{"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/media?parent=1157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/categories?post=1157"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ec2-52-29-166-97.eu-central-1.compute.amazonaws.com\/myblog\/wp-json\/wp\/v2\/tags?post=1157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}