Scott Lahteine
5 years ago
449 changed files with 33165 additions and 6789 deletions
@ -0,0 +1,25 @@ |
|||
# |
|||
# bump-date.yml |
|||
# Bump the distribution date once per day |
|||
# |
|||
|
|||
name: Bump Distribution Date |
|||
|
|||
on: |
|||
schedule: |
|||
- cron: '0 0 * * *' |
|||
|
|||
jobs: |
|||
bump_date: |
|||
|
|||
runs-on: ubuntu-latest |
|||
|
|||
steps: |
|||
|
|||
- name: Check out bugfix-2.0.x |
|||
uses: actions/checkout@v2 |
|||
with: |
|||
ref: bugfix-2.0.x |
|||
|
|||
- name: Bump Distribution Date |
|||
run: source ./buildroot/bin/bump_date |
@ -0,0 +1,100 @@ |
|||
# |
|||
# test-builds.yml |
|||
# Do test builds to catch compile errors |
|||
# |
|||
|
|||
name: CI |
|||
|
|||
on: |
|||
pull_request: |
|||
branches: |
|||
- bugfix-2.0.x |
|||
- dev-2.1.x |
|||
paths-ignore: |
|||
- config/** |
|||
- data/** |
|||
- docs/** |
|||
- '**/*.md' |
|||
|
|||
jobs: |
|||
test_builds: |
|||
|
|||
runs-on: ubuntu-latest |
|||
|
|||
strategy: |
|||
matrix: |
|||
test-platform: |
|||
# Base Environments |
|||
|
|||
- DUE |
|||
- esp32 |
|||
- linux_native |
|||
- megaatmega2560 |
|||
- teensy31 |
|||
- teensy35 |
|||
|
|||
# Extended AVR Environments |
|||
|
|||
- FYSETC_F6_13 |
|||
- megaatmega1280 |
|||
- rambo |
|||
- sanguino_atmega1284p |
|||
- sanguino_atmega644p |
|||
|
|||
# Extended STM32 Environments |
|||
|
|||
- STM32F103RC_bigtree |
|||
- STM32F103RC_bigtree_USB |
|||
- STM32F103RE_bigtree |
|||
- STM32F103RE_bigtree_USB |
|||
- STM32F103RC_fysetc |
|||
- jgaurora_a5s_a1 |
|||
- STM32F103VE_longer |
|||
- STM32F407VE_black |
|||
- BIGTREE_SKR_PRO |
|||
- mks_robin |
|||
- ARMED |
|||
|
|||
# Put lengthy tests last |
|||
|
|||
- LPC1768 |
|||
- LPC1769 |
|||
|
|||
# STM32 with non-STM framework. both broken for now. they should use HAL_STM32 which is working. |
|||
|
|||
#- STM32F4 |
|||
#- STM32F7 |
|||
|
|||
# Non-working environment tests |
|||
|
|||
#- BIGTREE_BTT002 |
|||
#- at90usb1286_cdc |
|||
#- at90usb1286_dfu |
|||
#- STM32F103CB_malyan |
|||
#- mks_robin_lite |
|||
#- mks_robin_mini |
|||
#- mks_robin_nano |
|||
#- SAMD51_grandcentral_m4 |
|||
|
|||
steps: |
|||
|
|||
- name: Select Python 3.7 |
|||
uses: actions/setup-python@v1 |
|||
with: |
|||
python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax. |
|||
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified |
|||
|
|||
- name: Install PlatformIO |
|||
run: | |
|||
pip install -U https://github.com/platformio/platformio-core/archive/master.zip |
|||
platformio update |
|||
|
|||
- name: Check out the PR |
|||
uses: actions/checkout@v2 |
|||
|
|||
- name: Run ${{ matrix.test-platform }} Tests |
|||
run: | |
|||
chmod +x buildroot/bin/* |
|||
chmod +x buildroot/share/tests/* |
|||
export PATH=./buildroot/bin/:./buildroot/share/tests/:${PATH} |
|||
run_tests . ${{ matrix.test-platform }} |
@ -1,84 +0,0 @@ |
|||
dist: bionic |
|||
sudo: false |
|||
|
|||
language: python |
|||
python: |
|||
- "3.7" |
|||
|
|||
notifications: |
|||
email: false |
|||
|
|||
env: |
|||
# Base Environments |
|||
- TEST_PLATFORM="DUE" |
|||
- TEST_PLATFORM="esp32" |
|||
- TEST_PLATFORM="linux_native" |
|||
- TEST_PLATFORM="megaatmega2560" |
|||
- TEST_PLATFORM="teensy31" |
|||
- TEST_PLATFORM="teensy35" |
|||
|
|||
# Extended AVR Environments |
|||
- TEST_PLATFORM="FYSETC_F6_13" |
|||
- TEST_PLATFORM="megaatmega1280" |
|||
- TEST_PLATFORM="rambo" |
|||
- TEST_PLATFORM="sanguino_atmega1284p" |
|||
- TEST_PLATFORM="sanguino_atmega644p" |
|||
|
|||
# Extended STM32 Environments |
|||
- TEST_PLATFORM="STM32F103RC_bigtree" |
|||
- TEST_PLATFORM="STM32F103RC_bigtree_USB" |
|||
- TEST_PLATFORM="STM32F103RE_bigtree" |
|||
- TEST_PLATFORM="STM32F103RE_bigtree_USB" |
|||
- TEST_PLATFORM="STM32F103RC_fysetc" |
|||
- TEST_PLATFORM="jgaurora_a5s_a1" |
|||
- TEST_PLATFORM="STM32F103VE_longer" |
|||
- TEST_PLATFORM="STM32F407VE_black" |
|||
- TEST_PLATFORM="BIGTREE_SKR_PRO" |
|||
- TEST_PLATFORM="mks_robin" |
|||
- TEST_PLATFORM="ARMED" |
|||
|
|||
# STM32 with non-STM framework. both broken for now. they should use HAL_STM32 which is working. |
|||
#- TEST_PLATFORM="STM32F4" |
|||
#- TEST_PLATFORM="STM32F7" |
|||
|
|||
# Put lengthy tests last |
|||
- TEST_PLATFORM="LPC1768" |
|||
- TEST_PLATFORM="LPC1769" |
|||
|
|||
# Non-working environment tests |
|||
#- TEST_PLATFORM="BIGTREE_BTT002" this board isn't released yet. we need pinout to be sure about what we do |
|||
#- TEST_PLATFORM="at90usb1286_cdc" |
|||
#- TEST_PLATFORM="at90usb1286_dfu" |
|||
#- TEST_PLATFORM="STM32F103CB_malyan" |
|||
#- TEST_PLATFORM="mks_robin_lite" |
|||
#- TEST_PLATFORM="mks_robin_mini" |
|||
#- TEST_PLATFORM="mks_robin_nano" |
|||
#- TEST_PLATFORM="SAMD51_grandcentral_m4" |
|||
|
|||
before_install: |
|||
# |
|||
# Fetch the tag information for the current branch |
|||
- git fetch origin --tags |
|||
# |
|||
# Publish the buildroot script folder |
|||
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/bin/* |
|||
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/share/tests/* |
|||
- export PATH=${TRAVIS_BUILD_DIR}/buildroot/bin/:${TRAVIS_BUILD_DIR}/buildroot/share/tests/:${PATH} |
|||
|
|||
install: |
|||
#- pip install -U platformio |
|||
- pip install -U https://github.com/platformio/platformio-core/archive/master.zip |
|||
|
|||
before_script: |
|||
# Update PlatformIO packages |
|||
- platformio update |
|||
# |
|||
# Change current working directory to the build dir |
|||
- cd ${TRAVIS_BUILD_DIR} |
|||
# |
|||
# Generate custom version include |
|||
- generate_version ${TRAVIS_BUILD_DIR}/Marlin/ |
|||
- cat ${TRAVIS_BUILD_DIR}/Marlin/Version.h |
|||
# |
|||
script: |
|||
- run_tests ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM} |
@ -0,0 +1,63 @@ |
|||
/**
|
|||
* 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/>.
|
|||
* |
|||
*/ |
|||
|
|||
#ifdef ARDUINO_ARCH_ESP32 |
|||
|
|||
#include "../../inc/MarlinConfig.h" |
|||
|
|||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION) |
|||
|
|||
#include "../shared/persistent_store_api.h" |
|||
#include "EEPROM.h" |
|||
|
|||
#define EEPROM_SIZE 4096 |
|||
|
|||
bool PersistentStore::access_start() { |
|||
return EEPROM.begin(EEPROM_SIZE); |
|||
} |
|||
|
|||
bool PersistentStore::access_finish() { |
|||
EEPROM.end(); |
|||
return true; |
|||
} |
|||
|
|||
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { |
|||
for (size_t i = 0; i < size; i++) { |
|||
EEPROM.write(pos++, value[i]); |
|||
crc16(crc, &value[i], 1); |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { |
|||
for (size_t i = 0; i < size; i++) { |
|||
uint8_t c = EEPROM.read(pos++); |
|||
if (writing) value[i] = c; |
|||
crc16(crc, &c, 1); |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
size_t PersistentStore::capacity() { return EEPROM_SIZE; } |
|||
|
|||
#endif // EEPROM_SETTINGS
|
|||
#endif // ARDUINO_ARCH_ESP32
|
@ -1,106 +0,0 @@ |
|||
/**
|
|||
* 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/>.
|
|||
* |
|||
*/ |
|||
|
|||
#ifdef ARDUINO_ARCH_ESP32 |
|||
|
|||
#include "../../inc/MarlinConfig.h" |
|||
|
|||
#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION) |
|||
|
|||
#include "../shared/persistent_store_api.h" |
|||
|
|||
#include <SPIFFS.h> |
|||
#include <FS.h> |
|||
#include "spiffs.h" |
|||
|
|||
#define HAL_ESP32_EEPROM_SIZE 4096 |
|||
#define HAL_ESP32_EEPROM_FILE_PATH "/eeprom.dat" |
|||
|
|||
File eeprom_file; |
|||
|
|||
bool PersistentStore::access_start() { |
|||
if (spiffs_initialized) { |
|||
eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "r+"); |
|||
|
|||
size_t file_size = eeprom_file.size(); |
|||
if (file_size < HAL_ESP32_EEPROM_SIZE) { |
|||
SERIAL_ECHO_MSG("SPIFFS EEPROM settings file " HAL_ESP32_EEPROM_FILE_PATH " is too small or did not exist, expanding."); |
|||
SERIAL_ECHO_START(); SERIAL_ECHOLNPAIR(" file size: ", file_size, ", required size: ", HAL_ESP32_EEPROM_SIZE); |
|||
|
|||
// mode r+ does not allow to expand the file (at least on ESP32 SPIFFS9, so we close, reopen "a", append, close, reopen "r+"
|
|||
eeprom_file.close(); |
|||
|
|||
eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "a"); |
|||
for (size_t i = eeprom_file.size(); i < HAL_ESP32_EEPROM_SIZE; i++) |
|||
eeprom_file.write(0xFF); |
|||
eeprom_file.close(); |
|||
|
|||
eeprom_file = SPIFFS.open(HAL_ESP32_EEPROM_FILE_PATH, "r+"); |
|||
file_size = eeprom_file.size(); |
|||
if (file_size < HAL_ESP32_EEPROM_SIZE) { |
|||
SERIAL_ERROR_MSG("Failed to expand " HAL_ESP32_EEPROM_FILE_PATH " to required size. SPIFFS partition full?"); |
|||
SERIAL_ERROR_START(); SERIAL_ECHOLNPAIR(" file size: ", file_size, ", required size: ", HAL_ESP32_EEPROM_SIZE); |
|||
SERIAL_ERROR_START(); SERIAL_ECHOLNPAIR(" SPIFFS used bytes: ", SPIFFS.usedBytes(), ", total bytes: ", SPIFFS.totalBytes()); |
|||
} |
|||
} |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
bool PersistentStore::access_finish() { |
|||
eeprom_file.close(); |
|||
return true; |
|||
} |
|||
|
|||
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { |
|||
if (!eeprom_file.seek(pos)) return true; // return true for any error
|
|||
if (eeprom_file.write(value, size) != size) return true; |
|||
|
|||
crc16(crc, value, size); |
|||
pos += size; |
|||
|
|||
return false; |
|||
} |
|||
|
|||
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { |
|||
if (!eeprom_file.seek(pos)) return true; // return true for any error
|
|||
|
|||
if (writing) { |
|||
if (eeprom_file.read(value, size) != size) return true; |
|||
crc16(crc, value, size); |
|||
} |
|||
else { |
|||
uint8_t tmp[size]; |
|||
if (eeprom_file.read(tmp, size) != size) return true; |
|||
crc16(crc, tmp, size); |
|||
} |
|||
|
|||
pos += size; |
|||
|
|||
return false; |
|||
} |
|||
|
|||
size_t PersistentStore::capacity() { return HAL_ESP32_EEPROM_SIZE; } |
|||
|
|||
#endif // EEPROM_SETTINGS
|
|||
#endif // ARDUINO_ARCH_ESP32
|
@ -0,0 +1,265 @@ |
|||
/**
|
|||
* Marlin 3D Printer Firmware |
|||
* |
|||
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|||
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com |
|||
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com |
|||
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com |
|||
* |
|||
* 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/>.
|
|||
* |
|||
*/ |
|||
|
|||
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC) |
|||
|
|||
#include "../../inc/MarlinConfig.h" |
|||
|
|||
#if BOTH(EEPROM_SETTINGS, FLASH_EEPROM_EMULATION) |
|||
|
|||
#include "../shared/persistent_store_api.h" |
|||
|
|||
|
|||
// Only STM32F4 can support wear leveling at this time
|
|||
#ifndef STM32F4xx |
|||
#undef FLASH_EEPROM_LEVELING |
|||
#endif |
|||
|
|||
/**
|
|||
* The STM32 HAL supports chips that deal with "pages" and some with "sectors" and some that |
|||
* even have multiple "banks" of flash. |
|||
* |
|||
* This code is a bit of a mashup of |
|||
* framework-arduinoststm32/cores/arduino/stm32/stm32_eeprom.c |
|||
* hal/hal_lpc1768/persistent_store_flash.cpp |
|||
* |
|||
* This has only be written against those that use a single "sector" design. |
|||
* |
|||
* Those that deal with "pages" could be made to work. Looking at the STM32F07 for example, there are |
|||
* 128 "pages", each 2kB in size. If we continued with our EEPROM being 4Kb, we'd always need to operate |
|||
* on 2 of these pages. Each write, we'd use 2 different pages from a pool of pages until we are done. |
|||
*/ |
|||
|
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
|
|||
#include "stm32_def.h" |
|||
|
|||
#define DEBUG_OUT ENABLED(EEPROM_CHITCHAT) |
|||
#include "src/core/debug_out.h" |
|||
|
|||
#ifndef EEPROM_SIZE |
|||
#define EEPROM_SIZE 0x1000 // 4kB
|
|||
#endif |
|||
|
|||
#ifndef FLASH_SECTOR |
|||
#define FLASH_SECTOR (FLASH_SECTOR_TOTAL - 1) |
|||
#endif |
|||
#ifndef FLASH_UNIT_SIZE |
|||
#define FLASH_UNIT_SIZE 0x20000 // 128kB
|
|||
#endif |
|||
|
|||
#define FLASH_ADDRESS_START (FLASH_END - ((FLASH_SECTOR_TOTAL - FLASH_SECTOR) * FLASH_UNIT_SIZE) + 1) |
|||
#define FLASH_ADDRESS_END (FLASH_ADDRESS_START + FLASH_UNIT_SIZE - 1) |
|||
|
|||
#define EEPROM_SLOTS (FLASH_UNIT_SIZE/EEPROM_SIZE) |
|||
#define SLOT_ADDRESS(slot) (FLASH_ADDRESS_START + (slot * EEPROM_SIZE)) |
|||
|
|||
#define UNLOCK_FLASH() if (!flash_unlocked) { \ |
|||
HAL_FLASH_Unlock(); \ |
|||
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | \ |
|||
FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); \ |
|||
flash_unlocked = true; \ |
|||
} |
|||
#define LOCK_FLASH() if (flash_unlocked) { HAL_FLASH_Lock(); flash_unlocked = false; } |
|||
|
|||
#define EMPTY_UINT32 ((uint32_t)-1) |
|||
#define EMPTY_UINT8 ((uint8_t)-1) |
|||
|
|||
static uint8_t ram_eeprom[EEPROM_SIZE] __attribute__((aligned(4))) = {0}; |
|||
static int current_slot = -1; |
|||
|
|||
static_assert(0 == EEPROM_SIZE % 4, "EEPROM_SIZE must be a multiple of 4"); // Ensure copying as uint32_t is safe
|
|||
static_assert(0 == FLASH_UNIT_SIZE % EEPROM_SIZE, "EEPROM_SIZE must divide evenly into your FLASH_UNIT_SIZE"); |
|||
static_assert(FLASH_UNIT_SIZE >= EEPROM_SIZE, "FLASH_UNIT_SIZE must be greater than or equal to your EEPROM_SIZE"); |
|||
static_assert(IS_FLASH_SECTOR(FLASH_SECTOR), "FLASH_SECTOR is invalid"); |
|||
static_assert(IS_POWER_OF_2(FLASH_UNIT_SIZE), "FLASH_UNIT_SIZE should be a power of 2, please check your chip's spec sheet"); |
|||
|
|||
#endif |
|||
|
|||
static bool eeprom_data_written = false; |
|||
|
|||
bool PersistentStore::access_start() { |
|||
|
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
|
|||
if (current_slot == -1 || eeprom_data_written) { |
|||
// This must be the first time since power on that we have accessed the storage, or someone
|
|||
// loaded and called write_data and never called access_finish.
|
|||
// Lets go looking for the slot that holds our configuration.
|
|||
if (eeprom_data_written) DEBUG_ECHOLN("Dangling EEPROM write_data"); |
|||
uint32_t address = FLASH_ADDRESS_START; |
|||
while (address <= FLASH_ADDRESS_END) { |
|||
uint32_t address_value = (*(__IO uint32_t*)address); |
|||
if (address_value != EMPTY_UINT32) { |
|||
current_slot = (address - FLASH_ADDRESS_START) / EEPROM_SIZE; |
|||
break; |
|||
} |
|||
address += sizeof(uint32_t); |
|||
} |
|||
if (current_slot == -1) { |
|||
// We didn't find anything, so we'll just intialize to empty
|
|||
for (int i = 0; i < EEPROM_SIZE; i++) ram_eeprom[i] = EMPTY_UINT8; |
|||
current_slot = EEPROM_SLOTS; |
|||
} |
|||
else { |
|||
// load current settings
|
|||
uint8_t *eeprom_data = (uint8_t *)SLOT_ADDRESS(current_slot); |
|||
for (int i = 0; i < EEPROM_SIZE; i++) ram_eeprom[i] = eeprom_data[i]; |
|||
DEBUG_ECHOLNPAIR("EEPROM loaded from slot ", current_slot, "."); |
|||
} |
|||
eeprom_data_written = false; |
|||
} |
|||
|
|||
#else |
|||
eeprom_buffer_fill(); |
|||
#endif |
|||
|
|||
return true; |
|||
} |
|||
|
|||
bool PersistentStore::access_finish() { |
|||
|
|||
if (eeprom_data_written) { |
|||
|
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
|
|||
HAL_StatusTypeDef status = HAL_ERROR; |
|||
bool flash_unlocked = false; |
|||
|
|||
if (--current_slot < 0) { |
|||
// all slots have been used, erase everything and start again
|
|||
|
|||
FLASH_EraseInitTypeDef EraseInitStruct; |
|||
uint32_t SectorError = 0; |
|||
|
|||
EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; |
|||
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3; |
|||
EraseInitStruct.Sector = FLASH_SECTOR; |
|||
EraseInitStruct.NbSectors = 1; |
|||
|
|||
current_slot = EEPROM_SLOTS - 1; |
|||
UNLOCK_FLASH(); |
|||
|
|||
status = HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError); |
|||
if (status != HAL_OK) { |
|||
DEBUG_ECHOLNPAIR("HAL_FLASHEx_Erase=", status); |
|||
DEBUG_ECHOLNPAIR("GetError=", HAL_FLASH_GetError()); |
|||
DEBUG_ECHOLNPAIR("SectorError=", SectorError); |
|||
LOCK_FLASH(); |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
UNLOCK_FLASH(); |
|||
|
|||
uint32_t offset = 0; |
|||
uint32_t address = SLOT_ADDRESS(current_slot); |
|||
uint32_t address_end = address + EEPROM_SIZE; |
|||
uint32_t data = 0; |
|||
|
|||
bool success = true; |
|||
|
|||
while (address < address_end) { |
|||
memcpy(&data, ram_eeprom + offset, sizeof(uint32_t)); |
|||
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, data); |
|||
if (status == HAL_OK) { |
|||
address += sizeof(uint32_t); |
|||
offset += sizeof(uint32_t); |
|||
} |
|||
else { |
|||
DEBUG_ECHOLNPAIR("HAL_FLASH_Program=", status); |
|||
DEBUG_ECHOLNPAIR("GetError=", HAL_FLASH_GetError()); |
|||
DEBUG_ECHOLNPAIR("address=", address); |
|||
success = false; |
|||
break; |
|||
} |
|||
} |
|||
|
|||
LOCK_FLASH(); |
|||
|
|||
if (success) { |
|||
eeprom_data_written = false; |
|||
DEBUG_ECHOLNPAIR("EEPROM saved to slot ", current_slot, "."); |
|||
} |
|||
|
|||
return success; |
|||
|
|||
#else |
|||
eeprom_buffer_flush(); |
|||
eeprom_data_written = false; |
|||
#endif |
|||
} |
|||
|
|||
return true; |
|||
} |
|||
|
|||
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { |
|||
while (size--) { |
|||
uint8_t v = *value; |
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
if (v != ram_eeprom[pos]) { |
|||
ram_eeprom[pos] = v; |
|||
eeprom_data_written = true; |
|||
} |
|||
#else |
|||
if (v != eeprom_buffered_read_byte(pos)) { |
|||
eeprom_buffered_write_byte(pos, v); |
|||
eeprom_data_written = true; |
|||
} |
|||
#endif |
|||
crc16(crc, &v, 1); |
|||
pos++; |
|||
value++; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) { |
|||
do { |
|||
const uint8_t c = ( |
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
ram_eeprom[pos] |
|||
#else |
|||
eeprom_buffered_read_byte(pos) |
|||
#endif |
|||
); |
|||
if (writing) *value = c; |
|||
crc16(crc, &c, 1); |
|||
pos++; |
|||
value++; |
|||
} while (--size); |
|||
return false; |
|||
} |
|||
|
|||
size_t PersistentStore::capacity() { |
|||
return ( |
|||
#if ENABLED(FLASH_EEPROM_LEVELING) |
|||
EEPROM_SIZE |
|||
#else |
|||
E2END + 1 |
|||
#endif |
|||
); |
|||
} |
|||
|
|||
#endif // EEPROM_SETTINGS && FLASH_EEPROM_EMULATION
|
|||
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
|
@ -0,0 +1,101 @@ |
|||
/**
|
|||
* 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/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
/**
|
|||
* MRR ESPA pin assignments |
|||
* MRR ESPA is a 3D printer control board based on the ESP32 microcontroller. |
|||
* Supports 4 stepper drivers, heated bed, single hotend. |
|||
*/ |
|||
|
|||
#ifndef ARDUINO_ARCH_ESP32 |
|||
#error "Oops! Select an ESP32 board in 'Tools > Board.'" |
|||
#elif EXTRUDERS > 1 || E_STEPPERS > 1 |
|||
#error "MRR ESPA only supports one E Stepper. Comment out this line to continue." |
|||
#elif HOTENDS > 1 |
|||
#error "MRR ESPA currently supports only one hotend. Comment out this line to continue." |
|||
#endif |
|||
|
|||
#define BOARD_INFO_NAME "MRR ESPA" |
|||
#define BOARD_WEBSITE_URL "github.com/maplerainresearch/MRR_ESPA" |
|||
#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME |
|||
|
|||
//
|
|||
// Disable I2S stepper stream
|
|||
//
|
|||
#ifdef I2S_STEPPER_STREAM |
|||
#undef I2S_STEPPER_STREAM |
|||
#endif |
|||
#define I2S_WS -1 |
|||
#define I2S_BCK -1 |
|||
#define I2S_DATA -1 |
|||
|
|||
//
|
|||
// Limit Switches
|
|||
//
|
|||
#define X_STOP_PIN 34 |
|||
#define Y_STOP_PIN 35 |
|||
#define Z_STOP_PIN 15 |
|||
|
|||
//
|
|||
// Steppers
|
|||
//
|
|||
#define X_STEP_PIN 27 |
|||
#define X_DIR_PIN 26 |
|||
#define X_ENABLE_PIN 25 |
|||
//#define X_CS_PIN 21
|
|||
|
|||
#define Y_STEP_PIN 33 |
|||
#define Y_DIR_PIN 32 |
|||
#define Y_ENABLE_PIN X_ENABLE_PIN |
|||
//#define Y_CS_PIN 22
|
|||
|
|||
#define Z_STEP_PIN 14 |
|||
#define Z_DIR_PIN 12 |
|||
#define Z_ENABLE_PIN X_ENABLE_PIN |
|||
//#define Z_CS_PIN 5 // SS_PIN
|
|||
|
|||
#define E0_STEP_PIN 16 |
|||
#define E0_DIR_PIN 17 |
|||
#define E0_ENABLE_PIN X_ENABLE_PIN |
|||
//#define E0_CS_PIN 21
|
|||
|
|||
//
|
|||
// Temperature Sensors
|
|||
//
|
|||
#define TEMP_0_PIN 36 // Analog Input
|
|||
#define TEMP_BED_PIN 39 // Analog Input
|
|||
|
|||
//
|
|||
// Heaters / Fans
|
|||
//
|
|||
#define HEATER_0_PIN 2 |
|||
#define FAN_PIN 13 |
|||
#define HEATER_BED_PIN 4 |
|||
|
|||
//
|
|||
// MicroSD card
|
|||
//
|
|||
#define MOSI_PIN 23 |
|||
#define MISO_PIN 19 |
|||
#define SCK_PIN 18 |
|||
#define SDSS 5 |
@ -0,0 +1,154 @@ |
|||
/**
|
|||
* 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 <http://www.gnu.org/licenses/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
/**
|
|||
* MRR ESPE pin assignments |
|||
* MRR ESPE is a 3D printer control board based on the ESP32 microcontroller. |
|||
* Supports 5 stepper drivers (using I2S stepper stream), heated bed, |
|||
* single hotend, and LCD controller. |
|||
*/ |
|||
|
|||
#ifndef ARDUINO_ARCH_ESP32 |
|||
#error "Oops! Select an ESP32 board in 'Tools > Board.'" |
|||
#elif EXTRUDERS > 2 || E_STEPPERS > 2 |
|||
#error "MRR ESPE only supports two E Steppers. Comment out this line to continue." |
|||
#elif HOTENDS > 1 |
|||
#error "MRR ESPE currently supports only one hotend. Comment out this line to continue." |
|||
#endif |
|||
|
|||
#define BOARD_INFO_NAME "MRR ESPE" |
|||
#define BOARD_WEBSITE_URL "github.com/maplerainresearch/MRR_ESPE" |
|||
#define DEFAULT_MACHINE_NAME BOARD_INFO_NAME |
|||
|
|||
//
|
|||
// Limit Switches
|
|||
//
|
|||
#define X_STOP_PIN 35 |
|||
#define Y_STOP_PIN 32 |
|||
#define Z_STOP_PIN 33 |
|||
|
|||
//
|
|||
// Enable I2S stepper stream
|
|||
//
|
|||
#undef I2S_STEPPER_STREAM |
|||
#define I2S_STEPPER_STREAM |
|||
|
|||
#undef LIN_ADVANCE // Currently, I2S stream does not work with linear advance
|
|||
|
|||
#define I2S_WS 26 |
|||
#define I2S_BCK 25 |
|||
#define I2S_DATA 27 |
|||
|
|||
//
|
|||
// Steppers
|
|||
//
|
|||
#define X_STEP_PIN 129 |
|||
#define X_DIR_PIN 130 |
|||
#define X_ENABLE_PIN 128 |
|||
//#define X_CS_PIN 21
|
|||
|
|||
#define Y_STEP_PIN 132 |
|||
#define Y_DIR_PIN 133 |
|||
#define Y_ENABLE_PIN 131 |
|||
//#define Y_CS_PIN 22
|
|||
|
|||
#define Z_STEP_PIN 135 |
|||
#define Z_DIR_PIN 136 |
|||
#define Z_ENABLE_PIN 134 |
|||
//#define Z_CS_PIN 5 // SS_PIN
|
|||
|
|||
#define E0_STEP_PIN 138 |
|||
#define E0_DIR_PIN 139 |
|||
#define E0_ENABLE_PIN 137 |
|||
//#define E0_CS_PIN 21
|
|||
|
|||
#define E1_STEP_PIN 141 |
|||
#define E1_DIR_PIN 142 |
|||
#define E1_ENABLE_PIN 140 |
|||
//#define E1_CS_PIN 22
|
|||
|
|||
#define Z2_STEP_PIN 141 |
|||
#define Z2_DIR_PIN 142 |
|||
#define Z2_ENABLE_PIN 140 |
|||
//#define Z2_CS_PIN 5
|
|||
|
|||
//
|
|||
// Temperature Sensors
|
|||
//
|
|||
#define TEMP_0_PIN 36 // Analog Input
|
|||
#define TEMP_1_PIN 34 // Analog Input
|
|||
#define TEMP_BED_PIN 39 // Analog Input
|
|||
|
|||
//
|
|||
// Heaters / Fans
|
|||
//
|
|||
#define HEATER_0_PIN 145 // 2
|
|||
#define FAN_PIN 146 // 15
|
|||
#define HEATER_BED_PIN 144 // 4
|
|||
|
|||
#define CONTROLLER_FAN_PIN 147 |
|||
//#define E0_AUTO_FAN_PIN 148 // need to update Configuration_adv.h @section extruder
|
|||
//#define E1_AUTO_FAN_PIN 149 // need to update Configuration_adv.h @section extruder
|
|||
#define FAN1_PIN 149 |
|||
|
|||
//
|
|||
// MicroSD card
|
|||
//
|
|||
#define MOSI_PIN 23 |
|||
#define MISO_PIN 19 |
|||
#define SCK_PIN 18 |
|||
#define SDSS 5 |
|||
|
|||
//////////////////////////
|
|||
// LCDs and Controllers //
|
|||
//////////////////////////
|
|||
|
|||
#if HAS_GRAPHICAL_LCD |
|||
|
|||
#define LCD_PINS_RS 13 |
|||
#define LCD_PINS_ENABLE 17 |
|||
#define LCD_PINS_D4 16 |
|||
|
|||
#if ENABLED(CR10_STOCKDISPLAY) |
|||
|
|||
#define BEEPER_PIN 151 |
|||
|
|||
#elif ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) |
|||
|
|||
#define BEEPER_PIN 152 |
|||
|
|||
//#define LCD_PINS_D5 150
|
|||
//#define LCD_PINS_D6 151
|
|||
//#define LCD_PINS_D7 153
|
|||
|
|||
#else |
|||
|
|||
#error "Only CR10_STOCKDISPLAY and REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER are currently supported. Comment out this line to continue." |
|||
|
|||
#endif |
|||
|
|||
#define BTN_EN1 0 |
|||
#define BTN_EN2 12 |
|||
#define BTN_ENC 14 |
|||
|
|||
#endif // HAS_GRAPHICAL_LCD
|
@ -0,0 +1,280 @@ |
|||
/**
|
|||
* 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/>.
|
|||
* |
|||
*/ |
|||
#pragma once |
|||
|
|||
#define BOARD_INFO_NAME "BIGTREE SKR 1.4" |
|||
|
|||
//
|
|||
// SD Connection
|
|||
//
|
|||
#ifndef SDCARD_CONNECTION |
|||
#define SDCARD_CONNECTION LCD |
|||
#endif |
|||
|
|||
//
|
|||
// Servos
|
|||
//
|
|||
#define SERVO0_PIN P2_00 |
|||
|
|||
//
|
|||
// Limit Switches
|
|||
//
|
|||
#define X_STOP_PIN P1_29 |
|||
#define Y_STOP_PIN P1_28 |
|||
#define Z_STOP_PIN P1_27 |
|||
|
|||
//
|
|||
// Z Probe (when not Z_MIN_PIN)
|
|||
//
|
|||
#ifndef Z_MIN_PROBE_PIN |
|||
#define Z_MIN_PROBE_PIN P0_10 |
|||
#endif |
|||
|
|||
//
|
|||
// Filament Runout Sensor
|
|||
//
|
|||
#define FIL_RUNOUT_PIN P1_26 |
|||
#define FIL_RUNOUT2_PIN P1_25 |
|||
|
|||
//
|
|||
// Power Supply Control
|
|||
//
|
|||
#ifndef PS_ON_PIN |
|||
#define PS_ON_PIN P1_00 |
|||
#endif |
|||
|
|||
//
|
|||
// Power Loss Detection
|
|||
//
|
|||
#ifndef POWER_LOSS_PIN |
|||
#define POWER_LOSS_PIN P1_00 |
|||
#endif |
|||
|
|||
//
|
|||
// Steppers
|
|||
//
|
|||
#define X_STEP_PIN P2_02 |
|||
#define X_DIR_PIN P2_06 |
|||
#define X_ENABLE_PIN P2_01 |
|||
#ifndef X_CS_PIN |
|||
#define X_CS_PIN P1_10 |
|||
#endif |
|||
|
|||
#define Y_STEP_PIN P0_19 |
|||
#define Y_DIR_PIN P0_20 |
|||
#define Y_ENABLE_PIN P2_08 |
|||
#ifndef Y_CS_PIN |
|||
#define Y_CS_PIN P1_09 |
|||
#endif |
|||
|
|||
#define Z_STEP_PIN P0_22 |
|||
#define Z_DIR_PIN P2_11 |
|||
#define Z_ENABLE_PIN P0_21 |
|||
#ifndef Z_CS_PIN |
|||
#define Z_CS_PIN P1_08 |
|||
#endif |
|||
|
|||
#define E0_STEP_PIN P2_13 |
|||
#define E0_DIR_PIN P0_11 |
|||
#define E0_ENABLE_PIN P2_12 |
|||
#ifndef E0_CS_PIN |
|||
#define E0_CS_PIN P1_04 |
|||
#endif |
|||
|
|||
#define E1_STEP_PIN P1_15 |
|||
#define E1_DIR_PIN P1_14 |
|||
#define E1_ENABLE_PIN P1_16 |
|||
#ifndef E1_CS_PIN |
|||
#define E1_CS_PIN P1_01 |
|||
#endif |
|||
|
|||
#define TEMP_1_PIN P0_23_A0 // A2 (T2) - (69) - TEMP_1_PIN
|
|||
#define TEMP_BED_PIN P0_25_A2 // A0 (T0) - (67) - TEMP_BED_PIN
|
|||
|
|||
//
|
|||
// Include common SKR pins
|
|||
//
|
|||
#include "pins_BTT_SKR.h" |
|||
|
|||
//
|
|||
// Software SPI pins for TMC2130 stepper drivers
|
|||
//
|
|||
#if ENABLED(TMC_USE_SW_SPI) |
|||
#ifndef TMC_SW_MOSI |
|||
#define TMC_SW_MOSI P1_17 |
|||
#endif |
|||
#ifndef TMC_SW_MISO |
|||
#define TMC_SW_MISO P0_05 |
|||
#endif |
|||
#ifndef TMC_SW_SCK |
|||
#define TMC_SW_SCK P0_04 |
|||
#endif |
|||
#endif |
|||
|
|||
#if HAS_TMC220x |
|||
/**
|
|||
* TMC2208/TMC2209 stepper drivers |
|||
* |
|||
* Hardware serial communication ports. |
|||
* If undefined software serial is used according to the pins below |
|||
*/ |
|||
//#define X_HARDWARE_SERIAL Serial
|
|||
//#define X2_HARDWARE_SERIAL Serial1
|
|||
//#define Y_HARDWARE_SERIAL Serial1
|
|||
//#define Y2_HARDWARE_SERIAL Serial1
|
|||
//#define Z_HARDWARE_SERIAL Serial1
|
|||
//#define Z2_HARDWARE_SERIAL Serial1
|
|||
//#define E0_HARDWARE_SERIAL Serial1
|
|||
//#define E1_HARDWARE_SERIAL Serial1
|
|||
//#define E2_HARDWARE_SERIAL Serial1
|
|||
//#define E3_HARDWARE_SERIAL Serial1
|
|||
//#define E4_HARDWARE_SERIAL Serial1
|
|||
|
|||
//
|
|||
// Software serial
|
|||
//
|
|||
#define X_SERIAL_TX_PIN P1_10 |
|||
#define X_SERIAL_RX_PIN P1_10 |
|||
|
|||
#define Y_SERIAL_TX_PIN P1_09 |
|||
#define Y_SERIAL_RX_PIN P1_09 |
|||
|
|||
#define Z_SERIAL_TX_PIN P1_08 |
|||
#define Z_SERIAL_RX_PIN P1_08 |
|||
|
|||
#define E0_SERIAL_TX_PIN P1_04 |
|||
#define E0_SERIAL_RX_PIN P1_04 |
|||
|
|||
#define E1_SERIAL_TX_PIN P1_01 |
|||
#define E1_SERIAL_RX_PIN P1_01 |
|||
|
|||
#define Z2_SERIAL_TX_PIN P1_01 |
|||
#define Z2_SERIAL_RX_PIN P1_01 |
|||
|
|||
// Reduce baud rate to improve software serial reliability
|
|||
#define TMC_BAUD_RATE 19200 |
|||
#endif |
|||
|
|||
//
|
|||
// SD Connection
|
|||
//
|
|||
#if SD_CONNECTION_IS(LCD) |
|||
#define SS_PIN P0_16 |
|||
#endif |
|||
|
|||
/**
|
|||
* _____ _____ |
|||
* NC | · · | GND 5V | · · | GND |
|||
* RESET | · · | 1.31(SD_DETECT) (LCD_D7) 1.23 | · · | 1.22 (LCD_D6) |
|||
* (MOSI)0.18 | · · | 3.25(BTN_EN2) (LCD_D5) 1.21 | · · | 1.20 (LCD_D4) |
|||
* (SD_SS)0.16 | · · | 3.26(BTN_EN1) (LCD_RS) 1.19 | · · | 1.18 (LCD_EN) |
|||
* (SCK)0.15 | · · | 0.17(MISO) (BTN_ENC) 0.28 | · · | 1.30 (BEEPER) |
|||
* ----- ----- |
|||
* EXP2 EXP1 |
|||
*/ |
|||
#if HAS_SPI_LCD |
|||
#define BTN_ENC P0_28 // (58) open-drain
|
|||
|
|||
#if ENABLED(CR10_STOCKDISPLAY) |
|||
#define LCD_PINS_RS P1_22 |
|||
|
|||
#define BTN_EN1 P1_18 |
|||
#define BTN_EN2 P1_20 |
|||
|
|||
#define LCD_PINS_ENABLE P1_23 |
|||
#define LCD_PINS_D4 P1_21 |
|||
|
|||
#else |
|||
#define LCD_PINS_RS P1_19 |
|||
|
|||
#define BTN_EN1 P3_26 // (31) J3-2 & AUX-4
|
|||
#define BTN_EN2 P3_25 // (33) J3-4 & AUX-4
|
|||
|
|||
#define LCD_PINS_ENABLE P1_18 |
|||
#define LCD_PINS_D4 P1_20 |
|||
|
|||
#define LCD_SDSS P0_16 // (16) J3-7 & AUX-4
|
|||
#define SD_DETECT_PIN P1_31 // (49) (NOT 5V tolerant)
|
|||
|
|||
#if ENABLED(FYSETC_MINI_12864) |
|||
#define DOGLCD_CS P1_18 |
|||
#define DOGLCD_A0 P1_19 |
|||
#define DOGLCD_SCK P0_15 |
|||
#define DOGLCD_MOSI P0_18 |
|||
|
|||
#define LCD_BACKLIGHT_PIN -1 |
|||
|
|||
#define FORCE_SOFT_SPI // Use this if default of hardware SPI causes display problems
|
|||
// results in LCD soft SPI mode 3, SD soft SPI mode 0
|
|||
|
|||
#define LCD_RESET_PIN P1_20 // Must be high or open for LCD to operate normally.
|
|||
|
|||
#if EITHER(FYSETC_MINI_12864_1_2, FYSETC_MINI_12864_2_0) |
|||
#ifndef RGB_LED_R_PIN |
|||
#define RGB_LED_R_PIN P1_21 |
|||
#endif |
|||
#ifndef RGB_LED_G_PIN |
|||
#define RGB_LED_G_PIN P1_22 |
|||
#endif |
|||
#ifndef RGB_LED_B_PIN |
|||
#define RGB_LED_B_PIN P1_23 |
|||
#endif |
|||
#elif ENABLED(FYSETC_MINI_12864_2_1) |
|||
#define NEOPIXEL_PIN P1_21 |
|||
#endif |
|||
|
|||
#else // !FYSETC_MINI_12864
|
|||
|
|||
#if ENABLED(MKS_MINI_12864) |
|||
#define DOGLCD_CS P1_21 |
|||
#define DOGLCD_A0 P1_22 |
|||
#define DOGLCD_SCK P0_15 |
|||
#define DOGLCD_MOSI P0_18 |
|||
#define FORCE_SOFT_SPI |
|||
#endif |
|||
|
|||
#if ENABLED(ULTIPANEL) |
|||
#define LCD_PINS_D5 P1_21 |
|||
#define LCD_PINS_D6 P1_22 |
|||
#define LCD_PINS_D7 P1_23 |
|||
#endif |
|||
|
|||
#endif // !FYSETC_MINI_12864
|
|||
|
|||
#endif |
|||
|
|||
#endif // HAS_SPI_LCD
|
|||
|
|||
//
|
|||
// Neopixel LED
|
|||
//
|
|||
#ifndef NEOPIXEL_PIN |
|||
#define NEOPIXEL_PIN P1_24 |
|||
#endif |
|||
|
|||
/**
|
|||
* Special pins |
|||
* P1_30 (37) (NOT 5V tolerant) |
|||
* P1_31 (49) (NOT 5V tolerant) |
|||
* P0_27 (57) (Open collector) |
|||
* P0_28 (58) (Open collector) |
|||
*/ |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue