123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
- /**
- * Fast I/O for extended pins
- */
-
- #ifdef __AVR__
-
- #include "fastio.h"
-
- #ifdef FASTIO_EXT_START
-
- #include "../shared/Marduino.h"
-
- #define _IS_EXT(P) WITHIN(P, FASTIO_EXT_START, FASTIO_EXT_END)
-
- void extDigitalWrite(const int8_t pin, const uint8_t state) {
- #define _WCASE(N) case N: WRITE(N, state); break
- switch (pin) {
- default: digitalWrite(pin, state);
- #if _IS_EXT(70)
- _WCASE(70);
- #endif
- #if _IS_EXT(71)
- _WCASE(71);
- #endif
- #if _IS_EXT(72)
- _WCASE(72);
- #endif
- #if _IS_EXT(73)
- _WCASE(73);
- #endif
- #if _IS_EXT(74)
- _WCASE(74);
- #endif
- #if _IS_EXT(75)
- _WCASE(75);
- #endif
- #if _IS_EXT(76)
- _WCASE(76);
- #endif
- #if _IS_EXT(77)
- _WCASE(77);
- #endif
- #if _IS_EXT(78)
- _WCASE(78);
- #endif
- #if _IS_EXT(79)
- _WCASE(79);
- #endif
- #if _IS_EXT(80)
- _WCASE(80);
- #endif
- #if _IS_EXT(81)
- _WCASE(81);
- #endif
- #if _IS_EXT(82)
- _WCASE(82);
- #endif
- #if _IS_EXT(83)
- _WCASE(83);
- #endif
- #if _IS_EXT(84)
- _WCASE(84);
- #endif
- #if _IS_EXT(85)
- _WCASE(85);
- #endif
- #if _IS_EXT(86)
- _WCASE(86);
- #endif
- #if _IS_EXT(87)
- _WCASE(87);
- #endif
- #if _IS_EXT(88)
- _WCASE(88);
- #endif
- #if _IS_EXT(89)
- _WCASE(89);
- #endif
- #if _IS_EXT(90)
- _WCASE(90);
- #endif
- #if _IS_EXT(91)
- _WCASE(91);
- #endif
- #if _IS_EXT(92)
- _WCASE(92);
- #endif
- #if _IS_EXT(93)
- _WCASE(93);
- #endif
- #if _IS_EXT(94)
- _WCASE(94);
- #endif
- #if _IS_EXT(95)
- _WCASE(95);
- #endif
- #if _IS_EXT(96)
- _WCASE(96);
- #endif
- #if _IS_EXT(97)
- _WCASE(97);
- #endif
- #if _IS_EXT(98)
- _WCASE(98);
- #endif
- #if _IS_EXT(99)
- _WCASE(99);
- #endif
- #if _IS_EXT(100)
- _WCASE(100);
- #endif
- }
- }
-
- uint8_t extDigitalRead(const int8_t pin) {
- #define _RCASE(N) case N: return READ(N)
- switch (pin) {
- default: return digitalRead(pin);
- #if _IS_EXT(70)
- _RCASE(70);
- #endif
- #if _IS_EXT(71)
- _RCASE(71);
- #endif
- #if _IS_EXT(72)
- _RCASE(72);
- #endif
- #if _IS_EXT(73)
- _RCASE(73);
- #endif
- #if _IS_EXT(74)
- _RCASE(74);
- #endif
- #if _IS_EXT(75)
- _RCASE(75);
- #endif
- #if _IS_EXT(76)
- _RCASE(76);
- #endif
- #if _IS_EXT(77)
- _RCASE(77);
- #endif
- #if _IS_EXT(78)
- _RCASE(78);
- #endif
- #if _IS_EXT(79)
- _RCASE(79);
- #endif
- #if _IS_EXT(80)
- _RCASE(80);
- #endif
- #if _IS_EXT(81)
- _RCASE(81);
- #endif
- #if _IS_EXT(82)
- _RCASE(82);
- #endif
- #if _IS_EXT(83)
- _RCASE(83);
- #endif
- #if _IS_EXT(84)
- _RCASE(84);
- #endif
- #if _IS_EXT(85)
- _RCASE(85);
- #endif
- #if _IS_EXT(86)
- _RCASE(86);
- #endif
- #if _IS_EXT(87)
- _RCASE(87);
- #endif
- #if _IS_EXT(88)
- _RCASE(88);
- #endif
- #if _IS_EXT(89)
- _RCASE(89);
- #endif
- #if _IS_EXT(90)
- _RCASE(90);
- #endif
- #if _IS_EXT(91)
- _RCASE(91);
- #endif
- #if _IS_EXT(92)
- _RCASE(92);
- #endif
- #if _IS_EXT(93)
- _RCASE(93);
- #endif
- #if _IS_EXT(94)
- _RCASE(94);
- #endif
- #if _IS_EXT(95)
- _RCASE(95);
- #endif
- #if _IS_EXT(96)
- _RCASE(96);
- #endif
- #if _IS_EXT(97)
- _RCASE(97);
- #endif
- #if _IS_EXT(98)
- _RCASE(98);
- #endif
- #if _IS_EXT(99)
- _RCASE(99);
- #endif
- #if _IS_EXT(100)
- _RCASE(100);
- #endif
- }
- }
-
- #endif // FASTIO_EXT_START
- #endif // __AVR__
|