diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index d1bc83a15..d7375b511 100755
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -9051,8 +9051,8 @@ Sigma_Exit:
disable_e1();
disable_e2();
- pinMode(E_MUX0_PIN, OUTPUT);
- pinMode(E_MUX1_PIN, OUTPUT);
+ SET_OUTPUT(E_MUX0_PIN);
+ SET_OUTPUT(E_MUX1_PIN);
_delay(100);
SERIAL_ECHO_START;
diff --git a/Firmware/Sd2Card.cpp b/Firmware/Sd2Card.cpp
index d1d350563..0e8fc4515 100644
--- a/Firmware/Sd2Card.cpp
+++ b/Firmware/Sd2Card.cpp
@@ -205,14 +205,14 @@ uint32_t Sd2Card::cardSize() {
}
//------------------------------------------------------------------------------
void Sd2Card::chipSelectHigh() {
- digitalWrite(chipSelectPin_, HIGH);
+ WRITE(SDSS, 1);
}
//------------------------------------------------------------------------------
void Sd2Card::chipSelectLow() {
#ifndef SOFTWARE_SPI
spiInit(spiRate_);
#endif // SOFTWARE_SPI
- digitalWrite(chipSelectPin_, LOW);
+ WRITE(SDSS, 0);
}
//------------------------------------------------------------------------------
/** Erase a range of blocks.
@@ -283,26 +283,25 @@ bool Sd2Card::eraseSingleBlockEnable() {
* the value zero, false, is returned for failure. The reason for failure
* can be determined by calling errorCode() and errorData().
*/
-bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
+bool Sd2Card::init(uint8_t sckRateID) {
errorCode_ = type_ = 0;
- chipSelectPin_ = chipSelectPin;
// 16-bit init start time allows over a minute
uint16_t t0 = (uint16_t)_millis();
uint32_t arg;
// set pin modes
- pinMode(chipSelectPin_, OUTPUT);
chipSelectHigh();
- pinMode(SPI_MISO_PIN, INPUT);
- pinMode(SPI_MOSI_PIN, OUTPUT);
- pinMode(SPI_SCK_PIN, OUTPUT);
+ SET_OUTPUT(SDSS);
+ SET_INPUT(MISO);
+ SET_OUTPUT(MOSI);
+ SET_OUTPUT(SCK);
#ifndef SOFTWARE_SPI
// SS must be in output mode even it is not chip select
- pinMode(SS_PIN, OUTPUT);
+ SET_OUTPUT(SS);
// set SS high - may be chip select for another SPI device
#if SET_SPI_SS_HIGH
- digitalWrite(SS_PIN, HIGH);
+ WRITE(SS, 1);
#endif // SET_SPI_SS_HIGH
// set SCK rate for initialization commands
spiRate_ = SPI_SD_INIT_RATE;
diff --git a/Firmware/Sd2Card.h b/Firmware/Sd2Card.h
index f4cc59d76..6fb700e70 100644
--- a/Firmware/Sd2Card.h
+++ b/Firmware/Sd2Card.h
@@ -28,7 +28,6 @@
* \brief Sd2Card class for V2 SD/SDHC cards
*/
#include "SdFatConfig.h"
-#include "Sd2PinMap.h"
#include "SdInfo.h"
//------------------------------------------------------------------------------
// SPI speed is F_CPU/2^(1 + index), 0 <= index <= 6
@@ -133,22 +132,7 @@ uint8_t const SD_CARD_TYPE_SDHC = 3;
//------------------------------------------------------------------------------
// SPI pin definitions - do not edit here - change in SdFatConfig.h
//
-#ifndef SOFTWARE_SPI
-// hardware pin defs
-/** The default chip select pin for the SD card is SS. */
-uint8_t const SD_CHIP_SELECT_PIN = SS_PIN;
-// The following three pins must not be redefined for hardware SPI.
-/** SPI Master Out Slave In pin */
-uint8_t const SPI_MOSI_PIN = MOSI_PIN;
-/** SPI Master In Slave Out pin */
-uint8_t const SPI_MISO_PIN = MISO_PIN;
-/** SPI Clock pin */
-uint8_t const SPI_SCK_PIN = SCK_PIN;
-
-#else // SOFTWARE_SPI
-
-/** SPI chip select pin */
-uint8_t const SD_CHIP_SELECT_PIN = SOFT_SPI_CS_PIN;
+#ifdef SOFTWARE_SPI
/** SPI Master Out Slave In pin */
uint8_t const SPI_MOSI_PIN = SOFT_SPI_MOSI_PIN;
/** SPI Master In Slave Out pin */
@@ -181,12 +165,11 @@ class Sd2Card {
int errorData() const {return status_;}
/**
* Initialize an SD flash memory card with default clock rate and chip
- * select pin. See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin).
+ * select pin. See sd2Card::init(uint8_t sckRateID).
*
* \return true for success or false for failure.
*/
- bool init(uint8_t sckRateID = SPI_FULL_SPEED,
- uint8_t chipSelectPin = SD_CHIP_SELECT_PIN);
+ bool init(uint8_t sckRateID = SPI_FULL_SPEED);
bool readBlock(uint32_t block, uint8_t* dst);
/**
* Read a card's CID register. The CID contains card identification
@@ -232,7 +215,6 @@ class Sd2Card {
private:
//----------------------------------------------------------------------------
- uint8_t chipSelectPin_;
uint8_t errorCode_;
uint8_t spiRate_;
uint8_t status_;
diff --git a/Firmware/Sd2PinMap.h b/Firmware/Sd2PinMap.h
deleted file mode 100644
index da50958f0..000000000
--- a/Firmware/Sd2PinMap.h
+++ /dev/null
@@ -1,364 +0,0 @@
-/* Arduino SdFat Library
- * Copyright (C) 2010 by William Greiman
- *
- * This file is part of the Arduino SdFat Library
- *
- * This Library 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 Library 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 the Arduino SdFat Library. If not, see
- * .
- */
-// Warning this file was generated by a program.
-#include "Marlin.h"
-#ifdef SDSUPPORT
-
-#ifndef Sd2PinMap_h
-#define Sd2PinMap_h
-#include
-//------------------------------------------------------------------------------
-/** struct for mapping digital pins */
-struct pin_map_t {
- volatile uint8_t* ddr;
- volatile uint8_t* pin;
- volatile uint8_t* port;
- uint8_t bit;
-};
-//------------------------------------------------------------------------------
-#if defined(__AVR_ATmega1280__)\
-|| defined(__AVR_ATmega2560__)
-// Mega
-
-#undef MOSI_PIN
-#undef MISO_PIN
-// SPI port
-uint8_t const SS_PIN = 53; // B0
-uint8_t const MOSI_PIN = 51; // B2
-uint8_t const MISO_PIN = 50; // B3
-uint8_t const SCK_PIN = 52; // B1
-
-static const pin_map_t digitalPinMap[] = {
- {&DDRE, &PINE, &PORTE, 0}, // E0 0
- {&DDRE, &PINE, &PORTE, 1}, // E1 1
- {&DDRE, &PINE, &PORTE, 4}, // E4 2
- {&DDRE, &PINE, &PORTE, 5}, // E5 3
- {&DDRG, &PING, &PORTG, 5}, // G5 4
- {&DDRE, &PINE, &PORTE, 3}, // E3 5
- {&DDRH, &PINH, &PORTH, 3}, // H3 6
- {&DDRH, &PINH, &PORTH, 4}, // H4 7
- {&DDRH, &PINH, &PORTH, 5}, // H5 8
- {&DDRH, &PINH, &PORTH, 6}, // H6 9
- {&DDRB, &PINB, &PORTB, 4}, // B4 10
- {&DDRB, &PINB, &PORTB, 5}, // B5 11
- {&DDRB, &PINB, &PORTB, 6}, // B6 12
- {&DDRB, &PINB, &PORTB, 7}, // B7 13
- {&DDRJ, &PINJ, &PORTJ, 1}, // J1 14
- {&DDRJ, &PINJ, &PORTJ, 0}, // J0 15
- {&DDRH, &PINH, &PORTH, 1}, // H1 16
- {&DDRH, &PINH, &PORTH, 0}, // H0 17
- {&DDRD, &PIND, &PORTD, 3}, // D3 18
- {&DDRD, &PIND, &PORTD, 2}, // D2 19
- {&DDRD, &PIND, &PORTD, 1}, // D1 20
- {&DDRD, &PIND, &PORTD, 0}, // D0 21
- {&DDRA, &PINA, &PORTA, 0}, // A0 22
- {&DDRA, &PINA, &PORTA, 1}, // A1 23
- {&DDRA, &PINA, &PORTA, 2}, // A2 24
- {&DDRA, &PINA, &PORTA, 3}, // A3 25
- {&DDRA, &PINA, &PORTA, 4}, // A4 26
- {&DDRA, &PINA, &PORTA, 5}, // A5 27
- {&DDRA, &PINA, &PORTA, 6}, // A6 28
- {&DDRA, &PINA, &PORTA, 7}, // A7 29
- {&DDRC, &PINC, &PORTC, 7}, // C7 30
- {&DDRC, &PINC, &PORTC, 6}, // C6 31
- {&DDRC, &PINC, &PORTC, 5}, // C5 32
- {&DDRC, &PINC, &PORTC, 4}, // C4 33
- {&DDRC, &PINC, &PORTC, 3}, // C3 34
- {&DDRC, &PINC, &PORTC, 2}, // C2 35
- {&DDRC, &PINC, &PORTC, 1}, // C1 36
- {&DDRC, &PINC, &PORTC, 0}, // C0 37
- {&DDRD, &PIND, &PORTD, 7}, // D7 38
- {&DDRG, &PING, &PORTG, 2}, // G2 39
- {&DDRG, &PING, &PORTG, 1}, // G1 40
- {&DDRG, &PING, &PORTG, 0}, // G0 41
- {&DDRL, &PINL, &PORTL, 7}, // L7 42
- {&DDRL, &PINL, &PORTL, 6}, // L6 43
- {&DDRL, &PINL, &PORTL, 5}, // L5 44
- {&DDRL, &PINL, &PORTL, 4}, // L4 45
- {&DDRL, &PINL, &PORTL, 3}, // L3 46
- {&DDRL, &PINL, &PORTL, 2}, // L2 47
- {&DDRL, &PINL, &PORTL, 1}, // L1 48
- {&DDRL, &PINL, &PORTL, 0}, // L0 49
- {&DDRB, &PINB, &PORTB, 3}, // B3 50
- {&DDRB, &PINB, &PORTB, 2}, // B2 51
- {&DDRB, &PINB, &PORTB, 1}, // B1 52
- {&DDRB, &PINB, &PORTB, 0}, // B0 53
- {&DDRF, &PINF, &PORTF, 0}, // F0 54
- {&DDRF, &PINF, &PORTF, 1}, // F1 55
- {&DDRF, &PINF, &PORTF, 2}, // F2 56
- {&DDRF, &PINF, &PORTF, 3}, // F3 57
- {&DDRF, &PINF, &PORTF, 4}, // F4 58
- {&DDRF, &PINF, &PORTF, 5}, // F5 59
- {&DDRF, &PINF, &PORTF, 6}, // F6 60
- {&DDRF, &PINF, &PORTF, 7}, // F7 61
- {&DDRK, &PINK, &PORTK, 0}, // K0 62
- {&DDRK, &PINK, &PORTK, 1}, // K1 63
- {&DDRK, &PINK, &PORTK, 2}, // K2 64
- {&DDRK, &PINK, &PORTK, 3}, // K3 65
- {&DDRK, &PINK, &PORTK, 4}, // K4 66
- {&DDRK, &PINK, &PORTK, 5}, // K5 67
- {&DDRK, &PINK, &PORTK, 6}, // K6 68
- {&DDRK, &PINK, &PORTK, 7} // K7 69
-};
-//------------------------------------------------------------------------------
-#elif defined(__AVR_ATmega644P__)\
-|| defined(__AVR_ATmega644__)\
-|| defined(__AVR_ATmega1284P__)
-// Sanguino
-
-// Two Wire (aka I2C) ports
-uint8_t const SDA_PIN = 17; // C1
-uint8_t const SCL_PIN = 18; // C2
-
-// SPI port
-uint8_t const SS_PIN = 4; // B4
-uint8_t const MOSI_PIN = 5; // B5
-uint8_t const MISO_PIN = 6; // B6
-uint8_t const SCK_PIN = 7; // B7
-
-static const pin_map_t digitalPinMap[] = {
- {&DDRB, &PINB, &PORTB, 0}, // B0 0
- {&DDRB, &PINB, &PORTB, 1}, // B1 1
- {&DDRB, &PINB, &PORTB, 2}, // B2 2
- {&DDRB, &PINB, &PORTB, 3}, // B3 3
- {&DDRB, &PINB, &PORTB, 4}, // B4 4
- {&DDRB, &PINB, &PORTB, 5}, // B5 5
- {&DDRB, &PINB, &PORTB, 6}, // B6 6
- {&DDRB, &PINB, &PORTB, 7}, // B7 7
- {&DDRD, &PIND, &PORTD, 0}, // D0 8
- {&DDRD, &PIND, &PORTD, 1}, // D1 9
- {&DDRD, &PIND, &PORTD, 2}, // D2 10
- {&DDRD, &PIND, &PORTD, 3}, // D3 11
- {&DDRD, &PIND, &PORTD, 4}, // D4 12
- {&DDRD, &PIND, &PORTD, 5}, // D5 13
- {&DDRD, &PIND, &PORTD, 6}, // D6 14
- {&DDRD, &PIND, &PORTD, 7}, // D7 15
- {&DDRC, &PINC, &PORTC, 0}, // C0 16
- {&DDRC, &PINC, &PORTC, 1}, // C1 17
- {&DDRC, &PINC, &PORTC, 2}, // C2 18
- {&DDRC, &PINC, &PORTC, 3}, // C3 19
- {&DDRC, &PINC, &PORTC, 4}, // C4 20
- {&DDRC, &PINC, &PORTC, 5}, // C5 21
- {&DDRC, &PINC, &PORTC, 6}, // C6 22
- {&DDRC, &PINC, &PORTC, 7}, // C7 23
- {&DDRA, &PINA, &PORTA, 7}, // A7 24
- {&DDRA, &PINA, &PORTA, 6}, // A6 25
- {&DDRA, &PINA, &PORTA, 5}, // A5 26
- {&DDRA, &PINA, &PORTA, 4}, // A4 27
- {&DDRA, &PINA, &PORTA, 3}, // A3 28
- {&DDRA, &PINA, &PORTA, 2}, // A2 29
- {&DDRA, &PINA, &PORTA, 1}, // A1 30
- {&DDRA, &PINA, &PORTA, 0} // A0 31
-};
-//------------------------------------------------------------------------------
-#elif defined(__AVR_ATmega32U4__)
-// Teensy 2.0
-
-// Two Wire (aka I2C) ports
-uint8_t const SDA_PIN = 6; // D1
-uint8_t const SCL_PIN = 5; // D0
-
-// SPI port
-uint8_t const SS_PIN = 0; // B0
-uint8_t const MOSI_PIN = 2; // B2
-uint8_t const MISO_PIN = 3; // B3
-uint8_t const SCK_PIN = 1; // B1
-
-static const pin_map_t digitalPinMap[] = {
- {&DDRB, &PINB, &PORTB, 0}, // B0 0
- {&DDRB, &PINB, &PORTB, 1}, // B1 1
- {&DDRB, &PINB, &PORTB, 2}, // B2 2
- {&DDRB, &PINB, &PORTB, 3}, // B3 3
- {&DDRB, &PINB, &PORTB, 7}, // B7 4
- {&DDRD, &PIND, &PORTD, 0}, // D0 5
- {&DDRD, &PIND, &PORTD, 1}, // D1 6
- {&DDRD, &PIND, &PORTD, 2}, // D2 7
- {&DDRD, &PIND, &PORTD, 3}, // D3 8
- {&DDRC, &PINC, &PORTC, 6}, // C6 9
- {&DDRC, &PINC, &PORTC, 7}, // C7 10
- {&DDRD, &PIND, &PORTD, 6}, // D6 11
- {&DDRD, &PIND, &PORTD, 7}, // D7 12
- {&DDRB, &PINB, &PORTB, 4}, // B4 13
- {&DDRB, &PINB, &PORTB, 5}, // B5 14
- {&DDRB, &PINB, &PORTB, 6}, // B6 15
- {&DDRF, &PINF, &PORTF, 7}, // F7 16
- {&DDRF, &PINF, &PORTF, 6}, // F6 17
- {&DDRF, &PINF, &PORTF, 5}, // F5 18
- {&DDRF, &PINF, &PORTF, 4}, // F4 19
- {&DDRF, &PINF, &PORTF, 1}, // F1 20
- {&DDRF, &PINF, &PORTF, 0}, // F0 21
- {&DDRD, &PIND, &PORTD, 4}, // D4 22
- {&DDRD, &PIND, &PORTD, 5}, // D5 23
- {&DDRE, &PINE, &PORTE, 6} // E6 24
-};
-//------------------------------------------------------------------------------
-#elif defined(__AVR_AT90USB646__)\
-|| defined(__AVR_AT90USB1286__)
-// Teensy++ 1.0 & 2.0
-
-// Two Wire (aka I2C) ports
-uint8_t const SDA_PIN = 1; // D1
-uint8_t const SCL_PIN = 0; // D0
-
-// SPI port
-uint8_t const SS_PIN = 20; // B0
-uint8_t const MOSI_PIN = 22; // B2
-uint8_t const MISO_PIN = 23; // B3
-uint8_t const SCK_PIN = 21; // B1
-
-static const pin_map_t digitalPinMap[] = {
- {&DDRD, &PIND, &PORTD, 0}, // D0 0
- {&DDRD, &PIND, &PORTD, 1}, // D1 1
- {&DDRD, &PIND, &PORTD, 2}, // D2 2
- {&DDRD, &PIND, &PORTD, 3}, // D3 3
- {&DDRD, &PIND, &PORTD, 4}, // D4 4
- {&DDRD, &PIND, &PORTD, 5}, // D5 5
- {&DDRD, &PIND, &PORTD, 6}, // D6 6
- {&DDRD, &PIND, &PORTD, 7}, // D7 7
- {&DDRE, &PINE, &PORTE, 0}, // E0 8
- {&DDRE, &PINE, &PORTE, 1}, // E1 9
- {&DDRC, &PINC, &PORTC, 0}, // C0 10
- {&DDRC, &PINC, &PORTC, 1}, // C1 11
- {&DDRC, &PINC, &PORTC, 2}, // C2 12
- {&DDRC, &PINC, &PORTC, 3}, // C3 13
- {&DDRC, &PINC, &PORTC, 4}, // C4 14
- {&DDRC, &PINC, &PORTC, 5}, // C5 15
- {&DDRC, &PINC, &PORTC, 6}, // C6 16
- {&DDRC, &PINC, &PORTC, 7}, // C7 17
- {&DDRE, &PINE, &PORTE, 6}, // E6 18
- {&DDRE, &PINE, &PORTE, 7}, // E7 19
- {&DDRB, &PINB, &PORTB, 0}, // B0 20
- {&DDRB, &PINB, &PORTB, 1}, // B1 21
- {&DDRB, &PINB, &PORTB, 2}, // B2 22
- {&DDRB, &PINB, &PORTB, 3}, // B3 23
- {&DDRB, &PINB, &PORTB, 4}, // B4 24
- {&DDRB, &PINB, &PORTB, 5}, // B5 25
- {&DDRB, &PINB, &PORTB, 6}, // B6 26
- {&DDRB, &PINB, &PORTB, 7}, // B7 27
- {&DDRA, &PINA, &PORTA, 0}, // A0 28
- {&DDRA, &PINA, &PORTA, 1}, // A1 29
- {&DDRA, &PINA, &PORTA, 2}, // A2 30
- {&DDRA, &PINA, &PORTA, 3}, // A3 31
- {&DDRA, &PINA, &PORTA, 4}, // A4 32
- {&DDRA, &PINA, &PORTA, 5}, // A5 33
- {&DDRA, &PINA, &PORTA, 6}, // A6 34
- {&DDRA, &PINA, &PORTA, 7}, // A7 35
- {&DDRE, &PINE, &PORTE, 4}, // E4 36
- {&DDRE, &PINE, &PORTE, 5}, // E5 37
- {&DDRF, &PINF, &PORTF, 0}, // F0 38
- {&DDRF, &PINF, &PORTF, 1}, // F1 39
- {&DDRF, &PINF, &PORTF, 2}, // F2 40
- {&DDRF, &PINF, &PORTF, 3}, // F3 41
- {&DDRF, &PINF, &PORTF, 4}, // F4 42
- {&DDRF, &PINF, &PORTF, 5}, // F5 43
- {&DDRF, &PINF, &PORTF, 6}, // F6 44
- {&DDRF, &PINF, &PORTF, 7} // F7 45
-};
-//------------------------------------------------------------------------------
-#elif defined(__AVR_ATmega168__)\
-||defined(__AVR_ATmega168P__)\
-||defined(__AVR_ATmega328P__)
-// 168 and 328 Arduinos
-
-// Two Wire (aka I2C) ports
-uint8_t const SDA_PIN = 18; // C4
-uint8_t const SCL_PIN = 19; // C5
-
-// SPI port
-uint8_t const SS_PIN = 10; // B2
-uint8_t const MOSI_PIN = 11; // B3
-uint8_t const MISO_PIN = 12; // B4
-uint8_t const SCK_PIN = 13; // B5
-
-static const pin_map_t digitalPinMap[] = {
- {&DDRD, &PIND, &PORTD, 0}, // D0 0
- {&DDRD, &PIND, &PORTD, 1}, // D1 1
- {&DDRD, &PIND, &PORTD, 2}, // D2 2
- {&DDRD, &PIND, &PORTD, 3}, // D3 3
- {&DDRD, &PIND, &PORTD, 4}, // D4 4
- {&DDRD, &PIND, &PORTD, 5}, // D5 5
- {&DDRD, &PIND, &PORTD, 6}, // D6 6
- {&DDRD, &PIND, &PORTD, 7}, // D7 7
- {&DDRB, &PINB, &PORTB, 0}, // B0 8
- {&DDRB, &PINB, &PORTB, 1}, // B1 9
- {&DDRB, &PINB, &PORTB, 2}, // B2 10
- {&DDRB, &PINB, &PORTB, 3}, // B3 11
- {&DDRB, &PINB, &PORTB, 4}, // B4 12
- {&DDRB, &PINB, &PORTB, 5}, // B5 13
- {&DDRC, &PINC, &PORTC, 0}, // C0 14
- {&DDRC, &PINC, &PORTC, 1}, // C1 15
- {&DDRC, &PINC, &PORTC, 2}, // C2 16
- {&DDRC, &PINC, &PORTC, 3}, // C3 17
- {&DDRC, &PINC, &PORTC, 4}, // C4 18
- {&DDRC, &PINC, &PORTC, 5} // C5 19
-};
-#else // defined(__AVR_ATmega1280__)
-#error unknown chip
-#endif // defined(__AVR_ATmega1280__)
-//------------------------------------------------------------------------------
-static const uint8_t digitalPinCount = sizeof(digitalPinMap)/sizeof(pin_map_t);
-
-uint8_t badPinNumber(void)
- __attribute__((error("Pin number is too large or not a constant")));
-
-static inline __attribute__((always_inline))
- bool getPinMode(uint8_t pin) {
- if (__builtin_constant_p(pin) && pin < digitalPinCount) {
- return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1;
- } else {
- return badPinNumber();
- }
-}
-static inline __attribute__((always_inline))
- void setPinMode(uint8_t pin, uint8_t mode) {
- if (__builtin_constant_p(pin) && pin < digitalPinCount) {
- if (mode) {
- *digitalPinMap[pin].ddr |= 1 << digitalPinMap[pin].bit;
- } else {
- *digitalPinMap[pin].ddr &= ~(1 << digitalPinMap[pin].bit);
- }
- } else {
- badPinNumber();
- }
-}
-static inline __attribute__((always_inline))
- bool fastDigitalRead(uint8_t pin) {
- if (__builtin_constant_p(pin) && pin < digitalPinCount) {
- return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1;
- } else {
- return badPinNumber();
- }
-}
-static inline __attribute__((always_inline))
- void fastDigitalWrite(uint8_t pin, uint8_t value) {
- if (__builtin_constant_p(pin) && pin < digitalPinCount) {
- if (value) {
- *digitalPinMap[pin].port |= 1 << digitalPinMap[pin].bit;
- } else {
- *digitalPinMap[pin].port &= ~(1 << digitalPinMap[pin].bit);
- }
- } else {
- badPinNumber();
- }
-}
-#endif // Sd2PinMap_h
-
-
-#endif
diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp
index 41fee385f..d4fd92ed1 100644
--- a/Firmware/cardreader.cpp
+++ b/Firmware/cardreader.cpp
@@ -204,20 +204,13 @@ void CardReader::initsd(bool doPresort/* = true*/)
if(root.isOpen())
root.close();
#ifdef SDSLOW
- if (!card.init(SPI_HALF_SPEED,SDSS)
- #if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
- && !card.init(SPI_HALF_SPEED,LCD_SDSS)
- #endif
+ if (!card.init(SPI_HALF_SPEED)
)
#else
- if (!card.init(SPI_FULL_SPEED,SDSS)
- #if defined(LCD_SDSS) && (LCD_SDSS != SDSS)
- && !card.init(SPI_FULL_SPEED,LCD_SDSS)
- #endif
+ if (!card.init(SPI_FULL_SPEED)
)
#endif
{
- //if (!card.init(SPI_HALF_SPEED,SDSS))
SERIAL_ECHO_START;
SERIAL_ECHOLNRPGM(_n("SD init fail"));////MSG_SD_INIT_FAIL
}
diff --git a/Firmware/fastio.h b/Firmware/fastio.h
index 855c000e2..b857cbc0b 100644
--- a/Firmware/fastio.h
+++ b/Firmware/fastio.h
@@ -931,10 +931,10 @@ pins
#define TXD DIO1
// SPI
-#define SCK DIO52
-#define MISO DIO50
-#define MOSI DIO51
-#define SS DIO53
+#define SCK 52
+#define MISO 50
+#define MOSI 51
+#define SS 53
// TWI (I2C)
#define SCL DIO21
diff --git a/Firmware/fsensor.cpp b/Firmware/fsensor.cpp
index 36dc630a5..ac7d202e4 100755
--- a/Firmware/fsensor.cpp
+++ b/Firmware/fsensor.cpp
@@ -349,7 +349,7 @@ bool fsensor_check_autoload(void)
if (!fsensor_enabled) return false;
if (!fsensor_autoload_enabled) return false;
if (ir_sensor_detected) {
- if (digitalRead(IR_SENSOR_PIN) == 1) {
+ if (READ(IR_SENSOR_PIN)) {
fsensor_watch_autoload = true;
}
else if (fsensor_watch_autoload == true) {
@@ -591,9 +591,8 @@ ISR(FSENSOR_INT_PIN_VECT)
void fsensor_setup_interrupt(void)
{
-
- pinMode(FSENSOR_INT_PIN, OUTPUT);
- digitalWrite(FSENSOR_INT_PIN, LOW);
+ WRITE(FSENSOR_INT_PIN, 0);
+ SET_OUTPUT(FSENSOR_INT_PIN);
fsensor_int_pin_old = 0;
//pciSetup(FSENSOR_INT_PIN);
@@ -687,7 +686,7 @@ void fsensor_update(void)
#else //PAT9125
if (CHECK_FSENSOR && ir_sensor_detected)
{
- if(digitalRead(IR_SENSOR_PIN))
+ if (READ(IR_SENSOR_PIN))
{ // IR_SENSOR_PIN ~ H
#ifdef IR_SENSOR_ANALOG
if(!bIRsensorStateFlag)
diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp
index abc84c34d..89aeea3e6 100755
--- a/Firmware/mmu.cpp
+++ b/Firmware/mmu.cpp
@@ -149,8 +149,8 @@ int8_t mmu_rx_start(void)
void mmu_init(void)
{
#ifdef MMU_HWRESET
- digitalWrite(MMU_RST_PIN, HIGH);
- pinMode(MMU_RST_PIN, OUTPUT); //setup reset pin
+ WRITE(MMU_RST_PIN, 1);
+ SET_OUTPUT(MMU_RST_PIN); //setup reset pin
#endif //MMU_HWRESET
uart2_init(); //init uart2
_delay_ms(10); //wait 10ms for sure
@@ -490,9 +490,9 @@ void mmu_loop(void)
void mmu_reset(void)
{
#ifdef MMU_HWRESET //HW - pulse reset pin
- digitalWrite(MMU_RST_PIN, LOW);
+ WRITE(MMU_RST_PIN, 0);
_delay_us(100);
- digitalWrite(MMU_RST_PIN, HIGH);
+ WRITE(MMU_RST_PIN, 1);
#else //SW - send X0 command
mmu_puts_P(PSTR("X0\n"));
#endif
@@ -927,8 +927,8 @@ void change_extr(int
mmu_extruder = extr;
- pinMode(E_MUX0_PIN, OUTPUT);
- pinMode(E_MUX1_PIN, OUTPUT);
+ SET_OUTPUT(E_MUX0_PIN);
+ SET_OUTPUT(E_MUX1_PIN);
switch (extr) {
case 1:
diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp
index 611f25477..e102159a6 100644
--- a/Firmware/stepper.cpp
+++ b/Firmware/stepper.cpp
@@ -1563,9 +1563,9 @@ void st_current_init() //Initialize Digipot Motor Current
#ifdef MOTOR_CURRENT_PWM_XY_PIN
uint8_t SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
SilentModeMenu = SilentMode;
- pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
- pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
- pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
+ SET_OUTPUT(MOTOR_CURRENT_PWM_XY_PIN);
+ SET_OUTPUT(MOTOR_CURRENT_PWM_Z_PIN);
+ SET_OUTPUT(MOTOR_CURRENT_PWM_E_PIN);
if((SilentMode == SILENT_MODE_OFF) || (farm_mode) ){
motor_current_setting[0] = motor_current_setting_loud[0];
@@ -1604,20 +1604,20 @@ void microstep_init()
{
#if defined(E1_MS1_PIN) && E1_MS1_PIN > -1
- pinMode(E1_MS1_PIN,OUTPUT);
- pinMode(E1_MS2_PIN,OUTPUT);
+ SET_OUTPUT(E1_MS1_PIN);
+ SET_OUTPUT(E1_MS2_PIN);
#endif
#if defined(X_MS1_PIN) && X_MS1_PIN > -1
const uint8_t microstep_modes[] = MICROSTEP_MODES;
- pinMode(X_MS1_PIN,OUTPUT);
- pinMode(X_MS2_PIN,OUTPUT);
- pinMode(Y_MS1_PIN,OUTPUT);
- pinMode(Y_MS2_PIN,OUTPUT);
- pinMode(Z_MS1_PIN,OUTPUT);
- pinMode(Z_MS2_PIN,OUTPUT);
- pinMode(E0_MS1_PIN,OUTPUT);
- pinMode(E0_MS2_PIN,OUTPUT);
+ SET_OUTPUT(X_MS1_PIN);
+ SET_OUTPUT(X_MS2_PIN);
+ SET_OUTPUT(Y_MS1_PIN);
+ SET_OUTPUT(Y_MS2_PIN);
+ SET_OUTPUT(Z_MS1_PIN);
+ SET_OUTPUT(Z_MS2_PIN);
+ SET_OUTPUT(E0_MS1_PIN);
+ SET_OUTPUT(E0_MS2_PIN);
for(int i=0;i<=4;i++) microstep_mode(i,microstep_modes[i]);
#endif
}
@@ -1629,22 +1629,22 @@ void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2)
{
if(ms1 > -1) switch(driver)
{
- case 0: digitalWrite( X_MS1_PIN,ms1); break;
- case 1: digitalWrite( Y_MS1_PIN,ms1); break;
- case 2: digitalWrite( Z_MS1_PIN,ms1); break;
- case 3: digitalWrite(E0_MS1_PIN,ms1); break;
+ case 0: WRITE( X_MS1_PIN,ms1); break;
+ case 1: WRITE( Y_MS1_PIN,ms1); break;
+ case 2: WRITE( Z_MS1_PIN,ms1); break;
+ case 3: WRITE(E0_MS1_PIN,ms1); break;
#if defined(E1_MS1_PIN) && E1_MS1_PIN > -1
- case 4: digitalWrite(E1_MS1_PIN,ms1); break;
+ case 4: WRITE(E1_MS1_PIN,ms1); break;
#endif
}
if(ms2 > -1) switch(driver)
{
- case 0: digitalWrite( X_MS2_PIN,ms2); break;
- case 1: digitalWrite( Y_MS2_PIN,ms2); break;
- case 2: digitalWrite( Z_MS2_PIN,ms2); break;
- case 3: digitalWrite(E0_MS2_PIN,ms2); break;
+ case 0: WRITE( X_MS2_PIN,ms2); break;
+ case 1: WRITE( Y_MS2_PIN,ms2); break;
+ case 2: WRITE( Z_MS2_PIN,ms2); break;
+ case 3: WRITE(E0_MS2_PIN,ms2); break;
#if defined(E1_MS2_PIN) && E1_MS2_PIN > -1
- case 4: digitalWrite(E1_MS2_PIN,ms2); break;
+ case 4: WRITE(E1_MS2_PIN,ms2); break;
#endif
}
}
@@ -1663,23 +1663,23 @@ void microstep_mode(uint8_t driver, uint8_t stepping_mode)
void microstep_readings()
{
- SERIAL_PROTOCOLPGM("MS1,MS2 Pins\n");
+ SERIAL_PROTOCOLNPGM("MS1,MS2 Pins");
SERIAL_PROTOCOLPGM("X: ");
- SERIAL_PROTOCOL( digitalRead(X_MS1_PIN));
- SERIAL_PROTOCOLLN( digitalRead(X_MS2_PIN));
+ SERIAL_PROTOCOL( READ(X_MS1_PIN));
+ SERIAL_PROTOCOLLN( READ(X_MS2_PIN));
SERIAL_PROTOCOLPGM("Y: ");
- SERIAL_PROTOCOL( digitalRead(Y_MS1_PIN));
- SERIAL_PROTOCOLLN( digitalRead(Y_MS2_PIN));
+ SERIAL_PROTOCOL( READ(Y_MS1_PIN));
+ SERIAL_PROTOCOLLN( READ(Y_MS2_PIN));
SERIAL_PROTOCOLPGM("Z: ");
- SERIAL_PROTOCOL( digitalRead(Z_MS1_PIN));
- SERIAL_PROTOCOLLN( digitalRead(Z_MS2_PIN));
+ SERIAL_PROTOCOL( READ(Z_MS1_PIN));
+ SERIAL_PROTOCOLLN( READ(Z_MS2_PIN));
SERIAL_PROTOCOLPGM("E0: ");
- SERIAL_PROTOCOL( digitalRead(E0_MS1_PIN));
- SERIAL_PROTOCOLLN( digitalRead(E0_MS2_PIN));
+ SERIAL_PROTOCOL( READ(E0_MS1_PIN));
+ SERIAL_PROTOCOLLN( READ(E0_MS2_PIN));
#if defined(E1_MS1_PIN) && E1_MS1_PIN > -1
SERIAL_PROTOCOLPGM("E1: ");
- SERIAL_PROTOCOL( digitalRead(E1_MS1_PIN));
- SERIAL_PROTOCOLLN( digitalRead(E1_MS2_PIN));
+ SERIAL_PROTOCOL( READ(E1_MS1_PIN));
+ SERIAL_PROTOCOLLN( READ(E1_MS2_PIN));
#endif
}
#endif //TMC2130
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 81fef9674..704274d9b 100755
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -4719,7 +4719,7 @@ void lcd_v2_calibration()
bool loaded = false;
if (fsensor_enabled && ir_sensor_detected)
{
- loaded = (digitalRead(IR_SENSOR_PIN) == 0);
+ loaded = !READ(IR_SENSOR_PIN);
}
else
{
@@ -8690,7 +8690,7 @@ void ultralcd_init()
#endif
#if defined (SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0)
- pinMode(SDCARDDETECT, INPUT);
+ SET_INPUT(SDCARDDETECT);
WRITE(SDCARDDETECT, HIGH);
lcd_oldcardstatus = IS_SD_INSERTED;
#endif//(SDCARDDETECT > 0)