From e4942d2163cdc4faffa985a12cdcac7e5c35da60 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Wed, 27 Jul 2016 12:40:44 +0200 Subject: [PATCH] Switch SD2cadrLib to fastio Replace all fastDigitalRead/Write() with READ/WRITE() Define SCK_PIN, MISO_PIN, MOSI_PIN in pins.h if not already defined in the pins_*.h files. Remove these conditional pin definitions from the pin-files. They are now always defined. Define separate sets of SPI-pins for AT90USB with and without Teensy support in fastio.h. Likely this was the main reason for all that confusion about the AT90USB-SPI pins. --- Marlin/MarlinConfig.h | 1 + Marlin/Sd2Card.cpp | 17 +- Marlin/Sd2Card.h | 1 - Marlin/Sd2PinMap.h | 453 --------------------------------- Marlin/buzzer.h | 4 +- Marlin/fastio.h | 17 +- Marlin/pins.h | 15 ++ Marlin/pins_5DPRINT.h | 11 +- Marlin/pins_BRAINWAVE.h | 8 - Marlin/pins_BRAINWAVE_PRO.h | 8 - Marlin/pins_PRINTRBOARD.h | 7 - Marlin/pins_PRINTRBOARD_REVF.h | 7 - Marlin/pins_RAMPS_14.h | 6 - Marlin/pins_RAMPS_OLD.h | 7 - Marlin/pins_SAV_MKI.h | 6 - Marlin/pins_TEENSY2.h | 7 - Marlin/pins_TEENSYLU.h | 7 - Marlin/temperature.cpp | 4 +- 18 files changed, 42 insertions(+), 544 deletions(-) delete mode 100644 Marlin/Sd2PinMap.h diff --git a/Marlin/MarlinConfig.h b/Marlin/MarlinConfig.h index 5ead4a11b5..7ed8aea059 100644 --- a/Marlin/MarlinConfig.h +++ b/Marlin/MarlinConfig.h @@ -23,6 +23,7 @@ #ifndef MARLIN_CONFIG_H #define MARLIN_CONFIG_H +#include "fastio.h" #include "macros.h" #include "boards.h" #include "Version.h" diff --git a/Marlin/Sd2Card.cpp b/Marlin/Sd2Card.cpp index f077e9e771..190e4ad1ff 100644 --- a/Marlin/Sd2Card.cpp +++ b/Marlin/Sd2Card.cpp @@ -30,6 +30,7 @@ #if ENABLED(SDSUPPORT) #include "Sd2Card.h" + //------------------------------------------------------------------------------ #if DISABLED(SOFTWARE_SPI) // functions for hardware SPI @@ -99,10 +100,10 @@ // no interrupts during byte receive - about 8 us cli(); // output pin high - like sending 0XFF - fastDigitalWrite(SPI_MOSI_PIN, HIGH); + WRITE(SPI_MOSI_PIN, HIGH); for (uint8_t i = 0; i < 8; i++) { - fastDigitalWrite(SPI_SCK_PIN, HIGH); + WRITE(SPI_SCK_PIN, HIGH); // adjust so SCK is nice nop; @@ -110,9 +111,9 @@ data <<= 1; - if (fastDigitalRead(SPI_MISO_PIN)) data |= 1; + if (READ(SPI_MISO_PIN)) data |= 1; - fastDigitalWrite(SPI_SCK_PIN, LOW); + WRITE(SPI_SCK_PIN, LOW); } // enable interrupts sei(); @@ -130,13 +131,13 @@ // no interrupts during byte send - about 8 us cli(); for (uint8_t i = 0; i < 8; i++) { - fastDigitalWrite(SPI_SCK_PIN, LOW); + WRITE(SPI_SCK_PIN, LOW); - fastDigitalWrite(SPI_MOSI_PIN, data & 0X80); + WRITE(SPI_MOSI_PIN, data & 0X80); data <<= 1; - fastDigitalWrite(SPI_SCK_PIN, HIGH); + WRITE(SPI_SCK_PIN, HIGH); } // hold SCK high for a few ns nop; @@ -144,7 +145,7 @@ nop; nop; - fastDigitalWrite(SPI_SCK_PIN, LOW); + WRITE(SPI_SCK_PIN, LOW); // enable interrupts sei(); } diff --git a/Marlin/Sd2Card.h b/Marlin/Sd2Card.h index 45d8f22eab..8c19a56294 100644 --- a/Marlin/Sd2Card.h +++ b/Marlin/Sd2Card.h @@ -37,7 +37,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 diff --git a/Marlin/Sd2PinMap.h b/Marlin/Sd2PinMap.h deleted file mode 100644 index 3ad6b795a8..0000000000 --- a/Marlin/Sd2PinMap.h +++ /dev/null @@ -1,453 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 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 . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2010 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -// Warning this file was generated by a program. -#include "Marlin.h" -#include "macros.h" - -#if ENABLED(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 - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 20; // D1 -uint8_t const SCL_PIN = 21; // D0 - -#undef MOSI_PIN -#undef MISO_PIN -#undef SCK_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 -}; -#elif defined(__AVR_ATmega1281__) -// Waspmote - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 41; -uint8_t const SCL_PIN = 40; - - -#undef MOSI_PIN -#undef MISO_PIN -// SPI port -uint8_t const SS_PIN = 16; // B0 -uint8_t const MOSI_PIN = 11; // B2 -uint8_t const MISO_PIN = 12; // B3 -uint8_t const SCK_PIN = 10; // B1 - -static const pin_map_t digitalPinMap[] = { - {&DDRE, &PINE, &PORTE, 0}, // E0 0 - {&DDRE, &PINE, &PORTE, 1}, // E1 1 - {&DDRE, &PINE, &PORTE, 3}, // E3 2 - {&DDRE, &PINE, &PORTE, 4}, // E4 3 - {&DDRC, &PINC, &PORTC, 4}, // C4 4 - {&DDRC, &PINC, &PORTC, 5}, // C5 5 - {&DDRC, &PINC, &PORTC, 6}, // C6 6 - {&DDRC, &PINC, &PORTC, 7}, // C7 7 - {&DDRA, &PINA, &PORTA, 2}, // A2 8 - {&DDRA, &PINA, &PORTA, 3}, // A3 9 - {&DDRA, &PINA, &PORTA, 4}, // A4 10 - {&DDRD, &PIND, &PORTD, 5}, // D5 11 - {&DDRD, &PIND, &PORTD, 6}, // D6 12 - {&DDRC, &PINC, &PORTC, 1}, // C1 13 - {&DDRF, &PINF, &PORTF, 1}, // F1 14 - {&DDRF, &PINF, &PORTF, 2}, // F2 15 - {&DDRF, &PINF, &PORTF, 3}, // F3 16 - {&DDRF, &PINF, &PORTF, 4}, // F4 17 - {&DDRF, &PINF, &PORTF, 5}, // F5 18 - {&DDRF, &PINF, &PORTF, 6}, // F6 19 - {&DDRF, &PINF, &PORTF, 7}, // F7 20 - {&DDRF, &PINF, &PORTF, 0}, // F0 21 - {&DDRA, &PINA, &PORTA, 1}, // A1 22 - {&DDRD, &PIND, &PORTD, 7}, // D7 23 - {&DDRE, &PINE, &PORTE, 5}, // E5 24 - {&DDRA, &PINA, &PORTA, 6}, // A6 25 - {&DDRE, &PINE, &PORTE, 2}, // E2 26 - {&DDRA, &PINA, &PORTA, 5}, // A5 27 - {&DDRC, &PINC, &PORTC, 0}, // C0 28 - {&DDRB, &PINB, &PORTB, 0}, // B0 29 - {&DDRB, &PINB, &PORTB, 1}, // B1 30 - {&DDRB, &PINB, &PORTB, 2}, // B2 31 - {&DDRB, &PINB, &PORTB, 3}, // B3 32 - {&DDRB, &PINB, &PORTB, 4}, // B4 33 - {&DDRB, &PINB, &PORTB, 5}, // B5 34 - {&DDRA, &PINA, &PORTA, 0}, // A0 35 - {&DDRB, &PINB, &PORTB, 6}, // B6 36 - {&DDRB, &PINB, &PORTB, 7}, // B7 37 - {&DDRE, &PINE, &PORTE, 6}, // E6 38 - {&DDRE, &PINE, &PORTE, 7}, // E7 39 - {&DDRD, &PIND, &PORTD, 0}, // D0 40 - {&DDRD, &PIND, &PORTD, 1}, // D1 41 - {&DDRC, &PINC, &PORTC, 3}, // C3 42 - {&DDRD, &PIND, &PORTD, 2}, // D2 43 - {&DDRD, &PIND, &PORTD, 3}, // D3 44 - {&DDRA, &PINA, &PORTA, 7}, // A7 45 - {&DDRC, &PINC, &PORTC, 2}, // C2 46 - {&DDRD, &PIND, &PORTD, 4}, // D4 47 - {&DDRG, &PING, &PORTG, 2}, // G2 48 - {&DDRG, &PING, &PORTG, 1}, // G1 49 - {&DDRG, &PING, &PORTG, 0}, // G0 50 -}; -#else // defined(__AVR_ATmega1280__) -#error "unknown chip" -#endif // defined(__AVR_ATmega1280__) -//------------------------------------------------------------------------------ -static const uint8_t digitalPinCount = COUNT(digitalPinMap); - -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) { - SBI(*digitalPinMap[pin].ddr, digitalPinMap[pin].bit); - } - else { - CBI(*digitalPinMap[pin].ddr, 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) { - SBI(*digitalPinMap[pin].port, digitalPinMap[pin].bit); - } - else { - CBI(*digitalPinMap[pin].port, digitalPinMap[pin].bit); - } - } - else { - badPinNumber(); - } -} -#endif // Sd2PinMap_h - - -#endif diff --git a/Marlin/buzzer.h b/Marlin/buzzer.h index e967284eaa..0ad870a304 100644 --- a/Marlin/buzzer.h +++ b/Marlin/buzzer.h @@ -31,7 +31,7 @@ /** * @brief Tone structure - * @details Simple abstration of a tone based on a duration and a frequency. + * @details Simple abstraction of a tone based on a duration and a frequency. * */ struct tone_t { @@ -57,7 +57,7 @@ class Buzzer { * @details This will invert the current state of an digital IO pin. */ void invert() { - WRITE(BEEPER_PIN, !READ(BEEPER_PIN)); + TOGGLE(BEEPER_PIN); } /** diff --git a/Marlin/fastio.h b/Marlin/fastio.h index 10464bf505..3a608e0058 100644 --- a/Marlin/fastio.h +++ b/Marlin/fastio.h @@ -2047,11 +2047,6 @@ #endif #if defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) - // SPI - #define SCK DIO9 - #define MISO DIO11 - #define MOSI DIO10 - #define SS DIO8 // change for your board #define DEBUG_LED DIO31 /* led D5 red */ @@ -2063,6 +2058,12 @@ //#define AT90USBxx_TEENSYPP_ASSIGNMENTS // Use Teensy++ 2.0 assignments #ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // Use traditional Marlin pin assignments + // SPI + #define SCK DIO9 // 21 + #define MISO DIO11 // 23 + #define MOSI DIO10 // 22 + #define SS DIO8 // 20 + #define DIO0_PIN PINA0 #define DIO0_RPORT PINA #define DIO0_WPORT PORTA @@ -2707,6 +2708,12 @@ The pins 46 and 47 are not supported by Teensyduino, but are supported below. */ + // SPI + #define SCK DIO21 // 9 + #define MISO DIO23 // 11 + #define MOSI DIO22 // 10 + #define SS DIO20 // 8 + #define DIO0_PIN PIND0 #define DIO0_RPORT PIND #define DIO0_WPORT PORTD diff --git a/Marlin/pins.h b/Marlin/pins.h index 141c8355f0..8133f4db5b 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -432,4 +432,19 @@ X_MS1_PIN, X_MS2_PIN, Y_MS1_PIN, Y_MS2_PIN, Z_MS1_PIN, Z_MS2_PIN \ } +#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS)) + +#ifndef SCK_PIN + #define SCK_PIN SCK +#endif +#ifndef MISO_PIN + #define MISO_PIN MISO +#endif +#ifndef MOSI_PIN + #define MOSI_PIN MOSI +#endif +#ifndef SS_PIN + #define SS_PIN SS +#endif + #endif //__PINS_H diff --git a/Marlin/pins_5DPRINT.h b/Marlin/pins_5DPRINT.h index 0674a98d1c..dae7e2034f 100644 --- a/Marlin/pins_5DPRINT.h +++ b/Marlin/pins_5DPRINT.h @@ -63,19 +63,12 @@ #define TEMP_0_PIN 1 // Extruder / Analog pin numbering #define TEMP_BED_PIN 0 // Bed / Analog pin numbering -// The SDSS pin uses a different pin mapping from file Sd2PinMap.h +// The SDSS pin uses a different pin mapping from file fastio.h #define SDSS 20 -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif - // Microstepping pins // Note that the pin mapping is not from fastio.h -// See Sd2PinMap.h for the pin configurations +// See Sd2PinMap.h for the pin configurations ??? #define X_MS1_PIN 25 #define X_MS2_PIN 26 #define Y_MS1_PIN 9 diff --git a/Marlin/pins_BRAINWAVE.h b/Marlin/pins_BRAINWAVE.h index 63e2d0bbc2..9dfeb3ab1f 100644 --- a/Marlin/pins_BRAINWAVE.h +++ b/Marlin/pins_BRAINWAVE.h @@ -64,11 +64,3 @@ #define TEMP_BED_PIN 6 // Bed / Analog pin numbering #define LED_PIN 39 - -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif - diff --git a/Marlin/pins_BRAINWAVE_PRO.h b/Marlin/pins_BRAINWAVE_PRO.h index fc10c2977e..3b33eeb28b 100644 --- a/Marlin/pins_BRAINWAVE_PRO.h +++ b/Marlin/pins_BRAINWAVE_PRO.h @@ -72,11 +72,3 @@ #define SDSS 20 #define LED_PIN 19 #define SD_DETECT_PIN 12 - -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 21 - #define MISO_PIN 23 - #define MOSI_PIN 22 -#endif - diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h index eaccabe9db..f8e9e10c43 100644 --- a/Marlin/pins_PRINTRBOARD.h +++ b/Marlin/pins_PRINTRBOARD.h @@ -86,13 +86,6 @@ #define SDSS 26 -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif - #if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) //we have no buzzer installed #define BEEPER_PIN -1 diff --git a/Marlin/pins_PRINTRBOARD_REVF.h b/Marlin/pins_PRINTRBOARD_REVF.h index d2a45623a2..a826eee68d 100644 --- a/Marlin/pins_PRINTRBOARD_REVF.h +++ b/Marlin/pins_PRINTRBOARD_REVF.h @@ -92,13 +92,6 @@ #define DAC_STEPPER_GAIN 0 #define DAC_OR_ADDRESS 0x00 -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif - #if ENABLED(ULTRA_LCD) #define BEEPER_PIN -1 diff --git a/Marlin/pins_RAMPS_14.h b/Marlin/pins_RAMPS_14.h index ef96f59a60..9f99ba5b0d 100644 --- a/Marlin/pins_RAMPS_14.h +++ b/Marlin/pins_RAMPS_14.h @@ -302,9 +302,3 @@ #define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present #endif -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 52 - #define MISO_PIN 50 - #define MOSI_PIN 51 -#endif diff --git a/Marlin/pins_RAMPS_OLD.h b/Marlin/pins_RAMPS_OLD.h index 470071a2fa..213bd3f1e8 100644 --- a/Marlin/pins_RAMPS_OLD.h +++ b/Marlin/pins_RAMPS_OLD.h @@ -78,10 +78,3 @@ #else #define MAX6675_SS 66// Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present #endif - -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 52 - #define MISO_PIN 50 - #define MOSI_PIN 51 -#endif diff --git a/Marlin/pins_SAV_MKI.h b/Marlin/pins_SAV_MKI.h index 97189bf778..530f63ada1 100644 --- a/Marlin/pins_SAV_MKI.h +++ b/Marlin/pins_SAV_MKI.h @@ -65,12 +65,6 @@ #define TEMP_0_PIN 7 // Extruder / Analog pin numbering #define TEMP_BED_PIN 6 // Bed / Analog pin numbering -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif #define SDSS 20 // PB0 - 8 in marlin env. // Extension header pin mapping diff --git a/Marlin/pins_TEENSY2.h b/Marlin/pins_TEENSY2.h index 0f83117f28..f4f7d4c013 100644 --- a/Marlin/pins_TEENSY2.h +++ b/Marlin/pins_TEENSY2.h @@ -109,13 +109,6 @@ #define LED_PIN 6 #define PS_ON_PIN 27 -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 21 // 9 - #define MISO_PIN 23 // 11 - #define MOSI_PIN 22 // 10 -#endif - #if ENABLED(ULTIPANEL) #define LCD_PINS_RS 8 #define LCD_PINS_ENABLE 9 diff --git a/Marlin/pins_TEENSYLU.h b/Marlin/pins_TEENSYLU.h index a19ef038b5..775837767d 100644 --- a/Marlin/pins_TEENSYLU.h +++ b/Marlin/pins_TEENSYLU.h @@ -76,13 +76,6 @@ #define SDSS 8 -#if DISABLED(SDSUPPORT) - // these pins are defined in the SD library if building with SD support - #define SCK_PIN 9 - #define MISO_PIN 11 - #define MOSI_PIN 10 -#endif - #if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) #define BEEPER_PIN -1 diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 172014e7f1..4d342e8a1b 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -29,7 +29,6 @@ #include "temperature.h" #include "thermistortables.h" #include "language.h" -#include "Sd2PinMap.h" #if ENABLED(USE_WATCHDOG) #include "watchdog.h" @@ -1021,8 +1020,7 @@ void Temperature::init() { OUT_WRITE(MOSI_PIN, HIGH); OUT_WRITE(MISO_PIN, HIGH); #else - pinMode(SS_PIN, OUTPUT); - digitalWrite(SS_PIN, HIGH); + OUT_WRITE(SS_PIN, HIGH); #endif OUT_WRITE(MAX6675_SS, HIGH);