Browse Source

Clean up special serial port cases

Assume SERIAL_PORT 0 if not defined. Collapse un-numbered register
special case. Clarify comments.
Robert F-C 12 years ago
parent
commit
99692dc99e
1 changed files with 7 additions and 15 deletions
  1. 7
    15
      Marlin/MarlinSerial.h

+ 7
- 15
Marlin/MarlinSerial.h View File

24
 #include "Marlin.h"
24
 #include "Marlin.h"
25
 
25
 
26
 #if !defined(SERIAL_PORT) 
26
 #if !defined(SERIAL_PORT) 
27
-#error SERIAL_PORT not set 
27
+#define SERIAL_PORT 0
28
 #endif
28
 #endif
29
 
29
 
30
 // The presence of the UBRRH register is used to detect a UART.
30
 // The presence of the UBRRH register is used to detect a UART.
35
 // These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor
35
 // These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor
36
 // requires two levels of indirection to expand macro values properly)
36
 // requires two levels of indirection to expand macro values properly)
37
 #define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix)
37
 #define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix)
38
-#if SERIAL_PORT == 0 && !defined(UBRR0H)
38
+#if SERIAL_PORT == 0 && (!defined(UBRR0H) || !defined(UDR0)) // use un-numbered registers if necessary
39
 #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix
39
 #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix
40
-#else
40
+#else
41
 #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix
41
 #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix
42
-#endif
42
+#endif
43
 
43
 
44
 // Registers used by MarlinSerial class (these are expanded 
44
 // Registers used by MarlinSerial class (these are expanded 
45
 // depending on selected serial port
45
 // depending on selected serial port
46
-#define M_UCSRxA SERIAL_REGNAME(UCSR,SERIAL_PORT,A) // defines M_UCSRxA to be UCSRxA where x is the serial port number
46
+#define M_UCSRxA SERIAL_REGNAME(UCSR,SERIAL_PORT,A) // defines M_UCSRxA to be UCSRnA where n is the serial port number
47
 #define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B) 
47
 #define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B) 
48
 #define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,)    
48
 #define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,)    
49
 #define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,)    
49
 #define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,)    
50
 #define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,)    
50
 #define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,)    
51
 #define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,)    
51
 #define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,)    
52
-#if SERIAL_PORT == 0 && !defined(UDR0)
53
-  #if defined(UDR)
54
-    #define M_UDRx UDR  //  atmega8, atmega32
55
-  #else
56
-    #error UDR not defined
57
-  #endif
58
-#else
59
-  #define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,) 
60
-#endif  
52
+#define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,)  
61
 #define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H)
53
 #define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H)
62
 #define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L)
54
 #define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L)
63
 #define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,)
55
 #define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,)
189
 extern MarlinSerial MSerial;
181
 extern MarlinSerial MSerial;
190
 #endif // ! teensylu
182
 #endif // ! teensylu
191
 
183
 
192
-#endif
184
+#endif

Loading…
Cancel
Save