From 03024018750eef2d6f04d69daa0d777ce5f44c7c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 11 Nov 2022 14:57:08 -0600 Subject: [PATCH] Misc. cleanup --- Marlin/Configuration.h | 2 +- .../NATIVE_SIM/u8g/u8g_com_st7920_sw_spi.cpp | 2 +- Marlin/src/HAL/SAMD21/HAL.cpp | 142 +++++++----------- Marlin/src/HAL/SAMD21/HAL.h | 12 +- Marlin/src/HAL/SAMD21/HAL_SPI.cpp | 14 +- Marlin/src/HAL/SAMD21/MarlinSPI.h | 6 +- Marlin/src/HAL/SAMD21/QSPIFlash.cpp | 6 +- Marlin/src/HAL/SAMD21/SAMD21.h | 10 +- Marlin/src/HAL/SAMD21/Servo.cpp | 7 +- Marlin/src/HAL/SAMD21/ServoTimers.h | 8 +- Marlin/src/HAL/SAMD21/eeprom_flash.cpp | 32 +--- Marlin/src/HAL/SAMD21/eeprom_qspi.cpp | 6 +- Marlin/src/HAL/SAMD21/eeprom_wired.cpp | 6 +- Marlin/src/HAL/SAMD21/endstop_interrupts.h | 8 +- Marlin/src/HAL/SAMD21/fastio.h | 10 +- Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h | 6 +- Marlin/src/HAL/SAMD21/inc/Conditionals_adv.h | 6 +- Marlin/src/HAL/SAMD21/inc/Conditionals_post.h | 6 +- Marlin/src/HAL/SAMD21/inc/SanityCheck.h | 10 +- Marlin/src/HAL/SAMD21/pinsDebug.h | 8 +- Marlin/src/HAL/SAMD21/spi_pins.h | 10 +- Marlin/src/HAL/SAMD21/timers.cpp | 31 ++-- Marlin/src/HAL/SAMD21/timers.h | 18 +-- .../src/HAL/SAMD21/u8g/LCD_I2C_routines.cpp | 6 +- Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.h | 6 +- Marlin/src/HAL/SAMD21/u8g/LCD_defines.h | 6 +- Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.c | 8 +- Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.h | 6 +- .../u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp | 22 +-- Marlin/src/lcd/dogm/marlinui_DOGM.h | 2 +- Marlin/src/pins/pins.h | 2 +- Marlin/src/pins/samd/pins_MINITRONICS20.h | 7 +- ini/samd21.ini | 3 +- 33 files changed, 192 insertions(+), 242 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 87a98298a58ec..bf8490b2adffc 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -2739,7 +2739,7 @@ // // ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 +// https://reprapworld.com/electronics/3d-printer-modules/autonomous-printing/graphical-lcd-screen-v1-0/ // //#define REPRAPWORLD_GRAPHICAL_LCD diff --git a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_st7920_sw_spi.cpp b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_st7920_sw_spi.cpp index c384cdd75185a..a3254774bfdf3 100644 --- a/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_st7920_sw_spi.cpp +++ b/Marlin/src/HAL/NATIVE_SIM/u8g/u8g_com_st7920_sw_spi.cpp @@ -168,4 +168,4 @@ uint8_t u8g_com_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void #endif #endif // IS_U8GLIB_ST7920 -#endif // TARGET_LPC1768 +#endif // __PLAT_NATIVE_SIM__ diff --git a/Marlin/src/HAL/SAMD21/HAL.cpp b/Marlin/src/HAL/SAMD21/HAL.cpp index dbffcd97731b9..551ad3da04b2a 100644 --- a/Marlin/src/HAL/SAMD21/HAL.cpp +++ b/Marlin/src/HAL/SAMD21/HAL.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #ifdef __SAMD21__ @@ -30,30 +30,26 @@ #include - - #if USING_HW_SERIALUSB - DefaultSerial1 MSerialUSB(false, SerialUSB); - #endif - #if USING_HW_SERIAL0 - DefaultSerial2 MSerial1(false, Serial1); - #endif - #if USING_HW_SERIAL1 - DefaultSerial3 MSerial2(false, Serial2); - #endif - #if USING_HW_SERIAL2 - DefaultSerial4 MSerial3(false, Serial3); - #endif - #if USING_HW_SERIAL3 - DefaultSerial5 MSerial4(false, Serial4); - #endif +#if USING_HW_SERIALUSB + DefaultSerial1 MSerialUSB(false, SerialUSB); +#endif +#if USING_HW_SERIAL0 + DefaultSerial2 MSerial1(false, Serial1); +#endif +#if USING_HW_SERIAL1 + DefaultSerial3 MSerial2(false, Serial2); +#endif +#if USING_HW_SERIAL2 + DefaultSerial4 MSerial3(false, Serial3); +#endif +#if USING_HW_SERIAL3 + DefaultSerial5 MSerial4(false, Serial4); +#endif #define WDT_CONFIG_PER_7_Val 0x9u #define WDT_CONFIG_PER_Pos 0 #define WDT_CONFIG_PER_7 (WDT_CONFIG_PER_7_Val << WDT_CONFIG_PER_Pos) - - - #if ENABLED(USE_WATCHDOG) #define WDT_TIMEOUT_REG TERN(WATCHDOG_DURATION_8S, WDT_CONFIG_PER_CYC8192, WDT_CONFIG_PER_CYC4096) // 4 or 8 second timeout @@ -68,7 +64,7 @@ GCLK_GENCTRL_IDC | // Set the duty cycle to 50/50 HIGH/LOW GCLK_GENCTRL_GENEN | // Enable GCLK2 GCLK_GENCTRL_SRC_OSCULP32K | // Set the clock source to the ultra low power oscillator (OSCULP32K) - GCLK_GENCTRL_ID(2); // Select GCLK2 + GCLK_GENCTRL_ID(2); // Select GCLK2 while (GCLK->STATUS.bit.SYNCBUSY); // Wait for synchronization // Feed GCLK2 to WDT (Watchdog Timer) @@ -86,7 +82,7 @@ // Reset watchdog. MUST be called at least every 4 seconds after the // first watchdog_init or SAMD will go into emergency procedures. void MarlinHAL::watchdog_refresh() { - WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY; + WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY; while (WDT->STATUS.bit.SYNCBUSY); } @@ -96,8 +92,6 @@ // Types // ------------------------ - - // ------------------------ // Private Variables // ------------------------ @@ -106,9 +100,7 @@ // Private functions // ------------------------ -void MarlinHAL::dma_init() { - -} +void MarlinHAL::dma_init() {} // ------------------------ // Public functions @@ -116,9 +108,6 @@ void MarlinHAL::dma_init() { // HAL initialization task void MarlinHAL::init() { - - - TERN_(DMA_IS_REQUIRED, dma_init()); #if ENABLED(SDSUPPORT) #if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD) @@ -126,8 +115,6 @@ void MarlinHAL::init() { #endif OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up #endif - - } #pragma push_macro("WDT") @@ -142,7 +129,6 @@ void MarlinHAL::reboot() { NVIC_SystemReset(); } extern "C" { void * _sbrk(int incr); - extern unsigned int __bss_end__; // end of bss section } @@ -159,70 +145,57 @@ int freeMemory() { uint16_t MarlinHAL::adc_result; void MarlinHAL::adc_init() { - //#if ADC_IS_REQUIRED + /* thanks to https://www.eevblog.com/forum/microcontrollers/samd21g18-adc-with-resrdy-interrupts-only-reads-once-or-twice/ */ - /* thanks to https://www.eevblog.com/forum/microcontrollers/samd21g18-adc-with-resrdy-interrupts-only-reads-once-or-twice/ */ + ADC->CTRLA.bit.ENABLE = false; + while(ADC->STATUS.bit.SYNCBUSY); - ADC->CTRLA.bit.ENABLE = false; - while(ADC->STATUS.bit.SYNCBUSY); + // load chip corrections + uint32_t bias = (*((uint32_t *) ADC_FUSES_BIASCAL_ADDR) & ADC_FUSES_BIASCAL_Msk) >> ADC_FUSES_BIASCAL_Pos; + uint32_t linearity = (*((uint32_t *) ADC_FUSES_LINEARITY_0_ADDR) & ADC_FUSES_LINEARITY_0_Msk) >> ADC_FUSES_LINEARITY_0_Pos; + linearity |= ((*((uint32_t *) ADC_FUSES_LINEARITY_1_ADDR) & ADC_FUSES_LINEARITY_1_Msk) >> ADC_FUSES_LINEARITY_1_Pos) << 5; + /* Wait for bus synchronization. */ + while (ADC->STATUS.bit.SYNCBUSY) {}; - // load chip corrections - uint32_t bias = (*((uint32_t *) ADC_FUSES_BIASCAL_ADDR) & ADC_FUSES_BIASCAL_Msk) >> ADC_FUSES_BIASCAL_Pos; - uint32_t linearity = (*((uint32_t *) ADC_FUSES_LINEARITY_0_ADDR) & ADC_FUSES_LINEARITY_0_Msk) >> ADC_FUSES_LINEARITY_0_Pos; - linearity |= ((*((uint32_t *) ADC_FUSES_LINEARITY_1_ADDR) & ADC_FUSES_LINEARITY_1_Msk) >> ADC_FUSES_LINEARITY_1_Pos) << 5; - - /* Wait for bus synchronization. */ - while (ADC->STATUS.bit.SYNCBUSY) {}; + ADC->CALIB.reg = ADC_CALIB_BIAS_CAL(bias) | ADC_CALIB_LINEARITY_CAL(linearity); - ADC->CALIB.reg = ADC_CALIB_BIAS_CAL(bias) | ADC_CALIB_LINEARITY_CAL(linearity); - - /* Wait for bus synchronization. */ - while (ADC->STATUS.bit.SYNCBUSY) {}; - - - ADC->CTRLA.bit.SWRST = true; - while(ADC->STATUS.bit.SYNCBUSY); + /* Wait for bus synchronization. */ + while (ADC->STATUS.bit.SYNCBUSY) {}; - ADC->REFCTRL.reg = ADC_REFCTRL_REFSEL_INTVCC1; - ADC->AVGCTRL.reg = ADC_AVGCTRL_SAMPLENUM_32| ADC_AVGCTRL_ADJRES(4);; - - - ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV128 | - ADC_CTRLB_RESSEL_16BIT | - ADC_CTRLB_FREERUN; - while(ADC->STATUS.bit.SYNCBUSY); + ADC->CTRLA.bit.SWRST = true; + while(ADC->STATUS.bit.SYNCBUSY); - ADC->SAMPCTRL.bit.SAMPLEN = 0x00; - while(ADC->STATUS.bit.SYNCBUSY); + ADC->REFCTRL.reg = ADC_REFCTRL_REFSEL_INTVCC1; + ADC->AVGCTRL.reg = ADC_AVGCTRL_SAMPLENUM_32| ADC_AVGCTRL_ADJRES(4);; + ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV128 | + ADC_CTRLB_RESSEL_16BIT | + ADC_CTRLB_FREERUN; + while(ADC->STATUS.bit.SYNCBUSY); - ADC->INPUTCTRL.reg = ADC_INPUTCTRL_INPUTSCAN(HAL_ADC_AIN_LEN) // scan (INPUTSCAN + NUM_EXTUDERS - 1) pins - | ADC_INPUTCTRL_GAIN_DIV2 |ADC_INPUTCTRL_MUXNEG_GND| HAL_ADC_AIN_START ; /* set to first AIN */ + ADC->SAMPCTRL.bit.SAMPLEN = 0x00; + while(ADC->STATUS.bit.SYNCBUSY); - while(ADC->STATUS.bit.SYNCBUSY); + ADC->INPUTCTRL.reg = ADC_INPUTCTRL_INPUTSCAN(HAL_ADC_AIN_LEN) // scan (INPUTSCAN + NUM_EXTUDERS - 1) pins + | ADC_INPUTCTRL_GAIN_DIV2 |ADC_INPUTCTRL_MUXNEG_GND| HAL_ADC_AIN_START ; /* set to first AIN */ + while(ADC->STATUS.bit.SYNCBUSY); - ADC->INTENSET.reg |= ADC_INTENSET_RESRDY; // enable Result Ready ADC interrupts - while (ADC->STATUS.bit.SYNCBUSY); + ADC->INTENSET.reg |= ADC_INTENSET_RESRDY; // enable Result Ready ADC interrupts + while (ADC->STATUS.bit.SYNCBUSY); - NVIC_EnableIRQ(ADC_IRQn); // enable ADC interrupts + NVIC_EnableIRQ(ADC_IRQn); // enable ADC interrupts - NVIC_SetPriority(ADC_IRQn, 3); - - ADC->CTRLA.bit.ENABLE = true; + NVIC_SetPriority(ADC_IRQn, 3); - - //#endif // ADC_IS_REQUIRED + ADC->CTRLA.bit.ENABLE = true; } volatile uint32_t adc_results[HAL_ADC_AIN_NUM_SENSORS]; - - void ADC_Handler() { - while(ADC->STATUS.bit.SYNCBUSY == 1); int pos = ADC->INPUTCTRL.bit.INPUTOFFSET; @@ -230,20 +203,13 @@ void ADC_Handler() { ADC->INTFLAG.reg = ADC_INTENSET_RESRDY; /* Clear the data ready flag. */ } - - -void MarlinHAL::adc_start(const pin_t pin) { - +void MarlinHAL::adc_start(const pin_t pin) { /* due to the way INPUTOFFSET works, the last sensor is the first position in the array and we want the ADC_handler interrupt to be as simple possible, so we do the calculation here. */ unsigned int pos = PIN_TO_INPUTCTRL(pin) - HAL_ADC_AIN_START + 1; - if (pos == HAL_ADC_AIN_NUM_SENSORS) - pos = 0; - // #if ADC_IS_REQUIRED - adc_result = adc_results[pos];//16 bit resolution - //#endif - + if (pos == HAL_ADC_AIN_NUM_SENSORS) pos = 0; + adc_result = adc_results[pos]; // 16-bit resolution //adc_result = 0xFFFF; } diff --git a/Marlin/src/HAL/SAMD21/HAL.h b/Marlin/src/HAL/SAMD21/HAL.h index a6a61bec9cf4a..6bca9f7baedbf 100644 --- a/Marlin/src/HAL/SAMD21/HAL.h +++ b/Marlin/src/HAL/SAMD21/HAL.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #define CPU_32_BIT @@ -35,12 +35,12 @@ #ifdef __SAMD21__ - + // ------------------------ // Serial ports // ------------------------ // #ifdef USBCON - + #include "../../core/serial_hook.h" typedef ForwardSerial1Class< decltype(SerialUSB) > DefaultSerial1; extern DefaultSerial1 MSerialUSB; diff --git a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp index 48eeb63a2d131..68241c105fa86 100644 --- a/Marlin/src/HAL/SAMD21/HAL_SPI.cpp +++ b/Marlin/src/HAL/SAMD21/HAL_SPI.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ /** @@ -55,7 +55,7 @@ #else // !SOFTWARE_SPI #define sdSPI SPI - + static SPISettings spiConfig; @@ -110,14 +110,14 @@ * @return Nothing */ void spiRead(uint8_t *buf, uint16_t nbyte) { - + if (nbyte == 0) return; memset(buf, 0xFF, nbyte); - + sdSPI.beginTransaction(spiConfig); sdSPI.transfer(buf, nbyte); sdSPI.endTransaction(); - + } /** diff --git a/Marlin/src/HAL/SAMD21/MarlinSPI.h b/Marlin/src/HAL/SAMD21/MarlinSPI.h index 201ba8a4fdecb..7b5392793e15b 100644 --- a/Marlin/src/HAL/SAMD21/MarlinSPI.h +++ b/Marlin/src/HAL/SAMD21/MarlinSPI.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/QSPIFlash.cpp b/Marlin/src/HAL/SAMD21/QSPIFlash.cpp index d4cb3963383f2..fa54c6207125c 100644 --- a/Marlin/src/HAL/SAMD21/QSPIFlash.cpp +++ b/Marlin/src/HAL/SAMD21/QSPIFlash.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #include "../../inc/MarlinConfig.h" diff --git a/Marlin/src/HAL/SAMD21/SAMD21.h b/Marlin/src/HAL/SAMD21/SAMD21.h index 0cbd9f64f905d..14d3aa3e821f9 100644 --- a/Marlin/src/HAL/SAMD21/SAMD21.h +++ b/Marlin/src/HAL/SAMD21/SAMD21.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #define SYNC(sc) while (sc) { \ asm(""); \ @@ -58,7 +58,7 @@ : -1) - + #define A2_AIN 3 #define A3_AIN 4 #define A4_AIN 5 diff --git a/Marlin/src/HAL/SAMD21/Servo.cpp b/Marlin/src/HAL/SAMD21/Servo.cpp index af9464221d44a..9444c9c5aa605 100644 --- a/Marlin/src/HAL/SAMD21/Servo.cpp +++ b/Marlin/src/HAL/SAMD21/Servo.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,9 +21,10 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ + /** * This comes from Arduino library which at the moment is buggy and uncompilable */ diff --git a/Marlin/src/HAL/SAMD21/ServoTimers.h b/Marlin/src/HAL/SAMD21/ServoTimers.h index c3c2a46b31cbf..89805476831f1 100644 --- a/Marlin/src/HAL/SAMD21/ServoTimers.h +++ b/Marlin/src/HAL/SAMD21/ServoTimers.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #define _useTimer1 #define _useTimer2 diff --git a/Marlin/src/HAL/SAMD21/eeprom_flash.cpp b/Marlin/src/HAL/SAMD21/eeprom_flash.cpp index a3cae2d1a97d1..4a4e328d1a003 100644 --- a/Marlin/src/HAL/SAMD21/eeprom_flash.cpp +++ b/Marlin/src/HAL/SAMD21/eeprom_flash.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #ifdef __SAMD21__ @@ -30,17 +30,13 @@ #if ENABLED(FLASH_EEPROM_EMULATION) - #define TOTAL_FLASH_SIZE (MARLIN_EEPROM_SIZE+255)/256*256 /* reserve flash memory */ static const uint8_t flashdata[TOTAL_FLASH_SIZE] __attribute__((__aligned__(256))) { }; \ - - #include "../shared/eeprom_api.h" - size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; /* const uint8_t psz = NVMCTRL->SEESTAT.bit.PSZ, @@ -55,24 +51,19 @@ size_t PersistentStore::capacity() { : 32768;*/ } - uint32_t PAGE_SIZE; uint32_t ROW_SIZE; bool hasWritten = false; uint8_t * buffer; - -void _erase(const volatile void *flash_ptr) -{ - +void _erase(const volatile void *flash_ptr) { NVMCTRL->ADDR.reg = ((uint32_t)flash_ptr) / 2; NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_ER; while (!NVMCTRL->INTFLAG.bit.READY) { } } -void erase(const volatile void *flash_ptr, uint32_t size) -{ +void erase(const volatile void *flash_ptr, uint32_t size) { const uint8_t *ptr = (const uint8_t *)flash_ptr; while (size > ROW_SIZE) { _erase(ptr); @@ -82,15 +73,11 @@ void erase(const volatile void *flash_ptr, uint32_t size) _erase(ptr); } - bool PersistentStore::access_start() { - - /* clear page buffer*/ NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_PBC; while (NVMCTRL->INTFLAG.bit.READY == 0) { } - PAGE_SIZE = pow(2,3 + NVMCTRL->PARAM.bit.PSZ); ROW_SIZE= PAGE_SIZE * 4; /*NVMCTRL->SEECFG.reg = NVMCTRL_SEECFG_WMODE_BUFFERED; // Buffered mode and segment reallocation active @@ -101,8 +88,6 @@ bool PersistentStore::access_start() { } bool PersistentStore::access_finish() { - - if (hasWritten) { erase(&flashdata[0], TOTAL_FLASH_SIZE); @@ -114,14 +99,14 @@ bool PersistentStore::access_finish() { volatile uint32_t *dst_addr = (volatile uint32_t *) &flashdata; uint32_t *pointer = (uint32_t *) buffer; - for(uint32_t i = 0; i < TOTAL_FLASH_SIZE; i+=4) { + for (uint32_t i = 0; i < TOTAL_FLASH_SIZE; i+=4) { *dst_addr = (uint32_t) *pointer; pointer++; dst_addr ++; } - // Execute "WP" Write Page + // Execute "WP" Write Page NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_WP; while (NVMCTRL->INTFLAG.bit.READY == 0) { } @@ -132,10 +117,7 @@ bool PersistentStore::access_finish() { } bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) { - if (!hasWritten) { - - // init temp buffer buffer = (uint8_t *) malloc(MARLIN_EEPROM_SIZE); hasWritten=true; diff --git a/Marlin/src/HAL/SAMD21/eeprom_qspi.cpp b/Marlin/src/HAL/SAMD21/eeprom_qspi.cpp index 50f8928284ead..587dcb0b14160 100644 --- a/Marlin/src/HAL/SAMD21/eeprom_qspi.cpp +++ b/Marlin/src/HAL/SAMD21/eeprom_qspi.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #ifdef __SAMD21__ diff --git a/Marlin/src/HAL/SAMD21/eeprom_wired.cpp b/Marlin/src/HAL/SAMD21/eeprom_wired.cpp index 2c4b66d5b4761..ab71e616fc7bb 100644 --- a/Marlin/src/HAL/SAMD21/eeprom_wired.cpp +++ b/Marlin/src/HAL/SAMD21/eeprom_wired.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #ifdef __SAMD21__ diff --git a/Marlin/src/HAL/SAMD21/endstop_interrupts.h b/Marlin/src/HAL/SAMD21/endstop_interrupts.h index 7335f96775746..d8711aa01870d 100644 --- a/Marlin/src/HAL/SAMD21/endstop_interrupts.h +++ b/Marlin/src/HAL/SAMD21/endstop_interrupts.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once /** * Endstop interrupts for ATMEL SAMD21 based targets. diff --git a/Marlin/src/HAL/SAMD21/fastio.h b/Marlin/src/HAL/SAMD21/fastio.h index 3ab5085ceaf46..70969ff3d36b8 100644 --- a/Marlin/src/HAL/SAMD21/fastio.h +++ b/Marlin/src/HAL/SAMD21/fastio.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once /** * Fast IO functions for SAMD21 @@ -172,7 +172,7 @@ #define DIO9_PIN PIN_PA07 // A15 #define DIO4_PIN PIN_PA08 // A15 #define DIO3_PIN PIN_PA09 // A15 - #define DIO1_PIN PIN_PA10 + #define DIO1_PIN PIN_PA10 #define DIO0_PIN PIN_PA11 #define DIO18_PIN PIN_PA12 #define DIO52_PIN PIN_PA13 diff --git a/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h b/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h index f61910f138484..ca467937c3ca9 100644 --- a/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h +++ b/Marlin/src/HAL/SAMD21/inc/Conditionals_LCD.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/inc/Conditionals_adv.h b/Marlin/src/HAL/SAMD21/inc/Conditionals_adv.h index c9c93df059919..d6a3c4fe0b916 100644 --- a/Marlin/src/HAL/SAMD21/inc/Conditionals_adv.h +++ b/Marlin/src/HAL/SAMD21/inc/Conditionals_adv.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,7 +21,7 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h b/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h index 97f5eb189fe00..7315dc12a7790 100644 --- a/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h +++ b/Marlin/src/HAL/SAMD21/inc/Conditionals_post.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h index 6b2a7bf1cb97e..c4fe89496bd96 100644 --- a/Marlin/src/HAL/SAMD21/inc/SanityCheck.h +++ b/Marlin/src/HAL/SAMD21/inc/SanityCheck.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ /** @@ -42,10 +42,10 @@ #error "SDIO_SUPPORT is not supported on SAMD21." #endif -#if ENABLED(FAST_PWM_FAN) +#if ENABLED(FAST_PWM_FAN) #error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported on SAMD21." #endif #if ENABLED(POSTMORTEM_DEBUGGING) - #error "POSTMORTEM_DEBUGGING is not yet supported on Minitronics." + #error "POSTMORTEM_DEBUGGING is not yet supported on AGCM4." #endif diff --git a/Marlin/src/HAL/SAMD21/pinsDebug.h b/Marlin/src/HAL/SAMD21/pinsDebug.h index 5fa6a68cf2244..e322d1590ff1c 100644 --- a/Marlin/src/HAL/SAMD21/pinsDebug.h +++ b/Marlin/src/HAL/SAMD21/pinsDebug.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #define NUMBER_PINS_TOTAL PINS_COUNT diff --git a/Marlin/src/HAL/SAMD21/spi_pins.h b/Marlin/src/HAL/SAMD21/spi_pins.h index 0ba5c029d4efd..40b3510cf769a 100644 --- a/Marlin/src/HAL/SAMD21/spi_pins.h +++ b/Marlin/src/HAL/SAMD21/spi_pins.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #ifdef __SAMD21__ @@ -55,7 +55,7 @@ #error "Unsupported board!" -#endif //__SAMD21__ +#endif #ifndef SD_SS_PIN diff --git a/Marlin/src/HAL/SAMD21/timers.cpp b/Marlin/src/HAL/SAMD21/timers.cpp index d52c94f885f95..9b124e0f9b4de 100644 --- a/Marlin/src/HAL/SAMD21/timers.cpp +++ b/Marlin/src/HAL/SAMD21/timers.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #ifdef __SAMD21__ @@ -74,7 +74,7 @@ static bool tcIsSyncing(Tc * tc) { static void tcReset( Tc * tc) { - + tc->COUNT32.CTRLA.reg = TC_CTRLA_SWRST; while (tcIsSyncing(tc)) ; @@ -99,16 +99,16 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { /* https://github.com/arduino-libraries/RTCZero */ Rtc * const rtc = timer_config[timer_num].pRtc; - PM->APBAMASK.reg |= PM_APBAMASK_RTC; - + PM->APBAMASK.reg |= PM_APBAMASK_RTC; + GCLK->CLKCTRL.reg = (uint32_t)((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK4 | (RTC_GCLK_ID << GCLK_CLKCTRL_ID_Pos))); while (GCLK->STATUS.bit.SYNCBUSY); - + GCLK->GENCTRL.reg = (GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_OSCULP32K | GCLK_GENCTRL_ID(4) | GCLK_GENCTRL_DIVSEL ); while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); - - GCLK->GENDIV.reg = GCLK_GENDIV_ID(4); + + GCLK->GENDIV.reg = GCLK_GENDIV_ID(4); GCLK->GENDIV.bit.DIV=4; while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY); @@ -141,7 +141,7 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { // And start timer rtc->MODE0.CTRL.bit.ENABLE = true; SYNC(rtc->MODE0.STATUS.bit.SYNCBUSY); - + } else if (timer_config[timer_num].type==TimerType::tcc){ /* Tcc * const tc = timer_config[timer_num].pTcc; @@ -152,12 +152,12 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { tc->CTRLA.reg = TCC_CTRLA_SWRST; SYNC (tc->SYNCBUSY.reg & TCC_SYNCBUSY_SWRST) {} - + SYNC (tc->CTRLA.bit.SWRST); - + tc->CTRLA.reg &= ~(TCC_CTRLA_ENABLE); // disable TC module - + tc->CTRLA.reg |= TCC_WAVE_WAVEGEN_MFRQ; tc->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV2; tc->CC[0].reg = (HAL_TIMER_RATE) / frequency; @@ -186,13 +186,13 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { //the clock normally counts at the GCLK_TC frequency, but we can set it to divide that frequency to slow it down //you can use different prescaler divisons here like TC_CTRLA_PRESCALER_DIV1 to get a different range tc->COUNT32.CTRLA.reg |= TC_CTRLA_PRESCALER_DIV1 | TC_CTRLA_ENABLE; //it will divide GCLK_TC frequency by 1024 - //set the compare-capture register. + //set the compare-capture register. //The counter will count up to this value (it's a 16bit counter so we use uint16_t) //this is how we fine-tune the frequency, make it count to a lower or higher value //system clock should be 1MHz (8MHz/8) at Reset by default tc->COUNT32.CC[0].reg = (uint16_t) (HAL_TIMER_RATE / frequency); while (tcIsSyncing(tc)); - + // Enable the TC interrupt request @@ -202,7 +202,6 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) { NVIC_SetPriority(irq, timer_config[timer_num].priority); NVIC_EnableIRQ(irq); - } void HAL_timer_enable_interrupt(const uint8_t timer_num) { diff --git a/Marlin/src/HAL/SAMD21/timers.h b/Marlin/src/HAL/SAMD21/timers.h index c5296ce59fef3..4faee7c643ff7 100644 --- a/Marlin/src/HAL/SAMD21/timers.h +++ b/Marlin/src/HAL/SAMD21/timers.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -19,12 +19,12 @@ * along with this program. If not, see . * */ +#pragma once /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ -#pragma once #include @@ -127,9 +127,9 @@ FORCE_INLINE static hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) { FORCE_INLINE static hal_timer_t HAL_timer_get_count(const uint8_t timer_num) { // Should never be called with timer MF_TIMER_RTC Tc * const tc = timer_config[timer_num].pTc; - tc->COUNT32.READREQ.reg = TC_READREQ_RREQ; + tc->COUNT32.READREQ.reg = TC_READREQ_RREQ; // Request a read synchronization -SYNC (tc->COUNT32.STATUS.bit.SYNCBUSY); +SYNC (tc->COUNT32.STATUS.bit.SYNCBUSY); //SYNC(tc->COUNT32.STATUS.bit.SYNCBUSY ); return tc->COUNT32.COUNT.reg; } @@ -141,12 +141,12 @@ bool HAL_timer_interrupt_enabled(const uint8_t timer_num); FORCE_INLINE static void HAL_timer_isr_prologue(const uint8_t timer_num) { - + if (timer_num == MF_TIMER_RTC) { Rtc * const rtc = timer_config[timer_num].pRtc; // Clear interrupt flag rtc->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0| RTC_MODE0_INTFLAG_OVF; - + } else if (timer_config[timer_num].type == TimerType::tcc){ Tcc * const tc = timer_config[timer_num].pTcc; @@ -158,7 +158,7 @@ FORCE_INLINE static void HAL_timer_isr_prologue(const uint8_t timer_num) { // Clear interrupt flag tc->COUNT32.INTFLAG.bit.MC0 = 1; } - + } #define HAL_timer_isr_epilogue(timer_num) diff --git a/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.cpp b/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.cpp index 0e299ea9f196f..41da7c10fc24e 100644 --- a/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.cpp +++ b/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ // adapted from I2C/master/master.c example // https://www-users.cs.york.ac.uk/~pcc/MCP/HAPR-Course-web/CMSIS/examples/html/master_8c_source.html diff --git a/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.h b/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.h index c9c93df059919..d6a3c4fe0b916 100644 --- a/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.h +++ b/Marlin/src/HAL/SAMD21/u8g/LCD_I2C_routines.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,7 +21,7 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/u8g/LCD_defines.h b/Marlin/src/HAL/SAMD21/u8g/LCD_defines.h index dfcd9dd741d4c..4f81624369ccc 100644 --- a/Marlin/src/HAL/SAMD21/u8g/LCD_defines.h +++ b/Marlin/src/HAL/SAMD21/u8g/LCD_defines.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.c b/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.c index 2ecde8f785eee..eaf9e27a3fc1c 100644 --- a/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.c +++ b/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.c @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ /** @@ -36,7 +36,7 @@ */ #ifdef __SAMD21__ -#include +#include #endif // __SAMD21__ diff --git a/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.h b/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.h index a08d8a365e908..e69f2bae323cb 100644 --- a/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.h +++ b/Marlin/src/HAL/SAMD21/u8g/LCD_pin_routines.h @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ #pragma once diff --git a/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp b/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp index 4bf49a7df3ce3..3e41bb6635f0b 100644 --- a/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp +++ b/Marlin/src/HAL/SAMD21/u8g/u8g_com_HAL_samd21_shared_hw_spi.cpp @@ -1,6 +1,6 @@ /** * Marlin 3D Printer Firmware - * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm @@ -21,8 +21,8 @@ */ /** - * SAMD21 HAL developed by Bart Meijer (brupje) - * Based on the work of Giuliano Zaro (AKA GMagician) + * SAMD21 HAL developed by Bart Meijer (brupje) + * Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician) */ /** @@ -103,12 +103,12 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1) u8g_SetPILevel(u8g, U8G_PI_A0, arg_val); u8g->pin_list[U8G_PI_A0_STATE] = arg_val; - + break; case U8G_COM_MSG_CHIP_SELECT: // arg_val == 1 means chip selected, but ST7920 is active high, so needs inverting u8g_SetPILevel(u8g, U8G_PI_CS, arg_val ? HIGH : LOW); - + break; case U8G_COM_MSG_RESET: @@ -116,7 +116,7 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val break; case U8G_COM_MSG_WRITE_BYTE: - + SPI.beginTransaction(lcdSPIConfig); if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) @@ -133,11 +133,11 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val SPI.transfer(arg_val & 0x0f0); SPI.transfer(arg_val << 4); SPI.endTransaction(); - + break; case U8G_COM_MSG_WRITE_SEQ: - + SPI.beginTransaction(lcdSPIConfig); if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) @@ -154,14 +154,14 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val while( arg_val > 0 ) { - + SPI.transfer((*ptr) & 0x0f0); SPI.transfer((*ptr) << 4); ptr++; arg_val--; } - + SPI.endTransaction(); break; @@ -170,4 +170,4 @@ uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val } -#endif \ No newline at end of file +#endif diff --git a/Marlin/src/lcd/dogm/marlinui_DOGM.h b/Marlin/src/lcd/dogm/marlinui_DOGM.h index 5bec62c73e411..f70621574c33a 100644 --- a/Marlin/src/lcd/dogm/marlinui_DOGM.h +++ b/Marlin/src/lcd/dogm/marlinui_DOGM.h @@ -36,7 +36,7 @@ // RepRapWorld Graphical LCD - + #if DISABLED(SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN) && (LCD_PINS_ENABLE == SD_MOSI_PIN) #define U8G_CLASS U8GLIB_ST7920_128X64_4X_HAL #define U8G_PARAM LCD_PINS_RS diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index e997e23241c4b..26261367b4748 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -778,7 +778,7 @@ // #elif MB(MINITRONICS20) - #include "samd/pins_MINITRONICS20.h" // SAMD21 env:SAMD21_minitronics20 + #include "samd/pins_MINITRONICS20.h" // SAMD21 env:SAMD21_minitronics20 // diff --git a/Marlin/src/pins/samd/pins_MINITRONICS20.h b/Marlin/src/pins/samd/pins_MINITRONICS20.h index 6617b895f15bb..21fec28b79b9d 100644 --- a/Marlin/src/pins/samd/pins_MINITRONICS20.h +++ b/Marlin/src/pins/samd/pins_MINITRONICS20.h @@ -30,13 +30,16 @@ #endif #ifndef BOARD_INFO_NAME - #define BOARD_INFO_NAME "Minitronics V2.0" + #define BOARD_INFO_NAME "Minitronics V2.0" #endif /** * NOTE: We need the Serial port on the -1 to make it work!!. Remember to change it on configuration.h #define SERIAL_PORT -1 */ +/** + * EEPROM EMULATION: Works with some bugs already, but the board needs an I2C EEPROM memory soldered on. + */ //#define FLASH_EEPROM_EMULATION //#define I2C_EEPROM // EEPROM on I2C-0 #define MARLIN_EEPROM_SIZE 500 // 4000 bytes @@ -184,7 +187,7 @@ // LCD Display output pins // - + #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) #define LCD_PINS_RS 18 // CS chip select /SS chip slave select diff --git a/ini/samd21.ini b/ini/samd21.ini index eb99fa7470b2e..969ce3b9571ee 100644 --- a/ini/samd21.ini +++ b/ini/samd21.ini @@ -15,7 +15,6 @@ [env:SAMD21_minitronics20] platform = atmelsam board = minitronics20 -debug_tool = atmel-ice build_flags = ${common.build_flags} -std=gnu++17 -DUSBCON -DUSBD_USE_CDC -D__SAMD21__ -DARDUINO_SAMD_MINITRONICS20 -Wno-deprecated-declarations -DU8G_HAL_LINKS -DDEBUG -IMarlin/src/HAL/SAMD21/u8g @@ -24,4 +23,4 @@ build_src_filter = ${common.default_src_filter} + lib_deps = ${common.lib_deps} extra_scripts = ${common.extra_scripts} pre:buildroot/share/PlatformIO/scripts/SAMD21_minitronics20.py - +debug_tool = atmel-ice