123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616 |
- /**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2022 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 <https://www.gnu.org/licenses/>.
- *
- */
- #pragma once
-
- /**
- * BRICOLEMON LITE Board. Based on atsamd51 (AGCM4), bootloader and credits by ADAFRUIT.
- * This board its a 3.3V LOGIC Board, following the ADAFRUIT example, all of the board is open source.
- * Schematic: Refer to the Bricolemon
- * 3DSTEP: https://github.com/bricogeek/bricolemon/blob/master/Documentacion/Bricolemon%20Lite/LC_BG_002_PCB_V1I4.step
- * PinDemux: https://github.com/bricogeek/bricolemon/blob/master/Documentacion/Bricolemon/PinDEMUX.xlsx
- *
- * NOTE: We need the Serial port on the -1 to make it work!!. Remember to change it on configuration.h #define SERIAL_PORT -1
- */
-
- #if NOT_TARGET(ARDUINO_GRAND_CENTRAL_M4)
- #error "Oops! Select 'Adafruit Grand Central M4' in 'Tools > Board.'"
- #endif
-
- #ifndef BOARD_INFO_NAME
- #define BOARD_INFO_NAME "BRICOLEMON LITE V1.0" // , Lemoncrest & BricoGeek collaboration.
- #endif
-
- /**
- * 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 0x10000 // 64K (CAT24C512)
-
- // This is another option to emulate an EEPROM, but it's more efficient to not lose the data in the first place.
- //#define SDCARD_EEPROM_EMULATION
-
- //
- // BLTOUCH PIN: This pin is the signal pin for the BLTOUCH sensor.
- //
- #define SERVO0_PIN 33 // BLTouch PWM
-
- //
- // Limit Switches
- //
- #define X_STOP_PIN 10
- #define Y_STOP_PIN 11
- #define Z_STOP_PIN 12
-
- //
- // Z Probe (when not Z_MIN_PIN)
- //
- #ifndef Z_MIN_PROBE_PIN
- #define Z_MIN_PROBE_PIN 12
- #endif
-
- //
- // Steppers
- //
- #define X_STEP_PIN 3
- #define X_DIR_PIN 22
- #define X_ENABLE_PIN 26
-
- #define Y_STEP_PIN 4
- #define Y_DIR_PIN 23
- #define Y_ENABLE_PIN 27
-
- #define Z_STEP_PIN 5
- #define Z_DIR_PIN 24
- #define Z_ENABLE_PIN 28
-
- #define E0_STEP_PIN 2
- #define E0_DIR_PIN 25
- #define E0_ENABLE_PIN 29
-
- // Filament runout. You may choose to use this pin for some other purpose. It's a normal GPIO that can be configured as I/O.
- // For example, a switch to detect any kind of behavior, Power supply pin .... etc.
- #define FIL_RUNOUT_PIN 32
-
- //
- // Temperature Sensors
- //
- #define TEMP_0_PIN 1
- #define TEMP_BED_PIN 3
-
- //
- // Heaters / Fans
- //
- #define HEATER_0_PIN 6
- #define HEATER_BED_PIN 7
- #define FAN_PIN 8
- #define FAN1_PIN 9
-
- //
- // LCD / Controller
- //
-
- /**
- * Bricolemon Expansion connectors
- *
- * ------ ------
- * VCC | 1 2 | GND KILL | 1 2 | GND
- * LCD7 | 3 4 | LCDD6 RESET | 3 4 | SD_DETECT
- * LCD5 | 5 6 LCDD4 MOSI | 5 6 BTN_EN1
- * LCDRS | 7 8 | LCDDE SS | 7 8 | BTN_EN2
- * BTN_ENCODER | 9 10 | BEEPER SCLK | 9 10 | MISO
- * ------ ------
- * EXP1 EXP2
- *
- *- This extra connector is for a serial display like the MKS TFT.
- * MKS TFT
- * ------
- * RX0 | . . | NC
- * TX0 | . . NC
- * GND | . . GND
- * 5B | . . | 5V
- * ------
- *
- *- Special mapping of EXP1 to EXP3 to work with Ender displays.
- *
- * Enable CR10_STOCKDISPLAY in Configuration.h and connect EXP1 to the display EXP3 with this mapping.
- * ------
- * VCC | 1 2 | GND
- * LCDDE | 3 4 | LCDRS
- * LCDD4 | 5 6 BTN_EN2
- * RESET | 7 8 | BTN_EN1
- * BTN_ENCODER | 9 10 | BEEPER
- * ------
- *
- *- Digital pinout reference of the Bricolemon for advanced users/configurations.
- *
- * ------ ------
- * VCC | 1 2 | GND D49 | 1 2 | GND
- * D39 | 3 4 | D38 RST | 3 4 | D44
- * D37 | 5 6 D36 D51 | 5 6 D42
- * D34 | 7 8 | D35 D53 | 7 8 | D43
- * D40 | 9 10 | D41 D52 | 9 10 | D50
- * ------ ------
- * EXP1 EXP2
- *
- *- Pin table overview
- * LCD--- SPI---
- * LCD4 36 MISO 50
- * LCD5 37 SS 53
- * LCD6 38 SCKL 52
- * LCD7 39 MOSI 51
- * LCDRS 34 BEEPER
- * LCDDE 35 BEEP 41
- * ENCODER--- SD-CARD---
- * BTN_EN1 42
- * BTN_EN2 43 SD_DETECT 44
- * BTN_ENCODER 40 KILL_PIN 49
- */
-
- #define EXP1_03_PIN 39
- #define EXP1_04_PIN 38
- #define EXP1_05_PIN 37
- #define EXP1_06_PIN 36
- #define EXP1_07_PIN 34
- #define EXP1_08_PIN 35
- #define EXP1_09_PIN 40
- #define EXP1_10_PIN 41
-
- #define EXP2_01_PIN 49
- #define EXP2_04_PIN 44
- #define EXP2_05_PIN 51
- #define EXP2_06_PIN 42
- #define EXP2_07_PIN 53
- #define EXP2_08_PIN 43
- #define EXP2_09_PIN 52
- #define EXP2_10_PIN 50
-
- #if ENABLED(CR10_STOCKDISPLAY)
- #define EXP3_03_PIN EXP1_03_PIN
- #define EXP3_04_PIN EXP1_04_PIN
- #define EXP3_05_PIN EXP1_05_PIN
- #define EXP3_06_PIN EXP1_06_PIN
- #define EXP3_07_PIN EXP1_07_PIN
- #define EXP3_08_PIN EXP1_08_PIN
- #define EXP3_09_PIN EXP1_09_PIN
- #define EXP3_10_PIN EXP1_10_PIN
- #endif
-
- /************************************/
- /***** Configurations Section ******/
- /************************************/
-
- /**
- * This section starts with the pins_RAMPS_144.h as example, after if you need any new
- * display, you could use normal duponts and connect it with with the scheme showed before.
- * Tested:
- * - Ender 3 Old display (Character LCD)
- * - Ender 3 New Serial DWING Display
- * - Reprap Display
- * - Ender 5 New Serial Display
- * - Any Reprap character display like
- */
-
- #if HAS_WIRED_LCD
-
- //
- // LCD Display output pins
- //
- #if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI
-
- #if LCD_SERIAL_PORT != 1
- #error "LCD_SERIAL_PORT should be 1 for this display."
- #endif
-
- // DWIN Encoder
- #define BTN_ENC EXP1_09_PIN
- #define BTN_EN1 EXP1_08_PIN
- #define BTN_EN2 EXP1_07_PIN
-
- #ifndef BEEPER_PIN
- #define BEEPER_PIN EXP1_10_PIN
- #undef SPEAKER
- #endif
-
- #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
-
- // TO TEST
- //#define LCD_PINS_RS EXP2_01_PIN // CS chip select /SS chip slave select
- //#define LCD_PINS_ENABLE EXP2_05_PIN // SID (MOSI)
- //#define LCD_PINS_D4 EXP2_09_PIN // SCK (CLK) clock
-
- #elif BOTH(IS_NEWPANEL, PANEL_ONE)
-
- // TO TEST
- //#define LCD_PINS_RS EXP1_09_PIN
- //#define LCD_PINS_ENABLE EXP2_06_PIN
- //#define LCD_PINS_D4 57 // Mega/Due:65 - AGCM4:57
- //#define LCD_PINS_D5 58 // Mega/Due:66 - AGCM4:58
- //#define LCD_PINS_D6 EXP2_04_PIN
- //#define LCD_PINS_D7 56 // Mega/Due:64 - AGCM4:56
-
- #else
-
- #if ENABLED(CR10_STOCKDISPLAY)
-
- // TO TEST
- #define LCD_PINS_RS EXP3_04_PIN
- #define LCD_PINS_ENABLE EXP3_03_PIN
- #define LCD_PINS_D4 EXP3_05_PIN
-
- #if !IS_NEWPANEL
- // TO TEST
- //#define BEEPER_PIN EXP3_05_PIN
- #endif
-
- #elif ENABLED(ZONESTAR_LCD)
-
- // TO TEST
- //#define LCD_PINS_RS 56 // Mega/Due:64 - AGCM4:56
- //#define LCD_PINS_ENABLE EXP2_04_PIN
- //#define LCD_PINS_D4 55 // Mega/Due:63 - AGCM4:55
- //#define LCD_PINS_D5 EXP1_09_PIN
- //#define LCD_PINS_D6 EXP2_06_PIN
- //#define LCD_PINS_D7 57 // Mega/Due:65 - AGCM4:57
-
- #else
-
- #if EITHER(MKS_12864OLED, MKS_12864OLED_SSD1306)
- // TO TEST
- //#define LCD_PINS_DC 25 // Set as output on init
- //#define LCD_PINS_RS 27 // Pull low for 1s to init
- // DOGM SPI LCD Support
- //#define DOGLCD_CS 16
- //#define DOGLCD_MOSI 17
- //#define DOGLCD_SCK 23
- //#define DOGLCD_A0 LCD_PINS_DC
-
-
- #else
- // Definitions for any standard Display
- #define LCD_PINS_RS EXP1_07_PIN
- #define LCD_PINS_ENABLE EXP1_08_PIN
- #define LCD_PINS_D4 EXP1_06_PIN
- #define LCD_PINS_D5 EXP1_05_PIN
- #define LCD_PINS_D6 EXP1_04_PIN
- #endif
-
- #define LCD_PINS_D7 EXP1_03_PIN
-
- #if !IS_NEWPANEL
- #define BEEPER_PIN EXP1_10_PIN
- #endif
-
- #endif
-
- #if !IS_NEWPANEL
- // Buttons attached to a shift register
- // Not wired yet
- //#define SHIFT_CLK_PIN EXP1_04_PIN
- //#define SHIFT_LD_PIN EXP2_06_PIN
- //#define SHIFT_OUT_PIN EXP1_09_PIN
- //#define SHIFT_EN_PIN 17
- #endif
-
- #endif
-
- //
- // LCD Display input pins
- //
- #if IS_NEWPANEL
-
- #if IS_RRD_SC
-
- #define BEEPER_PIN EXP1_10_PIN
-
- #if ENABLED(CR10_STOCKDISPLAY)
- // TO TEST
- #define BTN_EN1 EXP3_08_PIN
- #define BTN_EN2 EXP3_06_PIN
-
- #else
- // Definitions for any standard Display
- #define BTN_EN1 EXP2_06_PIN
- #define BTN_EN2 EXP2_08_PIN
- #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
- #define BTN_ENC_EN LCD_PINS_D7 // Detect the presence of the encoder
- #endif
- #endif
-
- #define BTN_ENC EXP1_09_PIN
- #ifndef SD_DETECT_PIN
- #define SD_DETECT_PIN EXP2_04_PIN
- #endif
- #define KILL_PIN EXP2_01_PIN
-
- #if ENABLED(BQ_LCD_SMART_CONTROLLER)
- //#define LCD_BACKLIGHT_PIN EXP1_03_PIN // TO TEST
- #endif
-
- #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
-
- // TO TEST
- //#define BTN_EN1 56 // Mega/Due:64 - AGCM4:56
- //#define BTN_EN2 72 // Mega/Due:59 - AGCM4:72
- //#define BTN_ENC 55
- //#define SD_DETECT_PIN EXP2_06_PIN
-
- #elif ENABLED(LCD_I2C_PANELOLU2)
-
- // TO TEST
- //#define BTN_EN1 47
- //#define BTN_EN2 EXP2_08_PIN
- //#define BTN_ENC 32
- //#define LCD_SDSS SDSS
- //#define KILL_PIN EXP1_10_PIN
-
- #elif ENABLED(LCD_I2C_VIKI)
-
- // TO TEST
- //#define BTN_EN1 EXP1_09_PIN // https://files.panucatt.com/datasheets/viki_wiring_diagram.pdf explains 40/42.
- //#define BTN_EN2 EXP2_06_PIN
- //#define BTN_ENC -1
-
- //#define LCD_SDSS SDSS
- //#define SD_DETECT_PIN EXP2_01_PIN
-
- #elif EITHER(VIKI2, miniVIKI)
-
- // TO TEST
- //#define DOGLCD_CS 45
- //#define DOGLCD_A0 EXP2_04_PIN
- //#define LCD_SCREEN_ROT_180
-
- //#define BEEPER_PIN 33
- //#define STAT_LED_RED_PIN 32
- //#define STAT_LED_BLUE_PIN EXP1_08_PIN
-
- //#define BTN_EN1 22
- //#define BTN_EN2 7
- //#define BTN_ENC EXP1_03_PIN
-
- //#define SD_DETECT_PIN -1 // Pin 49 for display SD interface, 72 for easy adapter board
- //#define KILL_PIN 31
-
- #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
-
- // TO TEST
- //#define DOGLCD_CS 29
- //#define DOGLCD_A0 27
-
- //#define BEEPER_PIN 23
- //#define LCD_BACKLIGHT_PIN 33
-
- //#define BTN_EN1 EXP1_08_PIN
- //#define BTN_EN2 EXP1_05_PIN
- //#define BTN_ENC 31
-
- //#define LCD_SDSS SDSS
- //#define SD_DETECT_PIN EXP2_01_PIN
- //#define KILL_PIN EXP1_10_PIN
-
- #elif EITHER(MKS_MINI_12864, FYSETC_MINI_12864)
-
- // TO TEST
- //#define BEEPER_PIN EXP1_05_PIN
- //#define BTN_ENC EXP1_08_PIN
- //#define SD_DETECT_PIN EXP2_01_PIN
-
- //#ifndef KILL_PIN
- // #define KILL_PIN EXP1_10_PIN
- //#endif
-
- #if ENABLED(MKS_MINI_12864)
-
- // TO TEST
- //#define DOGLCD_A0 27
- //#define DOGLCD_CS 25
-
- // GLCD features
- // Uncomment screen orientation
- //#define LCD_SCREEN_ROT_90
- //#define LCD_SCREEN_ROT_180
- //#define LCD_SCREEN_ROT_270
-
- // not connected to a pin
- //#define LCD_BACKLIGHT_PIN 57 // backlight LED on A11/D? (Mega/Due:65 - AGCM4:57)
-
- //#define BTN_EN1 31
- //#define BTN_EN2 33
-
- #elif ENABLED(FYSETC_MINI_12864)
-
- // From https://wiki.fysetc.com/Mini12864_Panel/
-
- // TO TEST
- //#define DOGLCD_A0 16
- //#define DOGLCD_CS 17
-
- //#define BTN_EN1 33
- //#define BTN_EN2 31
-
- //#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 23 // 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
- // TO TEST
- //#define RGB_LED_R_PIN 25
- #endif
- #ifndef RGB_LED_G_PIN
- // TO TEST
- //#define RGB_LED_G_PIN 27
- #endif
- #ifndef RGB_LED_B_PIN
- // TO TEST
- //#define RGB_LED_B_PIN 29
- #endif
- #elif ENABLED(FYSETC_MINI_12864_2_1)
- // TO TEST
- //#define NEOPIXEL_PIN 25
- #endif
-
- #endif
-
- #elif ENABLED(MINIPANEL)
-
- // TO TEST
- //#define BEEPER_PIN EXP2_06_PIN
- // not connected to a pin
- //#define LCD_BACKLIGHT_PIN 57 // backlight LED on A11/D? (Mega/Due:65 - AGCM4:57)
-
- //#define DOGLCD_A0 EXP2_04_PIN
- //#define DOGLCD_CS 58 // Mega/Due:66 - AGCM4:58
-
- // GLCD features
- // Uncomment screen orientation
- //#define LCD_SCREEN_ROT_90
- //#define LCD_SCREEN_ROT_180
- //#define LCD_SCREEN_ROT_270
-
- //#define BTN_EN1 EXP1_09_PIN
- //#define BTN_EN2 55 // Mega/Due:63 - AGCM4:55
- //#define BTN_ENC 72 // Mega/Due:59 - AGCM4:72
-
- //#define SD_DETECT_PIN EXP2_01_PIN
- //#define KILL_PIN 56 // Mega/Due:64 - AGCM4:56
-
- #elif ENABLED(ZONESTAR_LCD)
-
- // TO TEST
- //#define ADC_KEYPAD_PIN 12
-
- #elif ENABLED(AZSMZ_12864)
-
- // TO TEST
-
- #else
-
- // Beeper on AUX-4
- //#define BEEPER_PIN 33
-
- // Buttons are directly attached to AUX-2
- #if IS_RRW_KEYPAD
- // TO TEST
- //#define SHIFT_OUT_PIN EXP1_09_PIN
- //#define SHIFT_CLK_PIN EXP2_04_PIN
- //#define SHIFT_LD_PIN EXP2_06_PIN
- //#define BTN_EN1 56 // Mega/Due:64 - AGCM4:56
- //#define BTN_EN2 72 // Mega/Due:59 - AGCM4:72
- //#define BTN_ENC 55 // Mega/Due:63 - AGCM4:55
- #elif ENABLED(PANEL_ONE)
- // TO TEST
- //#define BTN_EN1 72 // AUX2 PIN 3 (Mega/Due:59 - AGCM4:72)
- //#define BTN_EN2 55 // AUX2 PIN 4 (Mega/Due:63 - AGCM4:55)
- //#define BTN_ENC EXP2_01_PIN // AUX3 PIN 7
- #else
- // TO TEST
- //#define BTN_EN1 EXP1_05_PIN
- //#define BTN_EN2 EXP1_08_PIN
- //#define BTN_ENC 31
- #endif
-
- #if ENABLED(G3D_PANEL)
- // TO TEST
- //#define SD_DETECT_PIN EXP2_01_PIN
- //#define KILL_PIN EXP1_10_PIN
- #endif
-
- #endif
- #endif // IS_NEWPANEL
-
- #endif // HAS_WIRED_LCD
-
- //
- // SD Support
- //
-
- /**
- * Bricolemon has an SD slot, but to change it to your LCD or Custom, set the option to one of the following:
- *
- * LCD - Use the SD drive in the external LCD controller.
- * ONBOARD - Use the SD drive on the control board.
- * CUSTOM_CABLE - Use a custom cable to access the SD (as defined in a pins file).
- *
- * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
- */
-
- #ifndef SDCARD_CONNECTION
- #define SDCARD_CONNECTION ONBOARD
- #endif
-
- #if SD_CONNECTION_IS(ONBOARD)
- #define SDSS 83
- #undef SD_DETECT_PIN
- #define SD_DETECT_PIN 95
- #else
- #define SDSS EXP2_07_PIN
- #endif
-
- #if HAS_TMC_UART
- /**
- * Address for the UART Configuration of the TMC2209. Override in Configuration files.
- * To test TMC2209 Steppers enable TMC_DEBUG in Configuration_adv.h and test the M122 command with voltage on the steppers.
- */
- #ifndef X_SLAVE_ADDRESS
- #define X_SLAVE_ADDRESS 0b00
- #endif
- #ifndef Y_SLAVE_ADDRESS
- #define Y_SLAVE_ADDRESS 0b01
- #endif
- #ifndef Z_SLAVE_ADDRESS
- #define Z_SLAVE_ADDRESS 0b10
- #endif
- #ifndef E0_SLAVE_ADDRESS
- #define E0_SLAVE_ADDRESS 0b11
- #endif
-
- /**
- * TMC2208/TMC2209 stepper drivers
- * It seems to work perfectly fine on Software Serial, if an advanced user wants to test, you could use the SAMD51 Serial1 and Serial 2. Be careful with the Sercom configurations.
- */
- //#define X_HARDWARE_SERIAL Serial1
- //#define Y_HARDWARE_SERIAL Serial1
- //#define Z_HARDWARE_SERIAL Serial1
- //#define E0_HARDWARE_SERIAL Serial1
-
- // This is the stable default value after testing, but, higher UART rates could be configured, remeber to test the Steppers with the M122 command to check if everything works.
- #define TMC_BAUD_RATE 250000
-
- //
- // Software serial
- //
- #define X_SERIAL_TX_PIN 0
- #define X_SERIAL_RX_PIN 1
-
- #define Y_SERIAL_TX_PIN X_SERIAL_TX_PIN
- #define Y_SERIAL_RX_PIN X_SERIAL_RX_PIN
-
- #define Z_SERIAL_TX_PIN X_SERIAL_TX_PIN
- #define Z_SERIAL_RX_PIN X_SERIAL_RX_PIN
-
- #define E0_SERIAL_TX_PIN X_SERIAL_TX_PIN
- #define E0_SERIAL_RX_PIN X_SERIAL_RX_PIN
-
- #endif
|