HAL cleanup, Teensy 3.1 platform

This commit is contained in:
Scott Lahteine 2019-08-02 07:22:07 -05:00
parent 940c59d9da
commit e85eca2630
12 changed files with 146 additions and 78 deletions

View File

@ -14,6 +14,7 @@ env:
- TEST_PLATFORM="LPC1768" - TEST_PLATFORM="LPC1768"
- TEST_PLATFORM="LPC1769" - TEST_PLATFORM="LPC1769"
- TEST_PLATFORM="STM32F1" - TEST_PLATFORM="STM32F1"
- TEST_PLATFORM="teensy31"
- TEST_PLATFORM="teensy35" - TEST_PLATFORM="teensy35"
- TEST_PLATFORM="linux_native" - TEST_PLATFORM="linux_native"
- TEST_PLATFORM="esp32" - TEST_PLATFORM="esp32"

View File

@ -461,7 +461,6 @@
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current #define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // Smoothing factor within any PID loop #define PID_K1 0.95 // Smoothing factor within any PID loop
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
//#define MIN_POWER 0
//#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM) //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)
//#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM) //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
//#define PID_DEBUG // Sends debug data to the serial port. //#define PID_DEBUG // Sends debug data to the serial port.

View File

@ -31,12 +31,12 @@
#ifdef ARDUINO_ARCH_SAM #ifdef ARDUINO_ARCH_SAM
#include "../shared/persistent_store_api.h"
#include "../../inc/MarlinConfig.h" #include "../../inc/MarlinConfig.h"
#if ENABLED(EEPROM_SETTINGS) && NONE(I2C_EEPROM, SPI_EEPROM) #if ENABLED(EEPROM_SETTINGS) && NONE(I2C_EEPROM, SPI_EEPROM)
#include "../shared/Marduino.h" #include "../shared/Marduino.h"
#include "../shared/persistent_store_api.h"
#define EEPROMSize 4096 #define EEPROMSize 4096
#define PagesPerGroup 128 #define PagesPerGroup 128

View File

@ -19,19 +19,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
#pragma once
/** /**
* Description: HAL for Teensy 3.5 and Teensy 3.6 * Description: HAL for Teensy 3.5 and Teensy 3.6
*/ */
#pragma once
#define CPU_32_BIT #define CPU_32_BIT
#include "../shared/Marduino.h" #include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../math_32bit.h" #include "../shared/HAL_SPI.h"
#include "../HAL_SPI.h"
#include "fastio_Teensy.h" #include "fastio_Teensy.h"
#include "watchdog_Teensy.h" #include "watchdog_Teensy.h"

View File

@ -24,13 +24,10 @@
#include "../shared/persistent_store_api.h" #include "../shared/persistent_store_api.h"
namespace HAL { bool PersistentStore::access_start() { return true; }
namespace PersistentStore { bool PersistentStore::access_finish() { return true; }
bool access_start() { return true; } bool PersistentStore::write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
bool access_finish() { return true; }
bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
while (size--) { while (size--) {
uint8_t * const p = (uint8_t * const)pos; uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value; uint8_t v = *value;
@ -50,7 +47,7 @@ bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
return false; return false;
} }
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc, const bool writing/*=true*/) { bool PersistentStore::read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc, const bool writing/*=true*/) {
do { do {
uint8_t c = eeprom_read_byte((uint8_t*)pos); uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c; if (writing) *value = c;
@ -61,8 +58,5 @@ bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc, const boo
return false; return false;
} }
} // PersistentStore
} // HAL
#endif // EEPROM_SETTINGS #endif // EEPROM_SETTINGS
#endif // __MK20DX256__ #endif // __MK20DX256__

View File

@ -1,50 +0,0 @@
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../../inc/MarlinConfig.h"
#if ENABLED(EEPROM_SETTINGS)
#include "../shared/persistent_store_api.h"
namespace HAL {
namespace PersistentStore {
bool access_start() { return true; }
bool access_finish() { return true; }
bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
while (size--) {
uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value;
// EEPROM has only ~100,000 write cycles,
// so only write bytes that have changed!
if (v != eeprom_read_byte(p)) {
eeprom_write_byte(p, v);
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
};
return false;
}
bool read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
}
} // PersistentStore
} // HAL
#endif // EEPROM_SETTINGS
#endif // __MK64FX512__ || __MK66FX1M0__

View File

@ -16,8 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
#pragma once
#ifndef HAL_PINSDEBUG_TEENSY_H
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS #define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin #define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
@ -103,5 +102,3 @@ bool HAL_pwm_status(int8_t pin) {
} }
static void HAL_pwm_details(uint8_t pin) { /* TODO */ } static void HAL_pwm_details(uint8_t pin) { /* TODO */ }
#endif

View File

@ -39,13 +39,13 @@
// #define MCU_STM32F103ZE // not yet required // #define MCU_STM32F103ZE // not yet required
// Enable EEPROM Emulation for this board, so that we don't overwrite factory data // Enable EEPROM Emulation for this board, so that we don't overwrite factory data
// #define I2C_EEPROM // AT24C64 //#define I2C_EEPROM // AT24C64
// #define E2END 0x7FFF // 64KB //#define E2END 0x7FFF // 64KB
// #define FLASH_EEPROM_EMULATION 1 //#define FLASH_EEPROM_EMULATION
// #define E2END 0xFFF // 4KB //#define E2END 0xFFF // 4KB
// #define E2END uint32(EEPROM_START_ADDRESS + (EEPROM_PAGE_SIZE * 2) - 1) //#define E2END uint32(EEPROM_START_ADDRESS + (EEPROM_PAGE_SIZE * 2) - 1)
// #define EEPROM_CHITCHAT //#define EEPROM_CHITCHAT
// #define DEBUG_EEPROM_READWRITE //#define DEBUG_EEPROM_READWRITE
// //
// Limit Switches // Limit Switches

View File

@ -0,0 +1,116 @@
#!/usr/bin/env bash
#
# Build tests for Teensy 3.1/3.2 (ARM Cortex-M4)
#
# exit on first failure
set -e
backup_ramps
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
exec_test $1 $2 "Teensy3.1 with default config"
#
# Test as many features together as possible
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_set EXTRUDERS 2
opt_set TEMP_SENSOR_0 1
opt_set TEMP_SENSOR_1 5
opt_set TEMP_SENSOR_BED 1
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER LCD_INFO_MENU SDSUPPORT SDCARD_SORT_ALPHA \
FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY CALIBRATION_GCODE BAUD_RATE_GCODE \
FIX_MOUNTED_PROBE Z_SAFE_HOMING AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET BABYSTEP_ZPROBE_GFX_OVERLAY \
PRINTCOUNTER NOZZLE_PARK_FEATURE NOZZLE_CLEAN_FEATURE SLOW_PWM_HEATERS PIDTEMPBED EEPROM_SETTINGS INCH_MODE_SUPPORT TEMPERATURE_UNITS_SUPPORT M100_FREE_MEMORY_WATCHER \
ADVANCED_PAUSE_FEATURE ARC_SUPPORT BEZIER_CURVE_SUPPORT EXPERIMENTAL_I2CBUS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES PARK_HEAD_ON_PAUSE \
PHOTO_GCODE PHOTO_POSITION PHOTO_SWITCH_POSITION PHOTO_SWITCH_MS PHOTO_DELAY_MS PHOTO_RETRACT_MM \
HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT
opt_set I2C_SLAVE_ADDRESS 63
opt_set GRID_MAX_POINTS_X 16
exec_test $1 $2 "Teensy3.1 with many features"
#
# Test a Sled Z Probe with Linear leveling
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_enable EEPROM_SETTINGS Z_PROBE_SLED AUTO_BED_LEVELING_LINEAR DEBUG_LEVELING_FEATURE GCODE_MACROS
exec_test $1 $2 "Sled Z Probe with Linear leveling"
#
# Test a Servo Probe
#
# restore_configs
# opt_set MOTHERBOARD BOARD_TEENSY31_32
# opt_enable Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
# AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS
# opt_set NUM_SERVOS 1
# exec_test $1 $2 "Servo Probe"
#
# ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
#
# opt_enable AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS \
# EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES
# exec_test $1 $2 "...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES"
#
# Test MAGNETIC_PARKING_EXTRUDER with LCD
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_set EXTRUDERS 2
opt_set TEMP_SENSOR_1 1
opt_enable MAGNETIC_PARKING_EXTRUDER ULTIMAKERCONTROLLER
exec_test $1 $2 "MAGNETIC_PARKING_EXTRUDER with LCD"
#
# Mixing Extruder
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_enable MIXING_EXTRUDER DIRECT_MIXING_IN_G1 GRADIENT_MIX GRADIENT_VTOOL REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
opt_set MIXING_STEPPERS 2
exec_test $1 $2 "Mixing Extruder"
#
# Test SWITCHING_EXTRUDER
#
# restore_configs
# opt_set MOTHERBOARD BOARD_TEENSY31_32
# opt_set EXTRUDERS 2
# opt_set NUM_SERVOS 1
# opt_enable SWITCHING_EXTRUDER ULTIMAKERCONTROLLER
# exec_test $1 $2 "SWITCHING_EXTRUDER"
#
# Enable COREXY
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_enable COREXY
exec_test $1 $2 "COREXY"
#
# Enable COREXZ
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_enable COREXZ
exec_test $1 $2 "COREXZ"
#
# Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
#
restore_configs
opt_set MOTHERBOARD BOARD_TEENSY31_32
opt_enable Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
pins_set ramps/RAMPS X_MAX_PIN -1
opt_add Z2_MAX_PIN 2
opt_enable USE_XMAX_PLUG
exec_test $1 $2 "Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS"
# Clean up
restore_configs

View File

@ -530,6 +530,19 @@ lib_ignore = Adafruit NeoPixel, c1921b4, TMC26XStepper, SailfishLCD, SailfishRGB
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32> src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32>
monitor_speed = 250000 monitor_speed = 250000
#
# Teensy 3.1 / 3.2 (ARM Cortex-M4)
#
[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
build_flags = ${common.build_flags}
lib_deps = ${common.lib_deps}
lib_ignore = Adafruit NeoPixel
src_filter = ${common.default_src_filter} +<src/HAL/HAL_TEENSY31_32>
monitor_speed = 250000
# #
# Teensy 3.5 / 3.6 (ARM Cortex-M4) # Teensy 3.5 / 3.6 (ARM Cortex-M4)
# #