From 8dd9a4308e2cea7cf53fbc83afbfe0a30a7a2ae2 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Sun, 15 Oct 2017 09:40:35 +0200 Subject: [PATCH 1/2] initial --- Firmware/MarlinSerial.cpp | 6 ++++++ Firmware/Marlin_main.cpp | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/Firmware/MarlinSerial.cpp b/Firmware/MarlinSerial.cpp index a879b0648..449cf077b 100644 --- a/Firmware/MarlinSerial.cpp +++ b/Firmware/MarlinSerial.cpp @@ -67,6 +67,8 @@ FORCE_INLINE void store_char(unsigned char c) #ifndef SNMM SIGNAL(USART2_RX_vect) { + SERIAL_ECHOPGM("Debug:"); + MYSERIAL.println(1); if (selectedSerialPort == 1) { // Test for a framing error. if (UCSR2A & (1< Date: Mon, 16 Oct 2017 17:03:38 +0200 Subject: [PATCH 2/2] setup second serial port only in case it is selected --- Firmware/Marlin.h | 2 +- Firmware/MarlinSerial.cpp | 36 ++++++++++++++++-------------------- Firmware/MarlinSerial.h | 2 +- Firmware/Marlin_main.cpp | 6 +----- 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 76274b292..ff3ed9aa0 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -96,7 +96,7 @@ void serial_echopair_P(const char *s_P, float v); void serial_echopair_P(const char *s_P, double v); void serial_echopair_P(const char *s_P, unsigned long v); -extern int selectedSerialPort; +extern uint8_t selectedSerialPort; //Things to write to serial from Program memory. Saves 400 to 2k of RAM. FORCE_INLINE void serialprintPGM(const char *str) diff --git a/Firmware/MarlinSerial.cpp b/Firmware/MarlinSerial.cpp index 449cf077b..ad973a692 100644 --- a/Firmware/MarlinSerial.cpp +++ b/Firmware/MarlinSerial.cpp @@ -67,8 +67,6 @@ FORCE_INLINE void store_char(unsigned char c) #ifndef SNMM SIGNAL(USART2_RX_vect) { - SERIAL_ECHOPGM("Debug:"); - MYSERIAL.println(1); if (selectedSerialPort == 1) { // Test for a framing error. if (UCSR2A & (1<> 8; - UBRR2L = baud_setting; + if (selectedSerialPort == 1) { //set up also the second serial port + if (useU2X) { + UCSR2A = 1 << U2X2; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + UCSR2A = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } - sbi(UCSR2B, RXEN2); - sbi(UCSR2B, TXEN2); - sbi(UCSR2B, RXCIE2); + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + UBRR2H = baud_setting >> 8; + UBRR2L = baud_setting; + + sbi(UCSR2B, RXEN2); + sbi(UCSR2B, TXEN2); + sbi(UCSR2B, RXCIE2); + } #endif } void MarlinSerial::end() { - SERIAL_ECHOPGM("Debug:"); - MYSERIAL.println(4); cbi(M_UCSRxB, M_RXENx); cbi(M_UCSRxB, M_TXENx); cbi(M_UCSRxB, M_RXCIEx); diff --git a/Firmware/MarlinSerial.h b/Firmware/MarlinSerial.h index e77e030d8..e869de7bc 100644 --- a/Firmware/MarlinSerial.h +++ b/Firmware/MarlinSerial.h @@ -73,7 +73,7 @@ // is the index of the location from which to read. #define RX_BUFFER_SIZE 128 -extern int selectedSerialPort; +extern uint8_t selectedSerialPort; struct ring_buffer { diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 501e75607..6dec58728 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -290,7 +290,7 @@ unsigned int custom_message_type; unsigned int custom_message_state; char snmm_filaments_used = 0; -int selectedSerialPort; +uint8_t selectedSerialPort; float distance_from_min[3]; @@ -1030,12 +1030,8 @@ void setup() if ((farm_mode == 0xFF && farm_no == 0) || ((uint16_t)farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode if ((uint16_t)farm_no == 0xFFFF) farm_no = 0; - SERIAL_ECHOPGM("Farm mode:"); - MYSERIAL.println(farm_mode); if (farm_mode) { - SERIAL_ECHOPGM("Debug:"); - MYSERIAL.println(0); prusa_statistics(8); no_response = true; //we need confirmation by recieving PRUSA thx important_status = 8;