Browse Source

setup second serial port only in case it is selected

PavelSindler 6 years ago
parent
commit
c2478ae7d3
4 changed files with 20 additions and 28 deletions
  1. 1 1
      Firmware/Marlin.h
  2. 17 21
      Firmware/MarlinSerial.cpp
  3. 1 1
      Firmware/MarlinSerial.h
  4. 1 5
      Firmware/Marlin_main.cpp

+ 1 - 1
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)

+ 17 - 21
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<<FE2)) {
@@ -110,8 +108,6 @@ void MarlinSerial::begin(long baud)
 #endif
 // set up the first (original serial port)
   if (useU2X) {
-	  SERIAL_ECHOPGM("Debug:");
-	  MYSERIAL.println(3);
     M_UCSRxA = 1 << M_U2Xx;
     baud_setting = (F_CPU / 4 / baud - 1) / 2;
   } else {
@@ -128,29 +124,29 @@ void MarlinSerial::begin(long baud)
   sbi(M_UCSRxB, M_RXCIEx);
   
 #ifndef SNMM
-// set up 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;
-    }
 
-    // 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);
+  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;
+	  }
+
+	  // 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);

+ 1 - 1
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
 {

+ 1 - 5
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;