diff --git a/Firmware/MarlinSerial.cpp b/Firmware/MarlinSerial.cpp index c07ec458a..8baab6dd3 100644 --- a/Firmware/MarlinSerial.cpp +++ b/Firmware/MarlinSerial.cpp @@ -64,7 +64,7 @@ FORCE_INLINE void store_char(unsigned char c) store_char(c); } } - +#ifndef SNMM SIGNAL(USART2_RX_vect) { if (selectedSerialPort == 1) { @@ -82,6 +82,7 @@ FORCE_INLINE void store_char(unsigned char c) } } #endif +#endif // Constructors //////////////////////////////////////////////////////////////// @@ -122,7 +123,7 @@ void MarlinSerial::begin(long baud) sbi(M_UCSRxB, M_TXENx); sbi(M_UCSRxB, M_RXCIEx); - +#ifndef SNMM // set up the second serial port if (useU2X) { UCSR2A = 1 << U2X2; @@ -139,6 +140,7 @@ void MarlinSerial::begin(long baud) sbi(UCSR2B, RXEN2); sbi(UCSR2B, TXEN2); sbi(UCSR2B, RXCIE2); +#endif } void MarlinSerial::end() @@ -146,10 +148,12 @@ void MarlinSerial::end() cbi(M_UCSRxB, M_RXENx); cbi(M_UCSRxB, M_TXENx); cbi(M_UCSRxB, M_RXCIEx); - + +#ifndef SNMM cbi(UCSR2B, RXEN2); cbi(UCSR2B, TXEN2); - cbi(UCSR2B, RXCIE2); + cbi(UCSR2B, RXCIE2); +#endif } diff --git a/Firmware/MarlinSerial.h b/Firmware/MarlinSerial.h index 15ed3dc81..f7d333a19 100644 --- a/Firmware/MarlinSerial.h +++ b/Firmware/MarlinSerial.h @@ -104,6 +104,12 @@ class MarlinSerial //: public Stream void write(uint8_t c) { +#ifdef SNMM // don't do the second serial port when multimaterialing + while (!((M_UCSRxA) & (1 << M_UDREx))) + ; + + M_UDRx = c; +#else if (selectedSerialPort == 0) { while (!((M_UCSRxA) & (1 << M_UDREx))) ; @@ -116,11 +122,35 @@ class MarlinSerial //: public Stream UDR2 = c; } +#endif } void checkRx(void) { + +#ifdef SNMM + if((M_UCSRxA & (1<