{"id":659,"date":"2019-12-30T20:48:22","date_gmt":"2019-12-30T20:48:22","guid":{"rendered":"http:\/\/mitat.tuu.fi\/?p=659"},"modified":"2019-12-30T20:48:58","modified_gmt":"2019-12-30T20:48:58","slug":"arduino-mega-2560-pin-interrupts","status":"publish","type":"post","link":"http:\/\/mitat.tuu.fi\/?p=659","title":{"rendered":"Arduino Mega 2560 pin interrupts"},"content":{"rendered":"<p>A way to add more pin interrupts to your project, using A8-A15 analog inputs:<\/p>\n<p>&nbsp;<br \/>\n<code><br \/>\n\/\/ mega 2560 pin interrupt<\/p>\n<p>\/\/ A8-A15 PK0 - PK7 PCINT16-23<\/p>\n<p>volatile uint8_t portbhistory;<br \/>\nvolatile bool intFlag;<br \/>\nvolatile int counter=0;<br \/>\nISR(PCINT2_vect)<br \/>\n{<br \/>\nif (intFlag) return;<\/p>\n<p>cli();<\/p>\n<p>int i;<br \/>\nuint8_t changedbits;<\/p>\n<p>changedbits = PINK ^ portbhistory;<br \/>\nportbhistory = PINK;<\/p>\n<p>if (digitalRead(A8)==0) intFlag = true;<br \/>\ncounter++;<br \/>\nsei();<\/p>\n<p>}<\/p>\n<p>void setup()<br \/>\n{<\/p>\n<p>cli();<\/p>\n<p>PCMSK2 = 0b11111111; \/\/ Enabling A8 to A15 pins on Mega 2560(PCINT15:8)<\/p>\n<p>DDRK = 0; \/\/\u00a0\u00a0 all Pins input<br \/>\nPORTK = 0xff; \/\/ turn on pullup for every pin<br \/>\nPCICR |= _BV(PCIE2); \/\/ enable interrupt for PCIE2<br \/>\nPCMSK2 = 0xff; \/\/ Interrupt at all pins<br \/>\nsei(); \/\/ turn on interrupts<\/p>\n<p>Serial.begin(115200);<\/p>\n<p>}<\/p>\n<p>void loop()<br \/>\n{<\/p>\n<p>if (intFlag)<br \/>\n{<br \/>\ndelay(100);<br \/>\nSerial.print(counter); Serial.print(\" \");<br \/>\nSerial.println(portbhistory);<\/p>\n<p>while (!digitalRead(A8)) {};<br \/>\nintFlag = false;<br \/>\n}<\/p>\n<p>}<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A way to add more pin interrupts to your project, using A8-A15 analog inputs: &nbsp; \/\/ mega 2560 pin interrupt \/\/ A8-A15 PK0 &#8211; PK7 PCINT16-23 volatile uint8_t portbhistory; volatile bool intFlag; volatile int counter=0; ISR(PCINT2_vect) { if (intFlag) return; cli(); int i; uint8_t changedbits; changedbits = PINK ^ portbhistory; portbhistory = PINK; if (digitalRead(A8)==0) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-659","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/posts\/659","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=659"}],"version-history":[{"count":2,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/posts\/659\/revisions"}],"predecessor-version":[{"id":661,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=\/wp\/v2\/posts\/659\/revisions\/661"}],"wp:attachment":[{"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=659"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mitat.tuu.fi\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}