Переглянути джерело

Styling adjustments (PR#2668 & PR#2670)

Keep "astyled" reformatting
Scott Lahteine 8 роки тому
джерело
коміт
0c7f7ebcfb
100 змінених файлів з 10256 додано та 10658 видалено
  1. 12
    12
      Marlin/Conditionals.h
  2. 185
    210
      Marlin/M100_Free_Mem_Chk.cpp
  3. 13
    13
      Marlin/Marlin.h
  4. 20
    18
      Marlin/MarlinSerial.cpp
  5. 15
    16
      Marlin/MarlinSerial.h
  6. 342
    370
      Marlin/Marlin_main.cpp
  7. 299
    299
      Marlin/SanityCheck.h
  8. 159
    173
      Marlin/Sd2Card.cpp
  9. 23
    23
      Marlin/Sd2Card.h
  10. 55
    55
      Marlin/Sd2PinMap.h
  11. 136
    132
      Marlin/SdBaseFile.cpp
  12. 27
    27
      Marlin/SdBaseFile.h
  13. 92
    92
      Marlin/SdFatConfig.h
  14. 19
    19
      Marlin/SdFatStructs.h
  15. 5
    5
      Marlin/SdFatUtil.cpp
  16. 2
    2
      Marlin/SdFatUtil.h
  17. 4
    6
      Marlin/SdFile.cpp
  18. 2
    2
      Marlin/SdFile.h
  19. 7
    7
      Marlin/SdInfo.h
  20. 53
    47
      Marlin/SdVolume.cpp
  21. 11
    7
      Marlin/SdVolume.h
  22. 1
    1
      Marlin/blinkm.cpp
  23. 1
    1
      Marlin/buzzer.h
  24. 27
    28
      Marlin/cardreader.cpp
  25. 1
    1
      Marlin/cardreader.h
  26. 11
    11
      Marlin/configuration_store.cpp
  27. 5
    6
      Marlin/digipot_mcp4451.cpp
  28. 206
    207
      Marlin/dogm_bitmaps.h
  29. 145
    144
      Marlin/dogm_font_data_6x9_marlin.h
  30. 159
    158
      Marlin/dogm_font_data_HD44780_C.h
  31. 157
    156
      Marlin/dogm_font_data_HD44780_J.h
  32. 191
    190
      Marlin/dogm_font_data_HD44780_W.h
  33. 163
    163
      Marlin/dogm_font_data_ISO10646_1.h
  34. 161
    161
      Marlin/dogm_font_data_ISO10646_5_Cyrillic.h
  35. 258
    257
      Marlin/dogm_font_data_ISO10646_CN.h
  36. 161
    160
      Marlin/dogm_font_data_ISO10646_Kana.h
  37. 10
    9
      Marlin/dogm_font_data_Marlin_symbols.h
  38. 36
    36
      Marlin/dogm_lcd_implementation.h
  39. 3918
    3918
      Marlin/fastio.h
  40. 2
    2
      Marlin/fonts/README.fonts
  41. 3
    3
      Marlin/language.h
  42. 5
    5
      Marlin/language_an.h
  43. 5
    5
      Marlin/language_bg.h
  44. 5
    5
      Marlin/language_ca.h
  45. 127
    127
      Marlin/language_cn.h
  46. 5
    5
      Marlin/language_da.h
  47. 5
    5
      Marlin/language_de.h
  48. 158
    161
      Marlin/language_en.h
  49. 5
    5
      Marlin/language_es.h
  50. 5
    5
      Marlin/language_eu.h
  51. 5
    5
      Marlin/language_fi.h
  52. 5
    5
      Marlin/language_fr.h
  53. 5
    5
      Marlin/language_it.h
  54. 5
    5
      Marlin/language_kana.h
  55. 5
    5
      Marlin/language_kana_utf8.h
  56. 5
    5
      Marlin/language_nl.h
  57. 5
    5
      Marlin/language_pl.h
  58. 6
    6
      Marlin/language_pt-br.h
  59. 5
    5
      Marlin/language_pt.h
  60. 5
    5
      Marlin/language_ru.h
  61. 1
    1
      Marlin/mesh_bed_leveling.cpp
  62. 13
    13
      Marlin/mesh_bed_leveling.h
  63. 9
    9
      Marlin/pins.h
  64. 1
    1
      Marlin/pins_5DPRINT.h
  65. 17
    17
      Marlin/pins_AZTEEG_X3_PRO.h
  66. 1
    1
      Marlin/pins_BRAINWAVE_PRO.h
  67. 2
    2
      Marlin/pins_GEN3_PLUS.h
  68. 1
    1
      Marlin/pins_GEN7_CUSTOM.h
  69. 20
    20
      Marlin/pins_MEGACONTROLLER.h
  70. 6
    6
      Marlin/pins_MEGATRONICS_3.h
  71. 1
    1
      Marlin/pins_MINIRAMBO.h
  72. 19
    19
      Marlin/pins_PRINTRBOARD.h
  73. 17
    17
      Marlin/pins_RAMBO.h
  74. 20
    20
      Marlin/pins_RAMPS_13.h
  75. 4
    4
      Marlin/pins_SANGUINOLOLU_11.h
  76. 1
    1
      Marlin/pins_SAV_MKI.h
  77. 19
    19
      Marlin/pins_TEENSY2.h
  78. 2
    2
      Marlin/pins_TEENSYLU.h
  79. 41
    43
      Marlin/planner.cpp
  80. 14
    14
      Marlin/planner.h
  81. 366
    702
      Marlin/qr_solve.cpp
  82. 16
    16
      Marlin/qr_solve.h
  83. 15
    15
      Marlin/servo.cpp
  84. 2
    2
      Marlin/servo.h
  85. 128
    128
      Marlin/speed_lookuptable.h
  86. 179
    180
      Marlin/stepper.cpp
  87. 8
    8
      Marlin/stepper.h
  88. 97
    99
      Marlin/stepper_indirection.cpp
  89. 318
    318
      Marlin/stepper_indirection.h
  90. 94
    91
      Marlin/temperature.cpp
  91. 16
    16
      Marlin/temperature.h
  92. 969
    969
      Marlin/thermistortables.h
  93. 119
    115
      Marlin/ultralcd.cpp
  94. 37
    37
      Marlin/ultralcd.h
  95. 90
    90
      Marlin/ultralcd_implementation_hitachi_HD44780.h
  96. 58
    71
      Marlin/ultralcd_st7920_u8glib_rrd.h
  97. 3
    3
      Marlin/utf_mapper.h
  98. 43
    43
      Marlin/vector_3.cpp
  99. 21
    23
      Marlin/vector_3.h
  100. 0
    0
      Marlin/watchdog.cpp

+ 12
- 12
Marlin/Conditionals.h Переглянути файл

74
   #endif
74
   #endif
75
 
75
 
76
   #if ENABLED(MINIPANEL)
76
   #if ENABLED(MINIPANEL)
77
-   #define DOGLCD
78
-   #define ULTIPANEL
79
-   #define NEWPANEL
80
-   #define DEFAULT_LCD_CONTRAST 17
77
+    #define DOGLCD
78
+    #define ULTIPANEL
79
+    #define NEWPANEL
80
+    #define DEFAULT_LCD_CONTRAST 17
81
   #endif
81
   #endif
82
 
82
 
83
   /**
83
   /**
135
   // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
135
   // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
136
 
136
 
137
   #if ENABLED(SAV_3DLCD)
137
   #if ENABLED(SAV_3DLCD)
138
-     #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
139
-     #define ULTIPANEL
140
-     #define NEWPANEL
138
+    #define SR_LCD_2W_NL    // Non latching 2 wire shiftregister
139
+    #define ULTIPANEL
140
+    #define NEWPANEL
141
   #endif
141
   #endif
142
 
142
 
143
   #if ENABLED(ULTIPANEL)
143
   #if ENABLED(ULTIPANEL)
205
     #endif
205
     #endif
206
     #if ENABLED(U8GLIB_SSD1306)
206
     #if ENABLED(U8GLIB_SSD1306)
207
       #undef HAS_LCD_CONTRAST
207
       #undef HAS_LCD_CONTRAST
208
-    #endif  
208
+    #endif
209
   #endif
209
   #endif
210
 
210
 
211
 #else // CONFIGURATION_LCD
211
 #else // CONFIGURATION_LCD
285
 
285
 
286
   #define SERVO_LEVELING (defined(AUTO_BED_LEVELING_FEATURE) && defined(Z_ENDSTOP_SERVO_NR))
286
   #define SERVO_LEVELING (defined(AUTO_BED_LEVELING_FEATURE) && defined(Z_ENDSTOP_SERVO_NR))
287
 
287
 
288
-   /**
289
-    * Sled Options
290
-    */ 
288
+  /**
289
+   * Sled Options
290
+   */
291
   #if ENABLED(Z_PROBE_SLED)
291
   #if ENABLED(Z_PROBE_SLED)
292
     #define Z_SAFE_HOMING
292
     #define Z_SAFE_HOMING
293
   #endif
293
   #endif
294
-  
294
+
295
   /**
295
   /**
296
    * MAX_STEP_FREQUENCY differs for TOSHIBA
296
    * MAX_STEP_FREQUENCY differs for TOSHIBA
297
    */
297
    */

+ 185
- 210
Marlin/M100_Free_Mem_Chk.cpp Переглянути файл

1
-#define M100_FREE_MEMORY_DUMPER			// Comment out to remove Dump sub-command
2
-#define M100_FREE_MEMORY_CORRUPTOR		// Comment out to remove Corrupt sub-command
1
+#define M100_FREE_MEMORY_DUMPER     // Comment out to remove Dump sub-command
2
+#define M100_FREE_MEMORY_CORRUPTOR    // Comment out to remove Corrupt sub-command
3
 
3
 
4
 
4
 
5
 // M100 Free Memory Watcher
5
 // M100 Free Memory Watcher
7
 // This code watches the free memory block between the bottom of the heap and the top of the stack.
7
 // This code watches the free memory block between the bottom of the heap and the top of the stack.
8
 // This memory block is initialized and watched via the M100 command.
8
 // This memory block is initialized and watched via the M100 command.
9
 //
9
 //
10
-// M100 I	Initializes the free memory block and prints vitals statistics about the area
11
-// M100 F	Identifies how much of the free memory block remains free and unused.  It also
12
-// 		detects and reports any corruption within the free memory block that may have
13
-// 		happened due to errant firmware.
14
-// M100 D	Does a hex display of the free memory block along with a flag for any errant
15
-// 		data that does not match the expected value.
16
-// M100 C x	Corrupts x locations within the free memory block.   This is useful to check the
17
-// 		correctness of the M100 F and M100 D commands.
10
+// M100 I Initializes the free memory block and prints vitals statistics about the area
11
+// M100 F Identifies how much of the free memory block remains free and unused.  It also
12
+//    detects and reports any corruption within the free memory block that may have
13
+//    happened due to errant firmware.
14
+// M100 D Does a hex display of the free memory block along with a flag for any errant
15
+//    data that does not match the expected value.
16
+// M100 C x Corrupts x locations within the free memory block.   This is useful to check the
17
+//    correctness of the M100 F and M100 D commands.
18
 //
18
 //
19
 // Initial version by Roxy-3DPrintBoard
19
 // Initial version by Roxy-3DPrintBoard
20
 //
20
 //
24
 #include "Marlin.h"
24
 #include "Marlin.h"
25
 
25
 
26
 #if ENABLED(M100_FREE_MEMORY_WATCHER)
26
 #if ENABLED(M100_FREE_MEMORY_WATCHER)
27
-extern void *__brkval;
27
+extern void* __brkval;
28
 extern size_t  __heap_start, __heap_end, __flp;
28
 extern size_t  __heap_start, __heap_end, __flp;
29
 
29
 
30
 
30
 
34
 
34
 
35
 float code_value();
35
 float code_value();
36
 long code_value_long();
36
 long code_value_long();
37
-bool code_seen(char );
38
-void serial_echopair_P(const char *, float );
39
-void serial_echopair_P(const char *, double );
40
-void serial_echopair_P(const char *, unsigned long );
41
-void serial_echopair_P(const char *, int );
42
-void serial_echopair_P(const char *, long );
37
+bool code_seen(char);
38
+void serial_echopair_P(const char*, float);
39
+void serial_echopair_P(const char*, double);
40
+void serial_echopair_P(const char*, unsigned long);
41
+void serial_echopair_P(const char*, int);
42
+void serial_echopair_P(const char*, long);
43
 
43
 
44
 
44
 
45
 
45
 
48
 // Utility functions used by M100 to get its work done.
48
 // Utility functions used by M100 to get its work done.
49
 //
49
 //
50
 
50
 
51
-unsigned char *top_of_stack();
52
-void prt_hex_nibble( unsigned int );
53
-void prt_hex_byte(unsigned int );
54
-void prt_hex_word(unsigned int );
55
-int how_many_E5s_are_here( unsigned char *);
51
+unsigned char* top_of_stack();
52
+void prt_hex_nibble(unsigned int);
53
+void prt_hex_byte(unsigned int);
54
+void prt_hex_word(unsigned int);
55
+int how_many_E5s_are_here(unsigned char*);
56
 
56
 
57
 
57
 
58
 
58
 
59
 
59
 
60
-void gcode_M100()
61
-{
62
-static int m100_not_initialized=1;
63
-unsigned char *sp, *ptr;
64
-int i, j, n;
65
-
66
-//
67
-// M100 D dumps the free memory block from __brkval to the stack pointer.
68
-// malloc() eats memory from the start of the block and the stack grows
69
-// up from the bottom of the block.    Solid 0xE5's indicate nothing has
70
-// used that memory yet.   There should not be anything but 0xE5's within
71
-// the block of 0xE5's.  If there is, that would indicate memory corruption
72
-// probably caused by bad pointers.  Any unexpected values will be flagged in
73
-// the right hand column to help spotting them.
74
-//
75
-
60
+void gcode_M100() {
61
+  static int m100_not_initialized = 1;
62
+  unsigned char* sp, *ptr;
63
+  int i, j, n;
64
+  //
65
+  // M100 D dumps the free memory block from __brkval to the stack pointer.
66
+  // malloc() eats memory from the start of the block and the stack grows
67
+  // up from the bottom of the block.    Solid 0xE5's indicate nothing has
68
+  // used that memory yet.   There should not be anything but 0xE5's within
69
+  // the block of 0xE5's.  If there is, that would indicate memory corruption
70
+  // probably caused by bad pointers.  Any unexpected values will be flagged in
71
+  // the right hand column to help spotting them.
72
+  //
76
 #if ENABLED(M100_FREE_MEMORY_DUMPER) // Disable to remove Dump sub-command
73
 #if ENABLED(M100_FREE_MEMORY_DUMPER) // Disable to remove Dump sub-command
77
-	if ( code_seen('D') ) {
78
- 		ptr = (unsigned char *) __brkval;
79
-
80
-//
81
-// We want to start and end the dump on a nice 16 byte boundry even though
82
-// the values we are using are not 16 byte aligned.
83
-//
84
-  		SERIAL_ECHOPGM("\n__brkval : ");
85
-		prt_hex_word( (unsigned int) ptr );
86
-  		ptr = (unsigned char *) ((unsigned long) ptr & 0xfff0);
87
-
88
-		sp = top_of_stack();
89
-  		SERIAL_ECHOPGM("\nStack Pointer : ");
90
-		prt_hex_word( (unsigned int) sp );
91
-  		SERIAL_ECHOPGM("\n");
92
-
93
-		sp = (unsigned char *) ((unsigned long) sp | 0x000f);
94
-		n = sp - ptr;
95
-//
96
-// This is the main loop of the Dump command.
97
-//
98
-		while ( ptr < sp ) {
99
-			prt_hex_word( (unsigned int) ptr);	// Print the address
100
-  			SERIAL_ECHOPGM(":");
101
-			for(i=0; i<16; i++) {			// and 16 data bytes
102
-				prt_hex_byte( *(ptr+i));
103
-  				SERIAL_ECHOPGM(" ");
104
-				delay(2);
105
-			}
106
-
107
-  			SERIAL_ECHO("|");   			// now show where non 0xE5's are
108
-			for(i=0; i<16; i++) {
109
-				delay(2);
110
-				if ( *(ptr+i)==0xe5)
111
-  					SERIAL_ECHOPGM(" ");
112
-				else
113
-  					SERIAL_ECHOPGM("?");
114
-			}
115
-  			SERIAL_ECHO("\n");
116
-
117
-			ptr += 16;
118
-			delay(2);
119
-		}
120
-  		SERIAL_ECHOLNPGM("Done.\n");
121
-		return;
122
-	}
74
+  if (code_seen('D')) {
75
+    ptr = (unsigned char*) __brkval;
76
+    //
77
+    // We want to start and end the dump on a nice 16 byte boundry even though
78
+    // the values we are using are not 16 byte aligned.
79
+    //
80
+    SERIAL_ECHOPGM("\n__brkval : ");
81
+    prt_hex_word((unsigned int) ptr);
82
+    ptr = (unsigned char*)((unsigned long) ptr & 0xfff0);
83
+    sp = top_of_stack();
84
+    SERIAL_ECHOPGM("\nStack Pointer : ");
85
+    prt_hex_word((unsigned int) sp);
86
+    SERIAL_ECHOPGM("\n");
87
+    sp = (unsigned char*)((unsigned long) sp | 0x000f);
88
+    n = sp - ptr;
89
+    //
90
+    // This is the main loop of the Dump command.
91
+    //
92
+    while (ptr < sp) {
93
+      prt_hex_word((unsigned int) ptr); // Print the address
94
+      SERIAL_ECHOPGM(":");
95
+      for (i = 0; i < 16; i++) {      // and 16 data bytes
96
+        prt_hex_byte(*(ptr + i));
97
+        SERIAL_ECHOPGM(" ");
98
+        delay(2);
99
+      }
100
+      SERIAL_ECHO("|");         // now show where non 0xE5's are
101
+      for (i = 0; i < 16; i++) {
102
+        delay(2);
103
+        if (*(ptr + i) == 0xe5)
104
+          SERIAL_ECHOPGM(" ");
105
+        else
106
+          SERIAL_ECHOPGM("?");
107
+      }
108
+      SERIAL_ECHO("\n");
109
+      ptr += 16;
110
+      delay(2);
111
+    }
112
+    SERIAL_ECHOLNPGM("Done.\n");
113
+    return;
114
+  }
123
 #endif
115
 #endif
124
-
125
-//
126
-// M100 F   requests the code to return the number of free bytes in the memory pool along with
127
-// other vital statistics that define the memory pool.
128
-//
129
-	if ( code_seen('F') ) {
130
-	int max_addr = (int) __brkval;
131
-	int max_cnt = 0;
132
-	int block_cnt = 0;
133
-  		ptr = (unsigned char *) __brkval;
134
-		sp = top_of_stack();
135
-		n = sp - ptr;
136
-
137
-// Scan through the range looking for the biggest block of 0xE5's we can find
138
-
139
-		for(i=0; i<n; i++) {
140
-			if ( *(ptr+i) == (unsigned char) 0xe5) {
141
-				j = how_many_E5s_are_here( (unsigned char *) ptr+i );
142
-				if ( j>8) {
143
- 					SERIAL_ECHOPAIR("Found ", j );
144
- 					SERIAL_ECHOPGM(" bytes free at 0x");
145
-					prt_hex_word( (int) ptr+i );
146
- 					SERIAL_ECHOPGM("\n");
147
-					i += j;
148
-				        block_cnt++;
149
-				}
150
-				if ( j>max_cnt) {			// We don't do anything with this information yet
151
-					max_cnt  = j;			// but we do know where the biggest free memory block is.
152
-					max_addr = (int) ptr+i;
153
-				}
154
-			}
155
-		}
156
-		if (block_cnt>1)
157
-  			SERIAL_ECHOLNPGM("\nMemory Corruption detected in free memory area.\n");
158
-
159
-  		SERIAL_ECHO("\nDone.\n");
160
-		return;
161
-	}
162
-//
163
-// M100 C x  Corrupts x locations in the free memory pool and reports the locations of the corruption.
164
-// This is useful to check the correctness of the M100 D and the M100 F commands.
165
-//
116
+  //
117
+  // M100 F   requests the code to return the number of free bytes in the memory pool along with
118
+  // other vital statistics that define the memory pool.
119
+  //
120
+  if (code_seen('F')) {
121
+    int max_addr = (int) __brkval;
122
+    int max_cnt = 0;
123
+    int block_cnt = 0;
124
+    ptr = (unsigned char*) __brkval;
125
+    sp = top_of_stack();
126
+    n = sp - ptr;
127
+    // Scan through the range looking for the biggest block of 0xE5's we can find
128
+    for (i = 0; i < n; i++) {
129
+      if (*(ptr + i) == (unsigned char) 0xe5) {
130
+        j = how_many_E5s_are_here((unsigned char*) ptr + i);
131
+        if (j > 8) {
132
+          SERIAL_ECHOPAIR("Found ", j);
133
+          SERIAL_ECHOPGM(" bytes free at 0x");
134
+          prt_hex_word((int) ptr + i);
135
+          SERIAL_ECHOPGM("\n");
136
+          i += j;
137
+          block_cnt++;
138
+        }
139
+        if (j > max_cnt) {      // We don't do anything with this information yet
140
+          max_cnt  = j;     // but we do know where the biggest free memory block is.
141
+          max_addr = (int) ptr + i;
142
+        }
143
+      }
144
+    }
145
+    if (block_cnt > 1)
146
+      SERIAL_ECHOLNPGM("\nMemory Corruption detected in free memory area.\n");
147
+    SERIAL_ECHO("\nDone.\n");
148
+    return;
149
+  }
150
+  //
151
+  // M100 C x  Corrupts x locations in the free memory pool and reports the locations of the corruption.
152
+  // This is useful to check the correctness of the M100 D and the M100 F commands.
153
+  //
166
 #if ENABLED(M100_FREE_MEMORY_CORRUPTOR)
154
 #if ENABLED(M100_FREE_MEMORY_CORRUPTOR)
167
-	if ( code_seen('C') ) {
168
-		int x;			// x gets the # of locations to corrupt within the memory pool
169
-		x = code_value();
170
-  		SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
171
-  		ptr = (unsigned char *) __brkval;
172
-  		SERIAL_ECHOPAIR("\n__brkval : ",(long) ptr );
173
-  		ptr += 8;
174
-
175
-		sp = top_of_stack();
176
-  		SERIAL_ECHOPAIR("\nStack Pointer : ",(long) sp );
177
-  		SERIAL_ECHOLNPGM("\n");
178
-
179
-		n = sp - ptr - 64;  	// -64 just to keep us from finding interrupt activity that
180
-	       				// has altered the stack.
181
-		j = n / (x+1);
182
-		for(i=1; i<=x; i++) {
183
-			*(ptr+(i*j)) = i;
184
-  			SERIAL_ECHO("\nCorrupting address: 0x");
185
-		      	prt_hex_word( (unsigned int)  (ptr+(i*j)) );
186
-		}
187
-  		SERIAL_ECHOLNPGM("\n");
188
-		return;
189
-	}
155
+  if (code_seen('C')) {
156
+    int x;      // x gets the # of locations to corrupt within the memory pool
157
+    x = code_value();
158
+    SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
159
+    ptr = (unsigned char*) __brkval;
160
+    SERIAL_ECHOPAIR("\n__brkval : ", (long) ptr);
161
+    ptr += 8;
162
+    sp = top_of_stack();
163
+    SERIAL_ECHOPAIR("\nStack Pointer : ", (long) sp);
164
+    SERIAL_ECHOLNPGM("\n");
165
+    n = sp - ptr - 64;    // -64 just to keep us from finding interrupt activity that
166
+    // has altered the stack.
167
+    j = n / (x + 1);
168
+    for (i = 1; i <= x; i++) {
169
+      *(ptr + (i * j)) = i;
170
+      SERIAL_ECHO("\nCorrupting address: 0x");
171
+      prt_hex_word((unsigned int)(ptr + (i * j)));
172
+    }
173
+    SERIAL_ECHOLNPGM("\n");
174
+    return;
175
+  }
190
 #endif
176
 #endif
191
-
192
-//
193
-// M100 I    Initializes the free memory pool so it can be watched and prints vital
194
-// statistics that define the free memory pool.
195
-//
196
-	if (m100_not_initialized || code_seen('I') ) {				// If no sub-command is specified, the first time
197
-  		SERIAL_ECHOLNPGM("Initializing free memory block.\n");   	// this happens, it will Initialize.
198
-  		ptr = (unsigned char *) __brkval;				// Repeated M100 with no sub-command will not destroy the
199
-  		SERIAL_ECHOPAIR("\n__brkval : ",(long) ptr );			// state of the initialized free memory pool.
200
-  		ptr += 8;
201
-
202
-		sp = top_of_stack();
203
-  		SERIAL_ECHOPAIR("\nStack Pointer : ",(long) sp );
204
-  		SERIAL_ECHOLNPGM("\n");
205
-
206
-		n = sp - ptr - 64;  	// -64 just to keep us from finding interrupt activity that
207
-	       				// has altered the stack.
208
-
209
-  		SERIAL_ECHO( n );
210
-  		SERIAL_ECHOLNPGM(" bytes of memory initialized.\n");
211
-
212
-		for(i=0; i<n; i++)
213
-			*(ptr+i) = (unsigned char) 0xe5;
214
-
215
-		for(i=0; i<n; i++) {
216
-			if ( *(ptr+i) != (unsigned char) 0xe5 ) {
217
-  				SERIAL_ECHOPAIR("? address : ", (unsigned long) ptr+i );
218
-  				SERIAL_ECHOPAIR("=", *(ptr+i) );
219
-  				SERIAL_ECHOLNPGM("\n");
220
-			}
221
-		}
222
-		m100_not_initialized = 0;
223
-  		SERIAL_ECHOLNPGM("Done.\n");
224
-		return;
225
-	}
226
-	return;
177
+  //
178
+  // M100 I    Initializes the free memory pool so it can be watched and prints vital
179
+  // statistics that define the free memory pool.
180
+  //
181
+  if (m100_not_initialized || code_seen('I')) {       // If no sub-command is specified, the first time
182
+    SERIAL_ECHOLNPGM("Initializing free memory block.\n");    // this happens, it will Initialize.
183
+    ptr = (unsigned char*) __brkval;        // Repeated M100 with no sub-command will not destroy the
184
+    SERIAL_ECHOPAIR("\n__brkval : ", (long) ptr);     // state of the initialized free memory pool.
185
+    ptr += 8;
186
+    sp = top_of_stack();
187
+    SERIAL_ECHOPAIR("\nStack Pointer : ", (long) sp);
188
+    SERIAL_ECHOLNPGM("\n");
189
+    n = sp - ptr - 64;    // -64 just to keep us from finding interrupt activity that
190
+    // has altered the stack.
191
+    SERIAL_ECHO(n);
192
+    SERIAL_ECHOLNPGM(" bytes of memory initialized.\n");
193
+    for (i = 0; i < n; i++)
194
+      *(ptr + i) = (unsigned char) 0xe5;
195
+    for (i = 0; i < n; i++) {
196
+      if (*(ptr + i) != (unsigned char) 0xe5) {
197
+        SERIAL_ECHOPAIR("? address : ", (unsigned long) ptr + i);
198
+        SERIAL_ECHOPAIR("=", *(ptr + i));
199
+        SERIAL_ECHOLNPGM("\n");
200
+      }
201
+    }
202
+    m100_not_initialized = 0;
203
+    SERIAL_ECHOLNPGM("Done.\n");
204
+    return;
205
+  }
206
+  return;
227
 }
207
 }
228
 
208
 
229
 // top_of_stack() returns the location of a variable on its stack frame.  The value returned is above
209
 // top_of_stack() returns the location of a variable on its stack frame.  The value returned is above
230
 // the stack once the function returns to the caller.
210
 // the stack once the function returns to the caller.
231
 
211
 
232
-unsigned char *top_of_stack() {
212
+unsigned char* top_of_stack() {
233
   unsigned char x;
213
   unsigned char x;
234
   return &x + 1; // x is pulled on return;
214
   return &x + 1; // x is pulled on return;
235
 }
215
 }
238
 // 3 support routines to print hex numbers.  We can print a nibble, byte and word
218
 // 3 support routines to print hex numbers.  We can print a nibble, byte and word
239
 //
219
 //
240
 
220
 
241
-void prt_hex_nibble( unsigned int n )
242
-{
243
-	if ( n <= 9 )
244
-		SERIAL_ECHO(n);
245
-	else
246
-		SERIAL_ECHO( (char) ('A'+n-10) );
247
-	delay(2);
221
+void prt_hex_nibble(unsigned int n) {
222
+  if (n <= 9)
223
+    SERIAL_ECHO(n);
224
+  else
225
+    SERIAL_ECHO((char)('A' + n - 10));
226
+  delay(2);
248
 }
227
 }
249
 
228
 
250
-void prt_hex_byte(unsigned int b)
251
-{
252
-	prt_hex_nibble( ( b & 0xf0 ) >> 4 );
253
-	prt_hex_nibble(  b & 0x0f );
229
+void prt_hex_byte(unsigned int b) {
230
+  prt_hex_nibble((b & 0xf0) >> 4);
231
+  prt_hex_nibble(b & 0x0f);
254
 }
232
 }
255
 
233
 
256
-void prt_hex_word(unsigned int w)
257
-{
258
-	prt_hex_byte( ( w & 0xff00 ) >> 8 );
259
-	prt_hex_byte(  w & 0x0ff );
234
+void prt_hex_word(unsigned int w) {
235
+  prt_hex_byte((w & 0xff00) >> 8);
236
+  prt_hex_byte(w & 0x0ff);
260
 }
237
 }
261
 
238
 
262
 // how_many_E5s_are_here() is a utility function to easily find out how many 0xE5's are
239
 // how_many_E5s_are_here() is a utility function to easily find out how many 0xE5's are
263
 // at the specified location.  Having this logic as a function simplifies the search code.
240
 // at the specified location.  Having this logic as a function simplifies the search code.
264
 //
241
 //
265
-int how_many_E5s_are_here( unsigned char *p)
266
-{
267
-int n;
268
-
269
-	for(n=0; n<32000; n++) {
270
-		if ( *(p+n) != (unsigned char) 0xe5)
271
-			return n-1;
272
-	}
273
-	return -1;
242
+int how_many_E5s_are_here(unsigned char* p) {
243
+  int n;
244
+  for (n = 0; n < 32000; n++) {
245
+    if (*(p + n) != (unsigned char) 0xe5)
246
+      return n - 1;
247
+  }
248
+  return -1;
274
 }
249
 }
275
 
250
 
276
 #endif
251
 #endif

+ 13
- 13
Marlin/Marlin.h Переглянути файл

92
 
92
 
93
 #define SERIAL_ECHOPAIR(name,value) do{ serial_echopair_P(PSTR(name),(value)); }while(0)
93
 #define SERIAL_ECHOPAIR(name,value) do{ serial_echopair_P(PSTR(name),(value)); }while(0)
94
 
94
 
95
-void serial_echopair_P(const char *s_P, int v);
96
-void serial_echopair_P(const char *s_P, long v);
97
-void serial_echopair_P(const char *s_P, float v);
98
-void serial_echopair_P(const char *s_P, double v);
99
-void serial_echopair_P(const char *s_P, unsigned long v);
95
+void serial_echopair_P(const char* s_P, int v);
96
+void serial_echopair_P(const char* s_P, long v);
97
+void serial_echopair_P(const char* s_P, float v);
98
+void serial_echopair_P(const char* s_P, double v);
99
+void serial_echopair_P(const char* s_P, unsigned long v);
100
 
100
 
101
 
101
 
102
 // Things to write to serial from Program memory. Saves 400 to 2k of RAM.
102
 // Things to write to serial from Program memory. Saves 400 to 2k of RAM.
103
-FORCE_INLINE void serialprintPGM(const char *str) {
103
+FORCE_INLINE void serialprintPGM(const char* str) {
104
   char ch;
104
   char ch;
105
   while ((ch = pgm_read_byte(str))) {
105
   while ((ch = pgm_read_byte(str))) {
106
     MYSERIAL.write(ch);
106
     MYSERIAL.write(ch);
112
 
112
 
113
 void idle(); // the standard idle routine calls manage_inactivity(false)
113
 void idle(); // the standard idle routine calls manage_inactivity(false)
114
 
114
 
115
-void manage_inactivity(bool ignore_stepper_queue=false);
115
+void manage_inactivity(bool ignore_stepper_queue = false);
116
 
116
 
117
 #if ENABLED(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE
117
 #if ENABLED(DUAL_X_CARRIAGE) && HAS_X_ENABLE && HAS_X2_ENABLE
118
   #define  enable_x() do { X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); } while (0)
118
   #define  enable_x() do { X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); } while (0)
194
  * A_AXIS and B_AXIS are used by COREXY printers
194
  * A_AXIS and B_AXIS are used by COREXY printers
195
  * X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
195
  * X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots.
196
  */
196
  */
197
-enum AxisEnum {X_AXIS=0, A_AXIS=0, Y_AXIS=1, B_AXIS=1, Z_AXIS=2, C_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5, Z_HEAD=5};
197
+enum AxisEnum {X_AXIS = 0, A_AXIS = 0, Y_AXIS = 1, B_AXIS = 1, Z_AXIS = 2, C_AXIS = 2, E_AXIS = 3, X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 5};
198
 
198
 
199
-enum EndstopEnum {X_MIN=0, Y_MIN=1, Z_MIN=2, Z_MIN_PROBE=3, X_MAX=4, Y_MAX=5, Z_MAX=6, Z2_MIN=7, Z2_MAX=8};
199
+enum EndstopEnum {X_MIN = 0, Y_MIN = 1, Z_MIN = 2, Z_MIN_PROBE = 3, X_MAX = 4, Y_MAX = 5, Z_MAX = 6, Z2_MIN = 7, Z2_MAX = 8};
200
 
200
 
201
 void enable_all_steppers();
201
 void enable_all_steppers();
202
 void disable_all_steppers();
202
 void disable_all_steppers();
206
 
206
 
207
 void reset_bed_level();
207
 void reset_bed_level();
208
 void prepare_move();
208
 void prepare_move();
209
-void kill(const char *);
209
+void kill(const char*);
210
 void Stop();
210
 void Stop();
211
 
211
 
212
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
212
 #if ENABLED(FILAMENT_RUNOUT_SENSOR)
230
 inline bool IsRunning() { return  Running; }
230
 inline bool IsRunning() { return  Running; }
231
 inline bool IsStopped() { return !Running; }
231
 inline bool IsStopped() { return !Running; }
232
 
232
 
233
-bool enqueuecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
234
-void enqueuecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
233
+bool enqueuecommand(const char* cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
234
+void enqueuecommands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
235
 
235
 
236
 void prepare_arc_move(char isclockwise);
236
 void prepare_arc_move(char isclockwise);
237
 void clamp_to_software_endstops(float target[3]);
237
 void clamp_to_software_endstops(float target[3]);
347
 extern uint8_t active_extruder;
347
 extern uint8_t active_extruder;
348
 
348
 
349
 #if ENABLED(DIGIPOT_I2C)
349
 #if ENABLED(DIGIPOT_I2C)
350
-  extern void digipot_i2c_set_current( int channel, float current );
350
+  extern void digipot_i2c_set_current(int channel, float current);
351
   extern void digipot_i2c_init();
351
   extern void digipot_i2c_init();
352
 #endif
352
 #endif
353
 
353
 

+ 20
- 18
Marlin/MarlinSerial.cpp Переглянути файл

15
   You should have received a copy of the GNU Lesser General Public
15
   You should have received a copy of the GNU Lesser General Public
16
   License along with this library; if not, write to the Free Software
16
   License along with this library; if not, write to the Free Software
17
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
-  
18
+
19
   Modified 23 November 2006 by David A. Mellis
19
   Modified 23 November 2006 by David A. Mellis
20
   Modified 28 September 2010 by Mark Sproul
20
   Modified 28 September 2010 by Mark Sproul
21
 */
21
 */
24
 #include "MarlinSerial.h"
24
 #include "MarlinSerial.h"
25
 
25
 
26
 #ifndef USBCON
26
 #ifndef USBCON
27
-// this next line disables the entire HardwareSerial.cpp, 
27
+// this next line disables the entire HardwareSerial.cpp,
28
 // this is so I can support Attiny series and any other chip without a UART
28
 // this is so I can support Attiny series and any other chip without a UART
29
 #if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)
29
 #if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)
30
 
30
 
74
       useU2X = false;
74
       useU2X = false;
75
     }
75
     }
76
   #endif
76
   #endif
77
-  
77
+
78
   if (useU2X) {
78
   if (useU2X) {
79
     M_UCSRxA = BIT(M_U2Xx);
79
     M_UCSRxA = BIT(M_U2Xx);
80
     baud_setting = (F_CPU / 4 / baud - 1) / 2;
80
     baud_setting = (F_CPU / 4 / baud - 1) / 2;
95
 void MarlinSerial::end() {
95
 void MarlinSerial::end() {
96
   cbi(M_UCSRxB, M_RXENx);
96
   cbi(M_UCSRxB, M_RXENx);
97
   cbi(M_UCSRxB, M_TXENx);
97
   cbi(M_UCSRxB, M_TXENx);
98
-  cbi(M_UCSRxB, M_RXCIEx);  
98
+  cbi(M_UCSRxB, M_RXCIEx);
99
 }
99
 }
100
 
100
 
101
 
101
 
102
 int MarlinSerial::peek(void) {
102
 int MarlinSerial::peek(void) {
103
   if (rx_buffer.head == rx_buffer.tail) {
103
   if (rx_buffer.head == rx_buffer.tail) {
104
     return -1;
104
     return -1;
105
-  } else {
105
+  }
106
+  else {
106
     return rx_buffer.buffer[rx_buffer.tail];
107
     return rx_buffer.buffer[rx_buffer.tail];
107
   }
108
   }
108
 }
109
 }
162
       n = -n;
163
       n = -n;
163
     }
164
     }
164
     printNumber(n, 10);
165
     printNumber(n, 10);
165
-  } else {
166
+  }
167
+  else {
166
     printNumber(n, base);
168
     printNumber(n, base);
167
   }
169
   }
168
 }
170
 }
178
 
180
 
179
 void MarlinSerial::println(void) {
181
 void MarlinSerial::println(void) {
180
   print('\r');
182
   print('\r');
181
-  print('\n');  
183
+  print('\n');
182
 }
184
 }
183
 
185
 
184
-void MarlinSerial::println(const String &s) {
186
+void MarlinSerial::println(const String& s) {
185
   print(s);
187
   print(s);
186
   println();
188
   println();
187
 }
189
 }
229
 // Private Methods /////////////////////////////////////////////////////////////
231
 // Private Methods /////////////////////////////////////////////////////////////
230
 
232
 
231
 void MarlinSerial::printNumber(unsigned long n, uint8_t base) {
233
 void MarlinSerial::printNumber(unsigned long n, uint8_t base) {
232
-  unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. 
234
+  unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
233
   unsigned long i = 0;
235
   unsigned long i = 0;
234
 
236
 
235
   if (n == 0) {
237
   if (n == 0) {
236
     print('0');
238
     print('0');
237
     return;
239
     return;
238
-  } 
240
+  }
239
 
241
 
240
   while (n > 0) {
242
   while (n > 0) {
241
     buf[i++] = n % base;
243
     buf[i++] = n % base;
243
   }
245
   }
244
 
246
 
245
   for (; i > 0; i--)
247
   for (; i > 0; i--)
246
-    print((char) (buf[i - 1] < 10 ?
247
-      '0' + buf[i - 1] :
248
-      'A' + buf[i - 1] - 10));
248
+    print((char)(buf[i - 1] < 10 ?
249
+                 '0' + buf[i - 1] :
250
+                 'A' + buf[i - 1] - 10));
249
 }
251
 }
250
 
252
 
251
 void MarlinSerial::printFloat(double number, uint8_t digits) {
253
 void MarlinSerial::printFloat(double number, uint8_t digits) {
252
   // Handle negative numbers
254
   // Handle negative numbers
253
   if (number < 0.0) {
255
   if (number < 0.0) {
254
-     print('-');
255
-     number = -number;
256
+    print('-');
257
+    number = -number;
256
   }
258
   }
257
 
259
 
258
   // Round correctly so that print(1.999, 2) prints as "2.00"
260
   // Round correctly so that print(1.999, 2) prints as "2.00"
259
   double rounding = 0.5;
261
   double rounding = 0.5;
260
   for (uint8_t i = 0; i < digits; ++i)
262
   for (uint8_t i = 0; i < digits; ++i)
261
     rounding /= 10.0;
263
     rounding /= 10.0;
262
-  
264
+
263
   number += rounding;
265
   number += rounding;
264
 
266
 
265
   // Extract the integer part of the number and print it
267
   // Extract the integer part of the number and print it
275
     remainder *= 10.0;
277
     remainder *= 10.0;
276
     int toPrint = int(remainder);
278
     int toPrint = int(remainder);
277
     print(toPrint);
279
     print(toPrint);
278
-    remainder -= toPrint; 
279
-  } 
280
+    remainder -= toPrint;
281
+  }
280
 }
282
 }
281
 // Preinstantiate Objects //////////////////////////////////////////////////////
283
 // Preinstantiate Objects //////////////////////////////////////////////////////
282
 
284
 

+ 15
- 16
Marlin/MarlinSerial.h Переглянути файл

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.
31
 #define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \
31
 #define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \
32
-						(port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \
33
-						(port == 3 && defined(UBRR3H)))				
34
-						
32
+                            (port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \
33
+                            (port == 3 && defined(UBRR3H)))
34
+
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)
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 UCSRnA where n 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) 
48
-#define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,)    
49
-#define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,)    
50
-#define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,)    
51
-#define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,)    
52
-#define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,)  
47
+#define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B)
48
+#define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,)
49
+#define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,)
50
+#define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,)
51
+#define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,)
52
+#define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,)
53
 #define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H)
53
 #define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H)
54
 #define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L)
54
 #define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L)
55
 #define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,)
55
 #define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,)
99
     FORCE_INLINE void write(uint8_t c) {
99
     FORCE_INLINE void write(uint8_t c) {
100
       while (!TEST(M_UCSRxA, M_UDREx))
100
       while (!TEST(M_UCSRxA, M_UDREx))
101
         ;
101
         ;
102
-
103
       M_UDRx = c;
102
       M_UDRx = c;
104
     }
103
     }
105
 
104
 
124
     void printFloat(double, uint8_t);
123
     void printFloat(double, uint8_t);
125
 
124
 
126
   public:
125
   public:
127
-    FORCE_INLINE void write(const char *str) { while (*str) write(*str++); }
128
-    FORCE_INLINE void write(const uint8_t *buffer, size_t size) { while (size--) write(*buffer++); }
129
-    FORCE_INLINE void print(const String &s) { for (int i = 0; i < (int)s.length(); i++) write(s[i]); }
130
-    FORCE_INLINE void print(const char *str) { write(str); }
126
+    FORCE_INLINE void write(const char* str) { while (*str) write(*str++); }
127
+    FORCE_INLINE void write(const uint8_t* buffer, size_t size) { while (size--) write(*buffer++); }
128
+    FORCE_INLINE void print(const String& s) { for (int i = 0; i < (int)s.length(); i++) write(s[i]); }
129
+    FORCE_INLINE void print(const char* str) { write(str); }
131
 
130
 
132
     void print(char, int = BYTE);
131
     void print(char, int = BYTE);
133
     void print(unsigned char, int = BYTE);
132
     void print(unsigned char, int = BYTE);
137
     void print(unsigned long, int = DEC);
136
     void print(unsigned long, int = DEC);
138
     void print(double, int = 2);
137
     void print(double, int = 2);
139
 
138
 
140
-    void println(const String &s);
139
+    void println(const String& s);
141
     void println(const char[]);
140
     void println(const char[]);
142
     void println(char, int = BYTE);
141
     void println(char, int = BYTE);
143
     void println(unsigned char, int = BYTE);
142
     void println(unsigned char, int = BYTE);

+ 342
- 370
Marlin/Marlin_main.cpp
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 299
- 299
Marlin/SanityCheck.h Переглянути файл

4
  * Test configuration values for errors at compile-time.
4
  * Test configuration values for errors at compile-time.
5
  */
5
  */
6
 #ifndef SANITYCHECK_H
6
 #ifndef SANITYCHECK_H
7
-  #define SANITYCHECK_H
7
+#define SANITYCHECK_H
8
 
8
 
9
-  /**
10
-   * Dual Stepper Drivers
11
-   */
12
-  #if ENABLED(Z_DUAL_STEPPER_DRIVERS) && ENABLED(Y_DUAL_STEPPER_DRIVERS)
13
-    #error You cannot have dual stepper drivers for both Y and Z.
9
+/**
10
+ * Dual Stepper Drivers
11
+ */
12
+#if ENABLED(Z_DUAL_STEPPER_DRIVERS) && ENABLED(Y_DUAL_STEPPER_DRIVERS)
13
+  #error You cannot have dual stepper drivers for both Y and Z.
14
+#endif
15
+
16
+/**
17
+ * Progress Bar
18
+ */
19
+#if ENABLED(LCD_PROGRESS_BAR)
20
+  #if DISABLED(SDSUPPORT)
21
+    #error LCD_PROGRESS_BAR requires SDSUPPORT.
22
+  #endif
23
+  #if ENABLED(DOGLCD)
24
+    #error LCD_PROGRESS_BAR does not apply to graphical displays.
14
   #endif
25
   #endif
26
+  #if ENABLED(FILAMENT_LCD_DISPLAY)
27
+    #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
28
+  #endif
29
+#endif
15
 
30
 
16
-  /**
17
-   * Progress Bar
18
-   */
19
-  #if ENABLED(LCD_PROGRESS_BAR)
20
-    #if DISABLED(SDSUPPORT)
21
-      #error LCD_PROGRESS_BAR requires SDSUPPORT.
22
-    #endif
23
-    #if ENABLED(DOGLCD)
24
-      #error LCD_PROGRESS_BAR does not apply to graphical displays.
25
-    #endif
26
-    #if ENABLED(FILAMENT_LCD_DISPLAY)
27
-      #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both.
28
-    #endif
31
+/**
32
+ * Babystepping
33
+ */
34
+#if ENABLED(BABYSTEPPING)
35
+  #if ENABLED(COREXY) && ENABLED(BABYSTEP_XY)
36
+    #error BABYSTEPPING only implemented for Z axis on CoreXY.
29
   #endif
37
   #endif
38
+  #if ENABLED(SCARA)
39
+    #error BABYSTEPPING is not implemented for SCARA yet.
40
+  #endif
41
+  #if ENABLED(DELTA) && ENABLED(BABYSTEP_XY)
42
+    #error BABYSTEPPING only implemented for Z axis on deltabots.
43
+  #endif
44
+#endif
30
 
45
 
31
-  /**
32
-   * Babystepping
33
-   */
34
-  #if ENABLED(BABYSTEPPING)
35
-    #if ENABLED(COREXY) && ENABLED(BABYSTEP_XY)
36
-      #error BABYSTEPPING only implemented for Z axis on CoreXY.
37
-    #endif
38
-    #if ENABLED(SCARA)
39
-      #error BABYSTEPPING is not implemented for SCARA yet.
40
-    #endif
41
-    #if ENABLED(DELTA) && ENABLED(BABYSTEP_XY)
42
-      #error BABYSTEPPING only implemented for Z axis on deltabots.
43
-    #endif
46
+/**
47
+ * Filament Change with Extruder Runout Prevention
48
+ */
49
+#if ENABLED(FILAMENTCHANGEENABLE) && ENABLED(EXTRUDER_RUNOUT_PREVENT)
50
+  #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE.
51
+#endif
52
+
53
+/**
54
+ * Options only for EXTRUDERS > 1
55
+ */
56
+#if EXTRUDERS > 1
57
+
58
+  #if EXTRUDERS > 4
59
+    #error The maximum number of EXTRUDERS in Marlin is 4.
44
   #endif
60
   #endif
45
 
61
 
46
-  /**
47
-   * Filament Change with Extruder Runout Prevention
48
-   */
49
-  #if ENABLED(FILAMENTCHANGEENABLE) && ENABLED(EXTRUDER_RUNOUT_PREVENT)
50
-    #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE.
62
+  #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
63
+    #error EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT.
51
   #endif
64
   #endif
52
 
65
 
53
-  /**
54
-   * Options only for EXTRUDERS > 1
55
-   */
56
-  #if EXTRUDERS > 1
66
+  #if ENABLED(HEATERS_PARALLEL)
67
+    #error EXTRUDERS must be 1 with HEATERS_PARALLEL.
68
+  #endif
57
 
69
 
58
-    #if EXTRUDERS > 4
59
-      #error The maximum number of EXTRUDERS in Marlin is 4.
60
-    #endif
70
+  #if ENABLED(Y_DUAL_STEPPER_DRIVERS)
71
+    #error EXTRUDERS must be 1 with Y_DUAL_STEPPER_DRIVERS.
72
+  #endif
61
 
73
 
62
-    #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
63
-      #error EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT.
64
-    #endif
74
+  #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
75
+    #error EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS.
76
+  #endif
65
 
77
 
66
-    #if ENABLED(HEATERS_PARALLEL)
67
-      #error EXTRUDERS must be 1 with HEATERS_PARALLEL.
68
-    #endif
78
+#endif // EXTRUDERS > 1
69
 
79
 
70
-    #if ENABLED(Y_DUAL_STEPPER_DRIVERS)
71
-      #error EXTRUDERS must be 1 with Y_DUAL_STEPPER_DRIVERS.
80
+/**
81
+ * Limited number of servos
82
+ */
83
+#if NUM_SERVOS > 4
84
+  #error The maximum number of SERVOS in Marlin is 4.
85
+#endif
86
+#if defined(NUM_SERVOS) && NUM_SERVOS > 0
87
+  #if X_ENDSTOP_SERVO_NR >= 0 || Y_ENDSTOP_SERVO_NR >= 0 || Z_ENDSTOP_SERVO_NR >= 0
88
+    #if X_ENDSTOP_SERVO_NR >= NUM_SERVOS
89
+      #error X_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
90
+    #elif Y_ENDSTOP_SERVO_NR >= NUM_SERVOS
91
+      #error Y_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
92
+    #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS
93
+      #error Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
72
     #endif
94
     #endif
95
+  #endif
96
+#endif
73
 
97
 
74
-    #if ENABLED(Z_DUAL_STEPPER_DRIVERS)
75
-      #error EXTRUDERS must be 1 with Z_DUAL_STEPPER_DRIVERS.
76
-    #endif
98
+/**
99
+ * Servo deactivation depends on servo endstops
100
+ */
101
+#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_SERVO_ENDSTOPS
102
+  #error At least one of the ?_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE.
103
+#endif
77
 
104
 
78
-  #endif // EXTRUDERS > 1
105
+/**
106
+ * Required LCD language
107
+ */
108
+#if DISABLED(DOGLCD) && ENABLED(ULTRA_LCD) && DISABLED(DISPLAY_CHARSET_HD44780_JAPAN) && DISABLED(DISPLAY_CHARSET_HD44780_WESTERN) && DISABLED(DISPLAY_CHARSET_HD44780_CYRILLIC)
109
+  #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN  or DISPLAY_CHARSET_HD44780_CYRILLIC for your LCD controller.
110
+#endif
79
 
111
 
80
-  /**
81
-   * Limited number of servos
82
-   */
83
-  #if NUM_SERVOS > 4
84
-    #error The maximum number of SERVOS in Marlin is 4.
112
+/**
113
+ * Mesh Bed Leveling
114
+ */
115
+#if ENABLED(MESH_BED_LEVELING)
116
+  #if ENABLED(DELTA)
117
+    #error MESH_BED_LEVELING does not yet support DELTA printers.
85
   #endif
118
   #endif
86
-  #if defined(NUM_SERVOS) && NUM_SERVOS > 0
87
-    #if X_ENDSTOP_SERVO_NR >= 0 || Y_ENDSTOP_SERVO_NR >= 0 || Z_ENDSTOP_SERVO_NR >= 0
88
-      #if X_ENDSTOP_SERVO_NR >= NUM_SERVOS
89
-        #error X_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
90
-      #elif Y_ENDSTOP_SERVO_NR >= NUM_SERVOS
91
-        #error Y_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
92
-      #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS
93
-        #error Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS.
94
-      #endif
95
-    #endif
119
+  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
120
+    #error Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both.
96
   #endif
121
   #endif
97
-
98
-  /**
99
-   * Servo deactivation depends on servo endstops
100
-   */
101
-  #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_SERVO_ENDSTOPS
102
-    #error At least one of the ?_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE.
122
+  #if MESH_NUM_X_POINTS > 7 || MESH_NUM_Y_POINTS > 7
123
+    #error MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS need to be less than 8.
103
   #endif
124
   #endif
125
+#endif
126
+
127
+/**
128
+ * Auto Bed Leveling
129
+ */
130
+#if ENABLED(AUTO_BED_LEVELING_FEATURE)
104
 
131
 
105
   /**
132
   /**
106
-   * Required LCD language
133
+   * Require a Z min pin
107
    */
134
    */
108
-  #if DISABLED(DOGLCD) && ENABLED(ULTRA_LCD) && DISABLED(DISPLAY_CHARSET_HD44780_JAPAN) && DISABLED(DISPLAY_CHARSET_HD44780_WESTERN) && DISABLED(DISPLAY_CHARSET_HD44780_CYRILLIC)
109
-    #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN  or DISPLAY_CHARSET_HD44780_CYRILLIC for your LCD controller.
135
+  #if !PIN_EXISTS(Z_MIN)
136
+    #if !PIN_EXISTS(Z_MIN_PROBE) || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) // It's possible for someone to set a pin for the Z probe, but not enable it.
137
+      #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
138
+        #error You must have a Z_MIN or Z_PROBE endstop to enable Z_MIN_PROBE_REPEATABILITY_TEST.
139
+      #else
140
+        #error AUTO_BED_LEVELING_FEATURE requires a Z_MIN or Z_PROBE endstop. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin.
141
+      #endif
142
+    #endif
110
   #endif
143
   #endif
111
 
144
 
112
   /**
145
   /**
113
-   * Mesh Bed Leveling
146
+   * Require a Z probe pin if Z_MIN_PROBE_ENDSTOP is enabled.
114
    */
147
    */
115
-  #if ENABLED(MESH_BED_LEVELING)
116
-    #if ENABLED(DELTA)
117
-      #error MESH_BED_LEVELING does not yet support DELTA printers.
118
-    #endif
119
-    #if ENABLED(AUTO_BED_LEVELING_FEATURE)
120
-      #error Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both.
121
-    #endif
122
-    #if MESH_NUM_X_POINTS > 7 || MESH_NUM_Y_POINTS > 7
123
-      #error MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS need to be less than 8.
148
+  #if ENABLED(Z_MIN_PROBE_ENDSTOP)
149
+    #if !PIN_EXISTS(Z_MIN_PROBE)
150
+      #error You must have a Z_MIN_PROBE_PIN defined in your pins_XXXX.h file if you enable Z_MIN_PROBE_ENDSTOP.
124
     #endif
151
     #endif
152
+    // Forcing Servo definitions can break some hall effect sensor setups. Leaving these here for further comment.
153
+    //#ifndef NUM_SERVOS
154
+    //  #error You must have NUM_SERVOS defined and there must be at least 1 configured to use Z_MIN_PROBE_ENDSTOP.
155
+    //#endif
156
+    //#if defined(NUM_SERVOS) && NUM_SERVOS < 1
157
+    //  #error You must have at least 1 servo defined for NUM_SERVOS to use Z_MIN_PROBE_ENDSTOP.
158
+    //#endif
159
+    //#if Z_ENDSTOP_SERVO_NR < 0
160
+    //  #error You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP.
161
+    //#endif
162
+    //#ifndef SERVO_ENDSTOP_ANGLES
163
+    //  #error You must have SERVO_ENDSTOP_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP.
164
+    //#endif
125
   #endif
165
   #endif
126
-
127
   /**
166
   /**
128
-   * Auto Bed Leveling
167
+   * Check if Probe_Offset * Grid Points is greater than Probing Range
129
    */
168
    */
130
-  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
131
-
132
-    /**
133
-     * Require a Z min pin
134
-     */
135
-    #if !PIN_EXISTS(Z_MIN)
136
-      #if !PIN_EXISTS(Z_MIN_PROBE) || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) // It's possible for someone to set a pin for the Z probe, but not enable it.
137
-        #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
138
-          #error You must have a Z_MIN or Z_PROBE endstop to enable Z_MIN_PROBE_REPEATABILITY_TEST.
139
-        #else
140
-          #error AUTO_BED_LEVELING_FEATURE requires a Z_MIN or Z_PROBE endstop. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin.
141
-        #endif
169
+  #if ENABLED(AUTO_BED_LEVELING_GRID)
170
+    #ifndef DELTA_PROBABLE_RADIUS
171
+      // Be sure points are in the right order
172
+      #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION
173
+        #error LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION.
174
+      #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION
175
+        #error FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION.
142
       #endif
176
       #endif
143
-    #endif
144
-
145
-    /**
146
-     * Require a Z probe pin if Z_MIN_PROBE_ENDSTOP is enabled.
147
-     */
148
-    #if ENABLED(Z_MIN_PROBE_ENDSTOP)
149
-      #if !PIN_EXISTS(Z_MIN_PROBE)
150
-        #error You must have a Z_MIN_PROBE_PIN defined in your pins_XXXX.h file if you enable Z_MIN_PROBE_ENDSTOP.
177
+      // Make sure probing points are reachable
178
+      #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
179
+        #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe."
180
+      #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
181
+        #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe."
182
+      #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
183
+        #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe."
184
+      #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
185
+        #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe."
151
       #endif
186
       #endif
152
-// Forcing Servo definitions can break some hall effect sensor setups. Leaving these here for further comment.
153
-//      #ifndef NUM_SERVOS
154
-//        #error You must have NUM_SERVOS defined and there must be at least 1 configured to use Z_MIN_PROBE_ENDSTOP.
155
-//      #endif
156
-//      #if defined(NUM_SERVOS) && NUM_SERVOS < 1
157
-//        #error You must have at least 1 servo defined for NUM_SERVOS to use Z_MIN_PROBE_ENDSTOP.
158
-//      #endif
159
-//      #if Z_ENDSTOP_SERVO_NR < 0
160
-//        #error You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP.
161
-//      #endif
162
-//      #ifndef SERVO_ENDSTOP_ANGLES
163
-//        #error You must have SERVO_ENDSTOP_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP.
164
-//      #endif
165
     #endif
187
     #endif
166
-    /**
167
-     * Check if Probe_Offset * Grid Points is greater than Probing Range
168
-     */
169
-    #if ENABLED(AUTO_BED_LEVELING_GRID)
170
-      #ifndef DELTA_PROBABLE_RADIUS
171
-        // Be sure points are in the right order
172
-        #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION
173
-          #error LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION.
174
-        #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION
175
-          #error FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION.
176
-        #endif
177
-        // Make sure probing points are reachable
178
-        #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
179
-          #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe."
180
-        #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
181
-          #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe."
182
-        #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
183
-          #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe."
184
-        #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
185
-          #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe."
186
-        #endif
187
-      #endif
188
-    #else // !AUTO_BED_LEVELING_GRID
189
-
190
-      // Check the triangulation points
191
-      #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X
192
-        #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe."
193
-      #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X
194
-        #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe."
195
-      #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X
196
-        #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe."
197
-      #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y
198
-        #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe."
199
-      #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y
200
-        #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe."
201
-      #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y
202
-        #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe."
203
-      #endif
204
-
205
-    #endif // !AUTO_BED_LEVELING_GRID
188
+  #else // !AUTO_BED_LEVELING_GRID
189
+
190
+    // Check the triangulation points
191
+    #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X
192
+      #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe."
193
+    #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X
194
+      #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe."
195
+    #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X
196
+      #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe."
197
+    #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y
198
+      #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe."
199
+    #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y
200
+      #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe."
201
+    #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y
202
+      #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe."
203
+    #endif
206
 
204
 
207
-  #endif // AUTO_BED_LEVELING_FEATURE
205
+  #endif // !AUTO_BED_LEVELING_GRID
208
 
206
 
209
-  /**
210
-   * ULTIPANEL encoder
211
-   */
212
-  #if ENABLED(ULTIPANEL) && DISABLED(NEWPANEL) && DISABLED(SR_LCD_2W_NL) && !defined(SHIFT_CLK)
213
-    #error ULTIPANEL requires some kind of encoder.
214
-  #endif
207
+#endif // AUTO_BED_LEVELING_FEATURE
215
 
208
 
216
-  /**
217
-   * Delta has limited bed leveling options
218
-   */
219
-  #if ENABLED(DELTA)
209
+/**
210
+ * ULTIPANEL encoder
211
+ */
212
+#if ENABLED(ULTIPANEL) && DISABLED(NEWPANEL) && DISABLED(SR_LCD_2W_NL) && !defined(SHIFT_CLK)
213
+  #error ULTIPANEL requires some kind of encoder.
214
+#endif
220
 
215
 
221
-    #if ENABLED(AUTO_BED_LEVELING_FEATURE)
216
+/**
217
+ * Delta has limited bed leveling options
218
+ */
219
+#if ENABLED(DELTA)
222
 
220
 
223
-      #if DISABLED(AUTO_BED_LEVELING_GRID)
224
-        #error Only AUTO_BED_LEVELING_GRID is supported with DELTA.
225
-      #endif
221
+  #if ENABLED(AUTO_BED_LEVELING_FEATURE)
226
 
222
 
227
-      #if ENABLED(Z_PROBE_SLED)
228
-        #error You cannot use Z_PROBE_SLED with DELTA.
229
-      #endif
223
+    #if DISABLED(AUTO_BED_LEVELING_GRID)
224
+      #error Only AUTO_BED_LEVELING_GRID is supported with DELTA.
225
+    #endif
230
 
226
 
231
-      #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
232
-        #error Z_MIN_PROBE_REPEATABILITY_TEST is not supported with DELTA yet.
233
-      #endif
227
+    #if ENABLED(Z_PROBE_SLED)
228
+      #error You cannot use Z_PROBE_SLED with DELTA.
229
+    #endif
234
 
230
 
231
+    #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
232
+      #error Z_MIN_PROBE_REPEATABILITY_TEST is not supported with DELTA yet.
235
     #endif
233
     #endif
236
 
234
 
237
   #endif
235
   #endif
238
 
236
 
239
-  /**
240
-   * Allen Key Z probe requires Auto Bed Leveling grid and Delta
241
-   */
242
-  #if ENABLED(Z_PROBE_ALLEN_KEY) && !(ENABLED(AUTO_BED_LEVELING_GRID) && ENABLED(DELTA))
243
-    #error Invalid use of Z_PROBE_ALLEN_KEY.
244
-  #endif
237
+#endif
245
 
238
 
246
-  /**
247
-   * Dual X Carriage requirements
248
-   */
249
-  #if ENABLED(DUAL_X_CARRIAGE)
250
-    #if EXTRUDERS == 1 || ENABLED(COREXY) \
251
-        || !HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR \
252
-        || !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \
253
-        || !HAS_X_MAX
254
-      #error Missing or invalid definitions for DUAL_X_CARRIAGE mode.
255
-    #endif
256
-    #if X_HOME_DIR != -1 || X2_HOME_DIR != 1
257
-      #error Please use canonical x-carriage assignment.
258
-    #endif
259
-  #endif // DUAL_X_CARRIAGE
239
+/**
240
+ * Allen Key Z probe requires Auto Bed Leveling grid and Delta
241
+ */
242
+#if ENABLED(Z_PROBE_ALLEN_KEY) && !(ENABLED(AUTO_BED_LEVELING_GRID) && ENABLED(DELTA))
243
+  #error Invalid use of Z_PROBE_ALLEN_KEY.
244
+#endif
260
 
245
 
261
-  /**
262
-   * Make sure auto fan pins don't conflict with the fan pin
263
-   */
264
-  #if HAS_AUTO_FAN && HAS_FAN
265
-    #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
266
-      #error You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN.
267
-    #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
268
-      #error You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN.
269
-    #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
270
-      #error You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN.
271
-    #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN
272
-      #error You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN.
273
-    #endif
246
+/**
247
+ * Dual X Carriage requirements
248
+ */
249
+#if ENABLED(DUAL_X_CARRIAGE)
250
+  #if EXTRUDERS == 1 || ENABLED(COREXY) \
251
+      || !HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR \
252
+      || !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \
253
+      || !HAS_X_MAX
254
+    #error Missing or invalid definitions for DUAL_X_CARRIAGE mode.
274
   #endif
255
   #endif
275
-
276
-  #if HAS_FAN && CONTROLLERFAN_PIN == FAN_PIN
277
-    #error You cannot set CONTROLLERFAN_PIN equal to FAN_PIN.
256
+  #if X_HOME_DIR != -1 || X2_HOME_DIR != 1
257
+    #error Please use canonical x-carriage assignment.
278
   #endif
258
   #endif
259
+#endif // DUAL_X_CARRIAGE
279
 
260
 
280
-  /**
281
-   * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set.
282
-   */
283
-  #if EXTRUDERS > 3
284
-    #if !HAS_HEATER_3
285
-      #error HEATER_3_PIN not defined for this board.
286
-    #elif !PIN_EXISTS(TEMP_3)
287
-      #error TEMP_3_PIN not defined for this board.
288
-    #elif !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
289
-      #error E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board.
290
-    #elif TEMP_SENSOR_3 == 0
291
-      #error TEMP_SENSOR_3 is required with 4 EXTRUDERS.
292
-    #endif
293
-  #elif EXTRUDERS > 2
294
-    #if !HAS_HEATER_2
295
-      #error HEATER_2_PIN not defined for this board.
296
-    #elif !PIN_EXISTS(TEMP_2)
297
-      #error TEMP_2_PIN not defined for this board.
298
-    #elif !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
299
-      #error E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board.
300
-    #elif TEMP_SENSOR_2 == 0
301
-      #error TEMP_SENSOR_2 is required with 3 or more EXTRUDERS.
302
-    #endif
303
-  #elif EXTRUDERS > 1
304
-    #if !PIN_EXISTS(TEMP_1)
305
-      #error TEMP_1_PIN not defined for this board.
306
-    #elif !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
307
-      #error E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board.
308
-    #endif
261
+/**
262
+ * Make sure auto fan pins don't conflict with the fan pin
263
+ */
264
+#if HAS_AUTO_FAN && HAS_FAN
265
+  #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN
266
+    #error You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN.
267
+  #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN
268
+    #error You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN.
269
+  #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN
270
+    #error You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN.
271
+  #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN
272
+    #error You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN.
309
   #endif
273
   #endif
274
+#endif
310
 
275
 
311
-  #if EXTRUDERS > 1 || ENABLED(HEATERS_PARALLEL)
312
-    #if !HAS_HEATER_1
313
-      #error HEATER_1_PIN not defined for this board.
314
-    #endif
315
-  #endif
276
+#if HAS_FAN && CONTROLLERFAN_PIN == FAN_PIN
277
+  #error You cannot set CONTROLLERFAN_PIN equal to FAN_PIN.
278
+#endif
316
 
279
 
317
-  #if TEMP_SENSOR_1 == 0
318
-    #if EXTRUDERS > 1
319
-      #error TEMP_SENSOR_1 is required with 2 or more EXTRUDERS.
320
-    #elif ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
321
-      #error TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT.
322
-    #endif
280
+/**
281
+ * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set.
282
+ */
283
+#if EXTRUDERS > 3
284
+  #if !HAS_HEATER_3
285
+    #error HEATER_3_PIN not defined for this board.
286
+  #elif !PIN_EXISTS(TEMP_3)
287
+    #error TEMP_3_PIN not defined for this board.
288
+  #elif !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
289
+    #error E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board.
290
+  #elif TEMP_SENSOR_3 == 0
291
+    #error TEMP_SENSOR_3 is required with 4 EXTRUDERS.
323
   #endif
292
   #endif
293
+#elif EXTRUDERS > 2
294
+  #if !HAS_HEATER_2
295
+    #error HEATER_2_PIN not defined for this board.
296
+  #elif !PIN_EXISTS(TEMP_2)
297
+    #error TEMP_2_PIN not defined for this board.
298
+  #elif !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
299
+    #error E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board.
300
+  #elif TEMP_SENSOR_2 == 0
301
+    #error TEMP_SENSOR_2 is required with 3 or more EXTRUDERS.
302
+  #endif
303
+#elif EXTRUDERS > 1
304
+  #if !PIN_EXISTS(TEMP_1)
305
+    #error TEMP_1_PIN not defined for this board.
306
+  #elif !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
307
+    #error E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board.
308
+  #endif
309
+#endif
324
 
310
 
325
-  #if !HAS_HEATER_0
326
-    #error HEATER_0_PIN not defined for this board.
327
-  #elif !PIN_EXISTS(TEMP_0)
328
-    #error TEMP_0_PIN not defined for this board.
329
-  #elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE)
330
-    #error E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board.
331
-  #elif TEMP_SENSOR_0 == 0
332
-    #error TEMP_SENSOR_0 is required.
311
+#if EXTRUDERS > 1 || ENABLED(HEATERS_PARALLEL)
312
+  #if !HAS_HEATER_1
313
+    #error HEATER_1_PIN not defined for this board.
333
   #endif
314
   #endif
315
+#endif
334
 
316
 
335
-  /**
336
-   * Warnings for old configurations
337
-   */
338
-  #if WATCH_TEMP_PERIOD > 500
339
-    #error WATCH_TEMP_PERIOD now uses seconds instead of milliseconds.
340
-  #elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD))
341
-    #error Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS.
342
-  #elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD)
343
-    #error Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED.
344
-  #elif ENABLED(COREXZ) && ENABLED(Z_LATE_ENABLE)
345
-    #error "Z_LATE_ENABLE can't be used with COREXZ."
346
-  #elif defined(X_HOME_RETRACT_MM)
347
-    #error [XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM.
348
-  #elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
349
-    #error PROBE_SERVO_DEACTIVATION_DELAY has been replaced with DEACTIVATE_SERVOS_AFTER_MOVE and SERVO_DEACTIVATION_DELAY.
350
-  #elif defined(BEEPER)
351
-    #error BEEPER is now BEEPER_PIN. Please update your pins definitions.
352
-  #elif defined(SDCARDDETECT)
353
-    #error SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions.
354
-  #elif defined(SDCARDDETECTINVERTED)
355
-    #error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration.
356
-  #elif defined(BTENABLED)
357
-    #error BTENABLED is now BLUETOOTH. Please update your configuration.
358
-  #elif defined(CUSTOM_MENDEL_NAME)
359
-    #error CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration.
360
-  #elif defined(HAS_AUTOMATIC_VERSIONING)
361
-    #error HAS_AUTOMATIC_VERSIONING deprecated - use USE_AUTOMATIC_VERSIONING instead
362
-  #elif defined(ENABLE_AUTO_BED_LEVELING)
363
-    #error ENABLE_AUTO_BED_LEVELING deprecated - use AUTO_BED_LEVELING_FEATURE instead
317
+#if TEMP_SENSOR_1 == 0
318
+  #if EXTRUDERS > 1
319
+    #error TEMP_SENSOR_1 is required with 2 or more EXTRUDERS.
320
+  #elif ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
321
+    #error TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT.
364
   #endif
322
   #endif
323
+#endif
324
+
325
+#if !HAS_HEATER_0
326
+  #error HEATER_0_PIN not defined for this board.
327
+#elif !PIN_EXISTS(TEMP_0)
328
+  #error TEMP_0_PIN not defined for this board.
329
+#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE)
330
+  #error E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board.
331
+#elif TEMP_SENSOR_0 == 0
332
+  #error TEMP_SENSOR_0 is required.
333
+#endif
334
+
335
+/**
336
+ * Warnings for old configurations
337
+ */
338
+#if WATCH_TEMP_PERIOD > 500
339
+  #error WATCH_TEMP_PERIOD now uses seconds instead of milliseconds.
340
+#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD))
341
+  #error Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS.
342
+#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD)
343
+  #error Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED.
344
+#elif ENABLED(COREXZ) && ENABLED(Z_LATE_ENABLE)
345
+  #error "Z_LATE_ENABLE can't be used with COREXZ."
346
+#elif defined(X_HOME_RETRACT_MM)
347
+  #error [XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM.
348
+#elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
349
+  #error PROBE_SERVO_DEACTIVATION_DELAY has been replaced with DEACTIVATE_SERVOS_AFTER_MOVE and SERVO_DEACTIVATION_DELAY.
350
+#elif defined(BEEPER)
351
+  #error BEEPER is now BEEPER_PIN. Please update your pins definitions.
352
+#elif defined(SDCARDDETECT)
353
+  #error SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions.
354
+#elif defined(SDCARDDETECTINVERTED)
355
+  #error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration.
356
+#elif defined(BTENABLED)
357
+  #error BTENABLED is now BLUETOOTH. Please update your configuration.
358
+#elif defined(CUSTOM_MENDEL_NAME)
359
+  #error CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration.
360
+#elif defined(HAS_AUTOMATIC_VERSIONING)
361
+  #error HAS_AUTOMATIC_VERSIONING deprecated - use USE_AUTOMATIC_VERSIONING instead
362
+#elif defined(ENABLE_AUTO_BED_LEVELING)
363
+  #error ENABLE_AUTO_BED_LEVELING deprecated - use AUTO_BED_LEVELING_FEATURE instead
364
+#endif
365
 
365
 
366
 #endif //SANITYCHECK_H
366
 #endif //SANITYCHECK_H

+ 159
- 173
Marlin/Sd2Card.cpp Переглянути файл

23
 #include "Sd2Card.h"
23
 #include "Sd2Card.h"
24
 //------------------------------------------------------------------------------
24
 //------------------------------------------------------------------------------
25
 #if DISABLED(SOFTWARE_SPI)
25
 #if DISABLED(SOFTWARE_SPI)
26
-// functions for hardware SPI
27
-//------------------------------------------------------------------------------
28
-// make sure SPCR rate is in expected bits
29
-#if (SPR0 != 0 || SPR1 != 1)
30
-#error unexpected SPCR bits
31
-#endif
32
-/**
33
- * Initialize hardware SPI
34
- * Set SCK rate to F_CPU/pow(2, 1 + spiRate) for spiRate [0,6]
35
- */
36
-static void spiInit(uint8_t spiRate) {
37
-  // See avr processor documentation
38
-  SPCR = BIT(SPE) | BIT(MSTR) | (spiRate >> 1);
39
-  SPSR = spiRate & 1 || spiRate == 6 ? 0 : BIT(SPI2X);
40
-}
41
-//------------------------------------------------------------------------------
42
-/** SPI receive a byte */
43
-static uint8_t spiRec() {
44
-  SPDR = 0XFF;
45
-  while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
46
-  return SPDR;
47
-}
48
-//------------------------------------------------------------------------------
49
-/** SPI read data - only one call so force inline */
50
-static inline __attribute__((always_inline))
51
-void spiRead(uint8_t* buf, uint16_t nbyte) {
52
-  if (nbyte-- == 0) return;
53
-  SPDR = 0XFF;
54
-  for (uint16_t i = 0; i < nbyte; i++) {
26
+  // functions for hardware SPI
27
+  //------------------------------------------------------------------------------
28
+  // make sure SPCR rate is in expected bits
29
+  #if (SPR0 != 0 || SPR1 != 1)
30
+    #error unexpected SPCR bits
31
+  #endif
32
+  /**
33
+   * Initialize hardware SPI
34
+   * Set SCK rate to F_CPU/pow(2, 1 + spiRate) for spiRate [0,6]
35
+   */
36
+  static void spiInit(uint8_t spiRate) {
37
+    // See avr processor documentation
38
+    SPCR = BIT(SPE) | BIT(MSTR) | (spiRate >> 1);
39
+    SPSR = spiRate & 1 || spiRate == 6 ? 0 : BIT(SPI2X);
40
+  }
41
+  //------------------------------------------------------------------------------
42
+  /** SPI receive a byte */
43
+  static uint8_t spiRec() {
44
+    SPDR = 0XFF;
55
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
45
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
56
-    buf[i] = SPDR;
46
+    return SPDR;
47
+  }
48
+  //------------------------------------------------------------------------------
49
+  /** SPI read data - only one call so force inline */
50
+  static inline __attribute__((always_inline))
51
+  void spiRead(uint8_t* buf, uint16_t nbyte) {
52
+    if (nbyte-- == 0) return;
57
     SPDR = 0XFF;
53
     SPDR = 0XFF;
54
+    for (uint16_t i = 0; i < nbyte; i++) {
55
+      while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
56
+      buf[i] = SPDR;
57
+      SPDR = 0XFF;
58
+    }
59
+    while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
60
+    buf[nbyte] = SPDR;
58
   }
61
   }
59
-  while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
60
-  buf[nbyte] = SPDR;
61
-}
62
-//------------------------------------------------------------------------------
63
-/** SPI send a byte */
64
-static void spiSend(uint8_t b) {
65
-  SPDR = b;
66
-  while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
67
-}
68
-//------------------------------------------------------------------------------
69
-/** SPI send block - only one call so force inline */
70
-static inline __attribute__((always_inline))
71
-  void spiSendBlock(uint8_t token, const uint8_t* buf) {
72
-  SPDR = token;
73
-  for (uint16_t i = 0; i < 512; i += 2) {
62
+  //------------------------------------------------------------------------------
63
+  /** SPI send a byte */
64
+  static void spiSend(uint8_t b) {
65
+    SPDR = b;
74
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
66
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
75
-    SPDR = buf[i];
67
+  }
68
+  //------------------------------------------------------------------------------
69
+  /** SPI send block - only one call so force inline */
70
+  static inline __attribute__((always_inline))
71
+  void spiSendBlock(uint8_t token, const uint8_t* buf) {
72
+    SPDR = token;
73
+    for (uint16_t i = 0; i < 512; i += 2) {
74
+      while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
75
+      SPDR = buf[i];
76
+      while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
77
+      SPDR = buf[i + 1];
78
+    }
76
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
79
     while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
77
-    SPDR = buf[i + 1];
78
   }
80
   }
79
-  while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
80
-}
81
-//------------------------------------------------------------------------------
81
+       //------------------------------------------------------------------------------
82
 #else  // SOFTWARE_SPI
82
 #else  // SOFTWARE_SPI
83
-//------------------------------------------------------------------------------
84
-/** nop to tune soft SPI timing */
85
-#define nop asm volatile ("nop\n\t")
86
-//------------------------------------------------------------------------------
87
-/** Soft SPI receive byte */
88
-static uint8_t spiRec() {
89
-  uint8_t data = 0;
90
-  // no interrupts during byte receive - about 8 us
91
-  cli();
92
-  // output pin high - like sending 0XFF
93
-  fastDigitalWrite(SPI_MOSI_PIN, HIGH);
83
+       //------------------------------------------------------------------------------
84
+  /** nop to tune soft SPI timing */
85
+  #define nop asm volatile ("nop\n\t")
86
+  //------------------------------------------------------------------------------
87
+  /** Soft SPI receive byte */
88
+  static uint8_t spiRec() {
89
+    uint8_t data = 0;
90
+    // no interrupts during byte receive - about 8 us
91
+    cli();
92
+    // output pin high - like sending 0XFF
93
+    fastDigitalWrite(SPI_MOSI_PIN, HIGH);
94
+
95
+    for (uint8_t i = 0; i < 8; i++) {
96
+      fastDigitalWrite(SPI_SCK_PIN, HIGH);
97
+
98
+      // adjust so SCK is nice
99
+      nop;
100
+      nop;
101
+
102
+      data <<= 1;
103
+
104
+      if (fastDigitalRead(SPI_MISO_PIN)) data |= 1;
105
+
106
+      fastDigitalWrite(SPI_SCK_PIN, LOW);
107
+    }
108
+    // enable interrupts
109
+    sei();
110
+    return data;
111
+  }
112
+  //------------------------------------------------------------------------------
113
+  /** Soft SPI read data */
114
+  static void spiRead(uint8_t* buf, uint16_t nbyte) {
115
+    for (uint16_t i = 0; i < nbyte; i++)
116
+      buf[i] = spiRec();
117
+  }
118
+  //------------------------------------------------------------------------------
119
+  /** Soft SPI send byte */
120
+  static void spiSend(uint8_t data) {
121
+    // no interrupts during byte send - about 8 us
122
+    cli();
123
+    for (uint8_t i = 0; i < 8; i++) {
124
+      fastDigitalWrite(SPI_SCK_PIN, LOW);
94
 
125
 
95
-  for (uint8_t i = 0; i < 8; i++) {
96
-    fastDigitalWrite(SPI_SCK_PIN, HIGH);
126
+      fastDigitalWrite(SPI_MOSI_PIN, data & 0X80);
97
 
127
 
98
-    // adjust so SCK is nice
128
+      data <<= 1;
129
+
130
+      fastDigitalWrite(SPI_SCK_PIN, HIGH);
131
+    }
132
+    // hold SCK high for a few ns
133
+    nop;
134
+    nop;
99
     nop;
135
     nop;
100
     nop;
136
     nop;
101
 
137
 
102
-    data <<= 1;
103
-
104
-    if (fastDigitalRead(SPI_MISO_PIN)) data |= 1;
105
-
106
-    fastDigitalWrite(SPI_SCK_PIN, LOW);
107
-  }
108
-  // enable interrupts
109
-  sei();
110
-  return data;
111
-}
112
-//------------------------------------------------------------------------------
113
-/** Soft SPI read data */
114
-static void spiRead(uint8_t* buf, uint16_t nbyte) {
115
-  for (uint16_t i = 0; i < nbyte; i++) {
116
-    buf[i] = spiRec();
117
-  }
118
-}
119
-//------------------------------------------------------------------------------
120
-/** Soft SPI send byte */
121
-static void spiSend(uint8_t data) {
122
-  // no interrupts during byte send - about 8 us
123
-  cli();
124
-  for (uint8_t i = 0; i < 8; i++) {
125
     fastDigitalWrite(SPI_SCK_PIN, LOW);
138
     fastDigitalWrite(SPI_SCK_PIN, LOW);
126
-
127
-    fastDigitalWrite(SPI_MOSI_PIN, data & 0X80);
128
-
129
-    data <<= 1;
130
-
131
-    fastDigitalWrite(SPI_SCK_PIN, HIGH);
139
+    // enable interrupts
140
+    sei();
132
   }
141
   }
133
-  // hold SCK high for a few ns
134
-  nop;
135
-  nop;
136
-  nop;
137
-  nop;
138
-
139
-  fastDigitalWrite(SPI_SCK_PIN, LOW);
140
-  // enable interrupts
141
-  sei();
142
-}
143
-//------------------------------------------------------------------------------
144
-/** Soft SPI send block */
142
+  //------------------------------------------------------------------------------
143
+  /** Soft SPI send block */
145
   void spiSendBlock(uint8_t token, const uint8_t* buf) {
144
   void spiSendBlock(uint8_t token, const uint8_t* buf) {
146
-  spiSend(token);
147
-  for (uint16_t i = 0; i < 512; i++) {
148
-    spiSend(buf[i]);
145
+    spiSend(token);
146
+    for (uint16_t i = 0; i < 512; i++)
147
+      spiSend(buf[i]);
149
   }
148
   }
150
-}
151
 #endif  // SOFTWARE_SPI
149
 #endif  // SOFTWARE_SPI
152
 //------------------------------------------------------------------------------
150
 //------------------------------------------------------------------------------
153
 // send command and return error code.  Return zero for OK
151
 // send command and return error code.  Return zero for OK
209
 }
207
 }
210
 //------------------------------------------------------------------------------
208
 //------------------------------------------------------------------------------
211
 void Sd2Card::chipSelectLow() {
209
 void Sd2Card::chipSelectLow() {
212
-#if DISABLED(SOFTWARE_SPI)
213
-  spiInit(spiRate_);
214
-#endif  // SOFTWARE_SPI
210
+  #if DISABLED(SOFTWARE_SPI)
211
+    spiInit(spiRate_);
212
+  #endif  // SOFTWARE_SPI
215
   digitalWrite(chipSelectPin_, LOW);
213
   digitalWrite(chipSelectPin_, LOW);
216
 }
214
 }
217
 //------------------------------------------------------------------------------
215
 //------------------------------------------------------------------------------
246
     lastBlock <<= 9;
244
     lastBlock <<= 9;
247
   }
245
   }
248
   if (cardCommand(CMD32, firstBlock)
246
   if (cardCommand(CMD32, firstBlock)
249
-    || cardCommand(CMD33, lastBlock)
250
-    || cardCommand(CMD38, 0)) {
251
-      error(SD_CARD_ERROR_ERASE);
252
-      goto fail;
247
+      || cardCommand(CMD33, lastBlock)
248
+      || cardCommand(CMD38, 0)) {
249
+    error(SD_CARD_ERROR_ERASE);
250
+    goto fail;
253
   }
251
   }
254
   if (!waitNotBusy(SD_ERASE_TIMEOUT)) {
252
   if (!waitNotBusy(SD_ERASE_TIMEOUT)) {
255
     error(SD_CARD_ERROR_ERASE_TIMEOUT);
253
     error(SD_CARD_ERROR_ERASE_TIMEOUT);
257
   }
255
   }
258
   chipSelectHigh();
256
   chipSelectHigh();
259
   return true;
257
   return true;
260
-
261
- fail:
258
+fail:
262
   chipSelectHigh();
259
   chipSelectHigh();
263
   return false;
260
   return false;
264
 }
261
 }
297
   pinMode(SPI_MOSI_PIN, OUTPUT);
294
   pinMode(SPI_MOSI_PIN, OUTPUT);
298
   pinMode(SPI_SCK_PIN, OUTPUT);
295
   pinMode(SPI_SCK_PIN, OUTPUT);
299
 
296
 
300
-#if DISABLED(SOFTWARE_SPI)
301
-  // SS must be in output mode even it is not chip select
302
-  pinMode(SS_PIN, OUTPUT);
303
-  // set SS high - may be chip select for another SPI device
304
-#if SET_SPI_SS_HIGH
305
-  digitalWrite(SS_PIN, HIGH);
306
-#endif  // SET_SPI_SS_HIGH
307
-  // set SCK rate for initialization commands
308
-  spiRate_ = SPI_SD_INIT_RATE;
309
-  spiInit(spiRate_);
310
-#endif  // SOFTWARE_SPI
297
+  #if DISABLED(SOFTWARE_SPI)
298
+    // SS must be in output mode even it is not chip select
299
+    pinMode(SS_PIN, OUTPUT);
300
+    // set SS high - may be chip select for another SPI device
301
+    #if SET_SPI_SS_HIGH
302
+      digitalWrite(SS_PIN, HIGH);
303
+    #endif  // SET_SPI_SS_HIGH
304
+    // set SCK rate for initialization commands
305
+    spiRate_ = SPI_SD_INIT_RATE;
306
+    spiInit(spiRate_);
307
+  #endif  // SOFTWARE_SPI
311
 
308
 
312
   // must supply min of 74 clock cycles with CS high.
309
   // must supply min of 74 clock cycles with CS high.
313
   for (uint8_t i = 0; i < 10; i++) spiSend(0XFF);
310
   for (uint8_t i = 0; i < 10; i++) spiSend(0XFF);
322
   // check SD version
319
   // check SD version
323
   if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) {
320
   if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) {
324
     type(SD_CARD_TYPE_SD1);
321
     type(SD_CARD_TYPE_SD1);
325
-  } else {
322
+  }
323
+  else {
326
     // only need last byte of r7 response
324
     // only need last byte of r7 response
327
     for (uint8_t i = 0; i < 4; i++) status_ = spiRec();
325
     for (uint8_t i = 0; i < 4; i++) status_ = spiRec();
328
     if (status_ != 0XAA) {
326
     if (status_ != 0XAA) {
353
   }
351
   }
354
   chipSelectHigh();
352
   chipSelectHigh();
355
 
353
 
356
-#if DISABLED(SOFTWARE_SPI)
357
-  return setSckRate(sckRateID);
358
-#else  // SOFTWARE_SPI
359
-  return true;
360
-#endif  // SOFTWARE_SPI
354
+  #if DISABLED(SOFTWARE_SPI)
355
+    return setSckRate(sckRateID);
356
+  #else  // SOFTWARE_SPI
357
+    return true;
358
+  #endif  // SOFTWARE_SPI
361
 
359
 
362
- fail:
360
+fail:
363
   chipSelectHigh();
361
   chipSelectHigh();
364
   return false;
362
   return false;
365
 }
363
 }
376
 #if ENABLED(SD_CHECK_AND_RETRY)
374
 #if ENABLED(SD_CHECK_AND_RETRY)
377
   uint8_t retryCnt = 3;
375
   uint8_t retryCnt = 3;
378
   // use address if not SDHC card
376
   // use address if not SDHC card
379
-  if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9;
380
- retry2:
377
+  if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
378
+retry2:
381
   retryCnt --;
379
   retryCnt --;
382
   if (cardCommand(CMD17, blockNumber)) {
380
   if (cardCommand(CMD17, blockNumber)) {
383
     error(SD_CARD_ERROR_CMD17);
381
     error(SD_CARD_ERROR_CMD17);
384
     if (retryCnt > 0) goto retry;
382
     if (retryCnt > 0) goto retry;
385
     goto fail;
383
     goto fail;
386
   }
384
   }
387
-  if (!readData(dst, 512))
388
-  {
385
+  if (!readData(dst, 512)) {
389
     if (retryCnt > 0) goto retry;
386
     if (retryCnt > 0) goto retry;
390
     goto fail;
387
     goto fail;
391
   }
388
   }
392
   return true;
389
   return true;
393
- retry:
394
-   chipSelectHigh();
395
-   cardCommand(CMD12, 0);//Try sending a stop command, but ignore the result.
396
-   errorCode_ = 0;
397
-   goto retry2;
390
+retry:
391
+  chipSelectHigh();
392
+  cardCommand(CMD12, 0);//Try sending a stop command, but ignore the result.
393
+  errorCode_ = 0;
394
+  goto retry2;
398
 #else
395
 #else
399
   // use address if not SDHC card
396
   // use address if not SDHC card
400
-  if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9;
397
+  if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
401
   if (cardCommand(CMD17, blockNumber)) {
398
   if (cardCommand(CMD17, blockNumber)) {
402
     error(SD_CARD_ERROR_CMD17);
399
     error(SD_CARD_ERROR_CMD17);
403
     goto fail;
400
     goto fail;
405
   return readData(dst, 512);
402
   return readData(dst, 512);
406
 #endif
403
 #endif
407
 
404
 
408
- fail:
405
+fail:
409
   chipSelectHigh();
406
   chipSelectHigh();
410
   return false;
407
   return false;
411
 }
408
 }
417
  * \return The value one, true, is returned for success and
414
  * \return The value one, true, is returned for success and
418
  * the value zero, false, is returned for failure.
415
  * the value zero, false, is returned for failure.
419
  */
416
  */
420
-bool Sd2Card::readData(uint8_t *dst) {
417
+bool Sd2Card::readData(uint8_t* dst) {
421
   chipSelectLow();
418
   chipSelectLow();
422
   return readData(dst, 512);
419
   return readData(dst, 512);
423
 }
420
 }
488
     uint16_t calcCrc = CRC_CCITT(dst, count);
485
     uint16_t calcCrc = CRC_CCITT(dst, count);
489
     uint16_t recvCrc = spiRec() << 8;
486
     uint16_t recvCrc = spiRec() << 8;
490
     recvCrc |= spiRec();
487
     recvCrc |= spiRec();
491
-    if (calcCrc != recvCrc)
492
-    {
493
-        error(SD_CARD_ERROR_CRC);
494
-        goto fail;
488
+    if (calcCrc != recvCrc) {
489
+      error(SD_CARD_ERROR_CRC);
490
+      goto fail;
495
     }
491
     }
496
   }
492
   }
497
 #else
493
 #else
501
 #endif
497
 #endif
502
   chipSelectHigh();
498
   chipSelectHigh();
503
   return true;
499
   return true;
504
-
505
- fail:
500
+fail:
506
   chipSelectHigh();
501
   chipSelectHigh();
507
   return false;
502
   return false;
508
 }
503
 }
515
     goto fail;
510
     goto fail;
516
   }
511
   }
517
   return readData(dst, 16);
512
   return readData(dst, 16);
518
-
519
- fail:
513
+fail:
520
   chipSelectHigh();
514
   chipSelectHigh();
521
   return false;
515
   return false;
522
 }
516
 }
532
  * the value zero, false, is returned for failure.
526
  * the value zero, false, is returned for failure.
533
  */
527
  */
534
 bool Sd2Card::readStart(uint32_t blockNumber) {
528
 bool Sd2Card::readStart(uint32_t blockNumber) {
535
-  if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9;
529
+  if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
536
   if (cardCommand(CMD18, blockNumber)) {
530
   if (cardCommand(CMD18, blockNumber)) {
537
     error(SD_CARD_ERROR_CMD18);
531
     error(SD_CARD_ERROR_CMD18);
538
     goto fail;
532
     goto fail;
539
   }
533
   }
540
   chipSelectHigh();
534
   chipSelectHigh();
541
   return true;
535
   return true;
542
-
543
- fail:
536
+fail:
544
   chipSelectHigh();
537
   chipSelectHigh();
545
   return false;
538
   return false;
546
 }
539
 }
558
   }
551
   }
559
   chipSelectHigh();
552
   chipSelectHigh();
560
   return true;
553
   return true;
561
-
562
- fail:
554
+fail:
563
   chipSelectHigh();
555
   chipSelectHigh();
564
   return false;
556
   return false;
565
 }
557
 }
592
     if (((uint16_t)millis() - t0) >= timeoutMillis) goto fail;
584
     if (((uint16_t)millis() - t0) >= timeoutMillis) goto fail;
593
   }
585
   }
594
   return true;
586
   return true;
595
-
596
- fail:
587
+fail:
597
   return false;
588
   return false;
598
 }
589
 }
599
 //------------------------------------------------------------------------------
590
 //------------------------------------------------------------------------------
626
   }
617
   }
627
   chipSelectHigh();
618
   chipSelectHigh();
628
   return true;
619
   return true;
629
-
630
- fail:
620
+fail:
631
   chipSelectHigh();
621
   chipSelectHigh();
632
   return false;
622
   return false;
633
 }
623
 }
644
   if (!writeData(WRITE_MULTIPLE_TOKEN, src)) goto fail;
634
   if (!writeData(WRITE_MULTIPLE_TOKEN, src)) goto fail;
645
   chipSelectHigh();
635
   chipSelectHigh();
646
   return true;
636
   return true;
647
-
648
- fail:
637
+fail:
649
   error(SD_CARD_ERROR_WRITE_MULTIPLE);
638
   error(SD_CARD_ERROR_WRITE_MULTIPLE);
650
   chipSelectHigh();
639
   chipSelectHigh();
651
   return false;
640
   return false;
664
     goto fail;
653
     goto fail;
665
   }
654
   }
666
   return true;
655
   return true;
667
-
668
- fail:
656
+fail:
669
   chipSelectHigh();
657
   chipSelectHigh();
670
   return false;
658
   return false;
671
 }
659
 }
695
   }
683
   }
696
   chipSelectHigh();
684
   chipSelectHigh();
697
   return true;
685
   return true;
698
-
699
- fail:
686
+fail:
700
   chipSelectHigh();
687
   chipSelectHigh();
701
   return false;
688
   return false;
702
 }
689
 }
713
   if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail;
700
   if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail;
714
   chipSelectHigh();
701
   chipSelectHigh();
715
   return true;
702
   return true;
716
-
717
- fail:
703
+fail:
718
   error(SD_CARD_ERROR_STOP_TRAN);
704
   error(SD_CARD_ERROR_STOP_TRAN);
719
   chipSelectHigh();
705
   chipSelectHigh();
720
   return false;
706
   return false;

+ 23
- 23
Marlin/Sd2Card.h Переглянути файл

118
  */
118
  */
119
 //------------------------------------------------------------------------------
119
 //------------------------------------------------------------------------------
120
 #if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__))
120
 #if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__))
121
-#define SOFTWARE_SPI
121
+  #define SOFTWARE_SPI
122
 #elif USE_SOFTWARE_SPI
122
 #elif USE_SOFTWARE_SPI
123
-#define SOFTWARE_SPI
123
+  #define SOFTWARE_SPI
124
 #endif  // MEGA_SOFT_SPI
124
 #endif  // MEGA_SOFT_SPI
125
 //------------------------------------------------------------------------------
125
 //------------------------------------------------------------------------------
126
 // SPI pin definitions - do not edit here - change in SdFatConfig.h
126
 // SPI pin definitions - do not edit here - change in SdFatConfig.h
127
 //
127
 //
128
 #if DISABLED(SOFTWARE_SPI)
128
 #if DISABLED(SOFTWARE_SPI)
129
-// hardware pin defs
130
-/** The default chip select pin for the SD card is SS. */
131
-uint8_t const  SD_CHIP_SELECT_PIN = SS_PIN;
132
-// The following three pins must not be redefined for hardware SPI.
133
-/** SPI Master Out Slave In pin */
134
-uint8_t const  SPI_MOSI_PIN = MOSI_PIN;
135
-/** SPI Master In Slave Out pin */
136
-uint8_t const  SPI_MISO_PIN = MISO_PIN;
137
-/** SPI Clock pin */
138
-uint8_t const  SPI_SCK_PIN = SCK_PIN;
129
+  // hardware pin defs
130
+  /** The default chip select pin for the SD card is SS. */
131
+  uint8_t const  SD_CHIP_SELECT_PIN = SS_PIN;
132
+  // The following three pins must not be redefined for hardware SPI.
133
+  /** SPI Master Out Slave In pin */
134
+  uint8_t const  SPI_MOSI_PIN = MOSI_PIN;
135
+  /** SPI Master In Slave Out pin */
136
+  uint8_t const  SPI_MISO_PIN = MISO_PIN;
137
+  /** SPI Clock pin */
138
+  uint8_t const  SPI_SCK_PIN = SCK_PIN;
139
 
139
 
140
 #else  // SOFTWARE_SPI
140
 #else  // SOFTWARE_SPI
141
 
141
 
142
-/** SPI chip select pin */
143
-uint8_t const SD_CHIP_SELECT_PIN = SOFT_SPI_CS_PIN;
144
-/** SPI Master Out Slave In pin */
145
-uint8_t const SPI_MOSI_PIN = SOFT_SPI_MOSI_PIN;
146
-/** SPI Master In Slave Out pin */
147
-uint8_t const SPI_MISO_PIN = SOFT_SPI_MISO_PIN;
148
-/** SPI Clock pin */
149
-uint8_t const SPI_SCK_PIN = SOFT_SPI_SCK_PIN;
142
+  /** SPI chip select pin */
143
+  uint8_t const SD_CHIP_SELECT_PIN = SOFT_SPI_CS_PIN;
144
+  /** SPI Master Out Slave In pin */
145
+  uint8_t const SPI_MOSI_PIN = SOFT_SPI_MOSI_PIN;
146
+  /** SPI Master In Slave Out pin */
147
+  uint8_t const SPI_MISO_PIN = SOFT_SPI_MISO_PIN;
148
+  /** SPI Clock pin */
149
+  uint8_t const SPI_SCK_PIN = SOFT_SPI_SCK_PIN;
150
 #endif  // SOFTWARE_SPI
150
 #endif  // SOFTWARE_SPI
151
 //------------------------------------------------------------------------------
151
 //------------------------------------------------------------------------------
152
 /**
152
 /**
178
    * \return true for success or false for failure.
178
    * \return true for success or false for failure.
179
    */
179
    */
180
   bool init(uint8_t sckRateID = SPI_FULL_SPEED,
180
   bool init(uint8_t sckRateID = SPI_FULL_SPEED,
181
-    uint8_t chipSelectPin = SD_CHIP_SELECT_PIN);
181
+            uint8_t chipSelectPin = SD_CHIP_SELECT_PIN);
182
   bool readBlock(uint32_t block, uint8_t* dst);
182
   bool readBlock(uint32_t block, uint8_t* dst);
183
   /**
183
   /**
184
    * Read a card's CID register. The CID contains card identification
184
    * Read a card's CID register. The CID contains card identification
185
    * information such as Manufacturer ID, Product name, Product serial
185
    * information such as Manufacturer ID, Product name, Product serial
186
-   * number and Manufacturing date. 
186
+   * number and Manufacturing date.
187
    *
187
    *
188
    * \param[out] cid pointer to area for returned data.
188
    * \param[out] cid pointer to area for returned data.
189
    *
189
    *
203
   bool readCSD(csd_t* csd) {
203
   bool readCSD(csd_t* csd) {
204
     return readRegister(CMD9, csd);
204
     return readRegister(CMD9, csd);
205
   }
205
   }
206
-  bool readData(uint8_t *dst);
206
+  bool readData(uint8_t* dst);
207
   bool readStart(uint32_t blockNumber);
207
   bool readStart(uint32_t blockNumber);
208
   bool readStop();
208
   bool readStop();
209
   bool setSckRate(uint8_t sckRateID);
209
   bool setSckRate(uint8_t sckRateID);

+ 55
- 55
Marlin/Sd2PinMap.h Переглянути файл

316
 };
316
 };
317
 #elif defined(__AVR_ATmega1281__)
317
 #elif defined(__AVR_ATmega1281__)
318
 // Waspmote
318
 // Waspmote
319
- 
319
+
320
 // Two Wire (aka I2C) ports
320
 // Two Wire (aka I2C) ports
321
 uint8_t const SDA_PIN = 41;
321
 uint8_t const SDA_PIN = 41;
322
 uint8_t const SCL_PIN = 40;
322
 uint8_t const SCL_PIN = 40;
323
- 
324
- 
323
+
324
+
325
 #undef MOSI_PIN
325
 #undef MOSI_PIN
326
 #undef MISO_PIN
326
 #undef MISO_PIN
327
 // SPI port
327
 // SPI port
329
 uint8_t const MOSI_PIN = 11;  // B2
329
 uint8_t const MOSI_PIN = 11;  // B2
330
 uint8_t const MISO_PIN = 12;  // B3
330
 uint8_t const MISO_PIN = 12;  // B3
331
 uint8_t const SCK_PIN = 10;   // B1
331
 uint8_t const SCK_PIN = 10;   // B1
332
- 
332
+
333
 static const pin_map_t digitalPinMap[] = {
333
 static const pin_map_t digitalPinMap[] = {
334
-    {&DDRE, &PINE, &PORTE, 0}, // E0 0
335
-    {&DDRE, &PINE, &PORTE, 1}, // E1 1
336
-    {&DDRE, &PINE, &PORTE, 3}, // E3 2
337
-    {&DDRE, &PINE, &PORTE, 4}, // E4 3
338
-    {&DDRC, &PINC, &PORTC, 4}, // C4 4
339
-    {&DDRC, &PINC, &PORTC, 5}, // C5 5
340
-    {&DDRC, &PINC, &PORTC, 6}, // C6 6
341
-    {&DDRC, &PINC, &PORTC, 7}, // C7 7
342
-    {&DDRA, &PINA, &PORTA, 2}, // A2 8
343
-    {&DDRA, &PINA, &PORTA, 3}, // A3 9
344
-    {&DDRA, &PINA, &PORTA, 4}, // A4 10
345
-    {&DDRD, &PIND, &PORTD, 5}, // D5 11
346
-    {&DDRD, &PIND, &PORTD, 6}, // D6 12
347
-    {&DDRC, &PINC, &PORTC, 1}, // C1 13
348
-    {&DDRF, &PINF, &PORTF, 1}, // F1 14
349
-    {&DDRF, &PINF, &PORTF, 2}, // F2 15
350
-    {&DDRF, &PINF, &PORTF, 3}, // F3 16
351
-    {&DDRF, &PINF, &PORTF, 4}, // F4 17
352
-    {&DDRF, &PINF, &PORTF, 5}, // F5 18
353
-    {&DDRF, &PINF, &PORTF, 6}, // F6 19
354
-    {&DDRF, &PINF, &PORTF, 7}, // F7 20
355
-    {&DDRF, &PINF, &PORTF, 0}, // F0 21
356
-    {&DDRA, &PINA, &PORTA, 1}, // A1 22
357
-    {&DDRD, &PIND, &PORTD, 7}, // D7 23
358
-    {&DDRE, &PINE, &PORTE, 5}, // E5 24
359
-    {&DDRA, &PINA, &PORTA, 6}, // A6 25
360
-    {&DDRE, &PINE, &PORTE, 2}, // E2 26
361
-    {&DDRA, &PINA, &PORTA, 5}, // A5 27
362
-    {&DDRC, &PINC, &PORTC, 0}, // C0 28
363
-    {&DDRB, &PINB, &PORTB, 0}, // B0 29
364
-    {&DDRB, &PINB, &PORTB, 1}, // B1 30
365
-    {&DDRB, &PINB, &PORTB, 2}, // B2 31
366
-    {&DDRB, &PINB, &PORTB, 3}, // B3 32
367
-    {&DDRB, &PINB, &PORTB, 4}, // B4 33
368
-    {&DDRB, &PINB, &PORTB, 5}, // B5 34
369
-    {&DDRA, &PINA, &PORTA, 0}, // A0 35
370
-    {&DDRB, &PINB, &PORTB, 6}, // B6 36
371
-    {&DDRB, &PINB, &PORTB, 7}, // B7 37
372
-    {&DDRE, &PINE, &PORTE, 6}, // E6 38
373
-    {&DDRE, &PINE, &PORTE, 7}, // E7 39
374
-    {&DDRD, &PIND, &PORTD, 0}, // D0 40
375
-    {&DDRD, &PIND, &PORTD, 1}, // D1 41
376
-    {&DDRC, &PINC, &PORTC, 3}, // C3 42
377
-    {&DDRD, &PIND, &PORTD, 2}, // D2 43
378
-    {&DDRD, &PIND, &PORTD, 3}, // D3 44
379
-    {&DDRA, &PINA, &PORTA, 7}, // A7 45
380
-    {&DDRC, &PINC, &PORTC, 2}, // C2 46
381
-    {&DDRD, &PIND, &PORTD, 4}, // D4 47
382
-    {&DDRG, &PING, &PORTG, 2}, // G2 48
383
-    {&DDRG, &PING, &PORTG, 1}, // G1 49
384
-    {&DDRG, &PING, &PORTG, 0}, // G0 50
334
+  {&DDRE, &PINE, &PORTE, 0}, // E0 0
335
+  {&DDRE, &PINE, &PORTE, 1}, // E1 1
336
+  {&DDRE, &PINE, &PORTE, 3}, // E3 2
337
+  {&DDRE, &PINE, &PORTE, 4}, // E4 3
338
+  {&DDRC, &PINC, &PORTC, 4}, // C4 4
339
+  {&DDRC, &PINC, &PORTC, 5}, // C5 5
340
+  {&DDRC, &PINC, &PORTC, 6}, // C6 6
341
+  {&DDRC, &PINC, &PORTC, 7}, // C7 7
342
+  {&DDRA, &PINA, &PORTA, 2}, // A2 8
343
+  {&DDRA, &PINA, &PORTA, 3}, // A3 9
344
+  {&DDRA, &PINA, &PORTA, 4}, // A4 10
345
+  {&DDRD, &PIND, &PORTD, 5}, // D5 11
346
+  {&DDRD, &PIND, &PORTD, 6}, // D6 12
347
+  {&DDRC, &PINC, &PORTC, 1}, // C1 13
348
+  {&DDRF, &PINF, &PORTF, 1}, // F1 14
349
+  {&DDRF, &PINF, &PORTF, 2}, // F2 15
350
+  {&DDRF, &PINF, &PORTF, 3}, // F3 16
351
+  {&DDRF, &PINF, &PORTF, 4}, // F4 17
352
+  {&DDRF, &PINF, &PORTF, 5}, // F5 18
353
+  {&DDRF, &PINF, &PORTF, 6}, // F6 19
354
+  {&DDRF, &PINF, &PORTF, 7}, // F7 20
355
+  {&DDRF, &PINF, &PORTF, 0}, // F0 21
356
+  {&DDRA, &PINA, &PORTA, 1}, // A1 22
357
+  {&DDRD, &PIND, &PORTD, 7}, // D7 23
358
+  {&DDRE, &PINE, &PORTE, 5}, // E5 24
359
+  {&DDRA, &PINA, &PORTA, 6}, // A6 25
360
+  {&DDRE, &PINE, &PORTE, 2}, // E2 26
361
+  {&DDRA, &PINA, &PORTA, 5}, // A5 27
362
+  {&DDRC, &PINC, &PORTC, 0}, // C0 28
363
+  {&DDRB, &PINB, &PORTB, 0}, // B0 29
364
+  {&DDRB, &PINB, &PORTB, 1}, // B1 30
365
+  {&DDRB, &PINB, &PORTB, 2}, // B2 31
366
+  {&DDRB, &PINB, &PORTB, 3}, // B3 32
367
+  {&DDRB, &PINB, &PORTB, 4}, // B4 33
368
+  {&DDRB, &PINB, &PORTB, 5}, // B5 34
369
+  {&DDRA, &PINA, &PORTA, 0}, // A0 35
370
+  {&DDRB, &PINB, &PORTB, 6}, // B6 36
371
+  {&DDRB, &PINB, &PORTB, 7}, // B7 37
372
+  {&DDRE, &PINE, &PORTE, 6}, // E6 38
373
+  {&DDRE, &PINE, &PORTE, 7}, // E7 39
374
+  {&DDRD, &PIND, &PORTD, 0}, // D0 40
375
+  {&DDRD, &PIND, &PORTD, 1}, // D1 41
376
+  {&DDRC, &PINC, &PORTC, 3}, // C3 42
377
+  {&DDRD, &PIND, &PORTD, 2}, // D2 43
378
+  {&DDRD, &PIND, &PORTD, 3}, // D3 44
379
+  {&DDRA, &PINA, &PORTA, 7}, // A7 45
380
+  {&DDRC, &PINC, &PORTC, 2}, // C2 46
381
+  {&DDRD, &PIND, &PORTD, 4}, // D4 47
382
+  {&DDRG, &PING, &PORTG, 2}, // G2 48
383
+  {&DDRG, &PING, &PORTG, 1}, // G1 49
384
+  {&DDRG, &PING, &PORTG, 0}, // G0 50
385
 };
385
 };
386
 #else  // defined(__AVR_ATmega1280__)
386
 #else  // defined(__AVR_ATmega1280__)
387
 #error unknown chip
387
 #error unknown chip

+ 136
- 132
Marlin/SdBaseFile.cpp Переглянути файл

48
 bool SdBaseFile::addDirCluster() {
48
 bool SdBaseFile::addDirCluster() {
49
   uint32_t block;
49
   uint32_t block;
50
   // max folder size
50
   // max folder size
51
-  if (fileSize_/sizeof(dir_t) >= 0XFFFF) goto fail;
51
+  if (fileSize_ / sizeof(dir_t) >= 0XFFFF) goto fail;
52
 
52
 
53
   if (!addCluster()) goto fail;
53
   if (!addCluster()) goto fail;
54
   if (!vol_->cacheFlush()) goto fail;
54
   if (!vol_->cacheFlush()) goto fail;
68
   // Increase directory file size by cluster size
68
   // Increase directory file size by cluster size
69
   fileSize_ += 512UL << vol_->clusterSizeShift_;
69
   fileSize_ += 512UL << vol_->clusterSizeShift_;
70
   return true;
70
   return true;
71
-
72
- fail:
71
+fail:
73
   return false;
72
   return false;
74
 }
73
 }
75
 //------------------------------------------------------------------------------
74
 //------------------------------------------------------------------------------
78
 dir_t* SdBaseFile::cacheDirEntry(uint8_t action) {
77
 dir_t* SdBaseFile::cacheDirEntry(uint8_t action) {
79
   if (!vol_->cacheRawBlock(dirBlock_, action)) goto fail;
78
   if (!vol_->cacheRawBlock(dirBlock_, action)) goto fail;
80
   return vol_->cache()->dir + dirIndex_;
79
   return vol_->cache()->dir + dirIndex_;
81
-
82
- fail:
80
+fail:
83
   return 0;
81
   return 0;
84
 }
82
 }
85
 //------------------------------------------------------------------------------
83
 //------------------------------------------------------------------------------
125
     }
123
     }
126
   }
124
   }
127
 
125
 
128
- fail:
126
+fail:
129
   return false;
127
   return false;
130
 }
128
 }
131
 //------------------------------------------------------------------------------
129
 //------------------------------------------------------------------------------
147
  *
145
  *
148
  */
146
  */
149
 bool SdBaseFile::createContiguous(SdBaseFile* dirFile,
147
 bool SdBaseFile::createContiguous(SdBaseFile* dirFile,
150
-        const char* path, uint32_t size) {
148
+                                  const char* path, uint32_t size) {
151
   uint32_t count;
149
   uint32_t count;
152
   // don't allow zero length file
150
   // don't allow zero length file
153
   if (size == 0) goto fail;
151
   if (size == 0) goto fail;
167
   flags_ |= F_FILE_DIR_DIRTY;
165
   flags_ |= F_FILE_DIR_DIRTY;
168
 
166
 
169
   return sync();
167
   return sync();
170
-
171
- fail:
168
+fail:
172
   return false;
169
   return false;
173
 }
170
 }
174
 //------------------------------------------------------------------------------
171
 //------------------------------------------------------------------------------
191
   // copy to caller's struct
188
   // copy to caller's struct
192
   memcpy(dir, p, sizeof(dir_t));
189
   memcpy(dir, p, sizeof(dir_t));
193
   return true;
190
   return true;
194
-
195
- fail:
191
+fail:
196
   return false;
192
   return false;
197
 }
193
 }
198
 //------------------------------------------------------------------------------
194
 //------------------------------------------------------------------------------
258
     str[n++] = ch;
254
     str[n++] = ch;
259
     if (!delim) {
255
     if (!delim) {
260
       if (ch == '\n') break;
256
       if (ch == '\n') break;
261
-    } else {
257
+    }
258
+    else {
262
       if (strchr(delim, ch)) break;
259
       if (strchr(delim, ch)) break;
263
     }
260
     }
264
   }
261
   }
318
 void SdBaseFile::ls(uint8_t flags, uint8_t indent) {
315
 void SdBaseFile::ls(uint8_t flags, uint8_t indent) {
319
   rewind();
316
   rewind();
320
   int8_t status;
317
   int8_t status;
321
-  while ((status = lsPrintNext( flags, indent))) {
318
+  while ((status = lsPrintNext(flags, indent))) {
322
     if (status > 1 && (flags & LS_R)) {
319
     if (status > 1 && (flags & LS_R)) {
323
-      uint16_t index = curPosition()/32 - 1;
320
+      uint16_t index = curPosition() / 32 - 1;
324
       SdBaseFile s;
321
       SdBaseFile s;
325
-      if (s.open(this, index, O_READ)) s.ls( flags, indent + 2);
322
+      if (s.open(this, index, O_READ)) s.ls(flags, indent + 2);
326
       seekSet(32 * (index + 1));
323
       seekSet(32 * (index + 1));
327
     }
324
     }
328
   }
325
   }
330
 //------------------------------------------------------------------------------
327
 //------------------------------------------------------------------------------
331
 // saves 32 bytes on stack for ls recursion
328
 // saves 32 bytes on stack for ls recursion
332
 // return 0 - EOF, 1 - normal file, or 2 - directory
329
 // return 0 - EOF, 1 - normal file, or 2 - directory
333
-int8_t SdBaseFile::lsPrintNext( uint8_t flags, uint8_t indent) {
330
+int8_t SdBaseFile::lsPrintNext(uint8_t flags, uint8_t indent) {
334
   dir_t dir;
331
   dir_t dir;
335
   uint8_t w = 0;
332
   uint8_t w = 0;
336
 
333
 
340
 
337
 
341
     // skip deleted entry and entries for . and  ..
338
     // skip deleted entry and entries for . and  ..
342
     if (dir.name[0] != DIR_NAME_DELETED && dir.name[0] != '.'
339
     if (dir.name[0] != DIR_NAME_DELETED && dir.name[0] != '.'
343
-      && DIR_IS_FILE_OR_SUBDIR(&dir)) break;
340
+        && DIR_IS_FILE_OR_SUBDIR(&dir)) break;
344
   }
341
   }
345
   // indent for dir level
342
   // indent for dir level
346
   for (uint8_t i = 0; i < indent; i++) MYSERIAL.write(' ');
343
   for (uint8_t i = 0; i < indent; i++) MYSERIAL.write(' ');
365
   // print modify date/time if requested
362
   // print modify date/time if requested
366
   if (flags & LS_DATE) {
363
   if (flags & LS_DATE) {
367
     MYSERIAL.write(' ');
364
     MYSERIAL.write(' ');
368
-    printFatDate( dir.lastWriteDate);
365
+    printFatDate(dir.lastWriteDate);
369
     MYSERIAL.write(' ');
366
     MYSERIAL.write(' ');
370
-    printFatTime( dir.lastWriteTime);
367
+    printFatTime(dir.lastWriteTime);
371
   }
368
   }
372
   // print size if requested
369
   // print size if requested
373
   if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) {
370
   if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) {
392
       if (n == 10) goto fail;  // only one dot allowed
389
       if (n == 10) goto fail;  // only one dot allowed
393
       n = 10;  // max index for full 8.3 name
390
       n = 10;  // max index for full 8.3 name
394
       i = 8;   // place for extension
391
       i = 8;   // place for extension
395
-    } else {
392
+    }
393
+    else {
396
       // illegal FAT characters
394
       // illegal FAT characters
397
       PGM_P p = PSTR("|<>^+=?/[];,*\"\\");
395
       PGM_P p = PSTR("|<>^+=?/[];,*\"\\");
398
       uint8_t b;
396
       uint8_t b;
400
       // check size and only allow ASCII printable characters
398
       // check size and only allow ASCII printable characters
401
       if (i > n || c < 0X21 || c > 0X7E)goto fail;
399
       if (i > n || c < 0X21 || c > 0X7E)goto fail;
402
       // only upper case allowed in 8.3 names - convert lower to upper
400
       // only upper case allowed in 8.3 names - convert lower to upper
403
-      name[i++] = (c < 'a' || c > 'z') ?  (c) : (c + ('A' - 'a'));
401
+      name[i++] = (c < 'a' || c > 'z') ? (c) : (c + ('A' - 'a'));
404
     }
402
     }
405
   }
403
   }
406
   *ptr = str;
404
   *ptr = str;
407
   // must have a file name, extension is optional
405
   // must have a file name, extension is optional
408
   return name[0] != ' ';
406
   return name[0] != ' ';
409
-
410
- fail:
407
+fail:
411
   return false;
408
   return false;
412
 }
409
 }
413
 //------------------------------------------------------------------------------
410
 //------------------------------------------------------------------------------
454
     sub = parent != &dir1 ? &dir1 : &dir2;
451
     sub = parent != &dir1 ? &dir1 : &dir2;
455
   }
452
   }
456
   return mkdir(parent, dname);
453
   return mkdir(parent, dname);
457
-
458
-  fail:
454
+fail:
459
   return false;
455
   return false;
460
 }
456
 }
461
 //------------------------------------------------------------------------------
457
 //------------------------------------------------------------------------------
503
   if (parent->isRoot()) {
499
   if (parent->isRoot()) {
504
     d.firstClusterLow = 0;
500
     d.firstClusterLow = 0;
505
     d.firstClusterHigh = 0;
501
     d.firstClusterHigh = 0;
506
-  } else {
502
+  }
503
+  else {
507
     d.firstClusterLow = parent->firstCluster_ & 0XFFFF;
504
     d.firstClusterLow = parent->firstCluster_ & 0XFFFF;
508
     d.firstClusterHigh = parent->firstCluster_ >> 16;
505
     d.firstClusterHigh = parent->firstCluster_ >> 16;
509
   }
506
   }
512
 
509
 
513
   // write first block
510
   // write first block
514
   return vol_->cacheFlush();
511
   return vol_->cacheFlush();
515
-
516
- fail:
512
+fail:
517
   return false;
513
   return false;
518
 }
514
 }
519
 //------------------------------------------------------------------------------
515
 //------------------------------------------------------------------------------
520
- /** Open a file in the current working directory.
521
-  *
522
-  * \param[in] path A path with a valid 8.3 DOS name for a file to be opened.
523
-  *
524
-  * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive
525
-  * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t).
526
-  *
527
-  * \return The value one, true, is returned for success and
528
-  * the value zero, false, is returned for failure.
529
-  */
530
-  bool SdBaseFile::open(const char* path, uint8_t oflag) {
531
-    return open(cwd_, path, oflag);
532
-  }
516
+/** Open a file in the current working directory.
517
+ *
518
+ * \param[in] path A path with a valid 8.3 DOS name for a file to be opened.
519
+ *
520
+ * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive
521
+ * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t).
522
+ *
523
+ * \return The value one, true, is returned for success and
524
+ * the value zero, false, is returned for failure.
525
+ */
526
+bool SdBaseFile::open(const char* path, uint8_t oflag) {
527
+  return open(cwd_, path, oflag);
528
+}
533
 //------------------------------------------------------------------------------
529
 //------------------------------------------------------------------------------
534
 /** Open a file or directory by name.
530
 /** Open a file or directory by name.
535
  *
531
  *
584
 bool SdBaseFile::open(SdBaseFile* dirFile, const char* path, uint8_t oflag) {
580
 bool SdBaseFile::open(SdBaseFile* dirFile, const char* path, uint8_t oflag) {
585
   uint8_t dname[11];
581
   uint8_t dname[11];
586
   SdBaseFile dir1, dir2;
582
   SdBaseFile dir1, dir2;
587
-  SdBaseFile *parent = dirFile;
588
-  SdBaseFile *sub = &dir1;
583
+  SdBaseFile* parent = dirFile;
584
+  SdBaseFile* sub = &dir1;
589
 
585
 
590
   if (!dirFile) goto fail;
586
   if (!dirFile) goto fail;
591
 
587
 
609
     sub = parent != &dir1 ? &dir1 : &dir2;
605
     sub = parent != &dir1 ? &dir1 : &dir2;
610
   }
606
   }
611
   return open(parent, dname, oflag);
607
   return open(parent, dname, oflag);
612
-
613
- fail:
608
+fail:
614
   return false;
609
   return false;
615
 }
610
 }
616
 //------------------------------------------------------------------------------
611
 //------------------------------------------------------------------------------
617
 // open with filename in dname
612
 // open with filename in dname
618
 bool SdBaseFile::open(SdBaseFile* dirFile,
613
 bool SdBaseFile::open(SdBaseFile* dirFile,
619
-  const uint8_t dname[11], uint8_t oflag) {
614
+                      const uint8_t dname[11], uint8_t oflag) {
620
   bool emptyFound = false;
615
   bool emptyFound = false;
621
   bool fileFound = false;
616
   bool fileFound = false;
622
   uint8_t index;
617
   uint8_t index;
641
       }
636
       }
642
       // done if no entries follow
637
       // done if no entries follow
643
       if (p->name[0] == DIR_NAME_FREE) break;
638
       if (p->name[0] == DIR_NAME_FREE) break;
644
-    } else if (!memcmp(dname, p->name, 11)) {
639
+    }
640
+    else if (!memcmp(dname, p->name, 11)) {
645
       fileFound = true;
641
       fileFound = true;
646
       break;
642
       break;
647
     }
643
     }
649
   if (fileFound) {
645
   if (fileFound) {
650
     // don't open existing file if O_EXCL
646
     // don't open existing file if O_EXCL
651
     if (oflag & O_EXCL) goto fail;
647
     if (oflag & O_EXCL) goto fail;
652
-  } else {
648
+  }
649
+  else {
653
     // don't create unless O_CREAT and O_WRITE
650
     // don't create unless O_CREAT and O_WRITE
654
     if (!(oflag & O_CREAT) || !(oflag & O_WRITE)) goto fail;
651
     if (!(oflag & O_CREAT) || !(oflag & O_WRITE)) goto fail;
655
     if (emptyFound) {
652
     if (emptyFound) {
656
       index = dirIndex_;
653
       index = dirIndex_;
657
       p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE);
654
       p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE);
658
       if (!p) goto fail;
655
       if (!p) goto fail;
659
-    } else {
656
+    }
657
+    else {
660
       if (dirFile->type_ == FAT_FILE_TYPE_ROOT_FIXED) goto fail;
658
       if (dirFile->type_ == FAT_FILE_TYPE_ROOT_FIXED) goto fail;
661
 
659
 
662
       // add and zero cluster for dirFile - first cluster is in cache for write
660
       // add and zero cluster for dirFile - first cluster is in cache for write
674
     if (dateTime_) {
672
     if (dateTime_) {
675
       // call user date/time function
673
       // call user date/time function
676
       dateTime_(&p->creationDate, &p->creationTime);
674
       dateTime_(&p->creationDate, &p->creationTime);
677
-    } else {
675
+    }
676
+    else {
678
       // use default date/time
677
       // use default date/time
679
       p->creationDate = FAT_DEFAULT_DATE;
678
       p->creationDate = FAT_DEFAULT_DATE;
680
       p->creationTime = FAT_DEFAULT_TIME;
679
       p->creationTime = FAT_DEFAULT_TIME;
688
   }
687
   }
689
   // open entry in cache
688
   // open entry in cache
690
   return openCachedEntry(index, oflag);
689
   return openCachedEntry(index, oflag);
691
-
692
- fail:
690
+fail:
693
   return false;
691
   return false;
694
 }
692
 }
695
 //------------------------------------------------------------------------------
693
 //------------------------------------------------------------------------------
731
   }
729
   }
732
   // open cached entry
730
   // open cached entry
733
   return openCachedEntry(index & 0XF, oflag);
731
   return openCachedEntry(index & 0XF, oflag);
734
-
735
- fail:
732
+fail:
736
   return false;
733
   return false;
737
 }
734
 }
738
 //------------------------------------------------------------------------------
735
 //------------------------------------------------------------------------------
757
   if (DIR_IS_FILE(p)) {
754
   if (DIR_IS_FILE(p)) {
758
     fileSize_ = p->fileSize;
755
     fileSize_ = p->fileSize;
759
     type_ = FAT_FILE_TYPE_NORMAL;
756
     type_ = FAT_FILE_TYPE_NORMAL;
760
-  } else if (DIR_IS_SUBDIR(p)) {
757
+  }
758
+  else if (DIR_IS_SUBDIR(p)) {
761
     if (!vol_->chainSize(firstCluster_, &fileSize_)) goto fail;
759
     if (!vol_->chainSize(firstCluster_, &fileSize_)) goto fail;
762
     type_ = FAT_FILE_TYPE_SUBDIR;
760
     type_ = FAT_FILE_TYPE_SUBDIR;
763
-  } else {
761
+  }
762
+  else {
764
     goto fail;
763
     goto fail;
765
   }
764
   }
766
   // save open flags for read/write
765
   // save open flags for read/write
771
   curPosition_ = 0;
770
   curPosition_ = 0;
772
   if ((oflag & O_TRUNC) && !truncate(0)) return false;
771
   if ((oflag & O_TRUNC) && !truncate(0)) return false;
773
   return oflag & O_AT_END ? seekEnd(0) : true;
772
   return oflag & O_AT_END ? seekEnd(0) : true;
774
-
775
- fail:
773
+fail:
776
   type_ = FAT_FILE_TYPE_CLOSED;
774
   type_ = FAT_FILE_TYPE_CLOSED;
777
   return false;
775
   return false;
778
 }
776
 }
818
       return openCachedEntry(index, oflag);
816
       return openCachedEntry(index, oflag);
819
     }
817
     }
820
   }
818
   }
821
-
822
- fail:
819
+fail:
823
   return false;
820
   return false;
824
 }
821
 }
825
 //------------------------------------------------------------------------------
822
 //------------------------------------------------------------------------------
862
   // '..' is pointer to first cluster of parent. open '../..' to find parent
859
   // '..' is pointer to first cluster of parent. open '../..' to find parent
863
   if (p->firstClusterHigh == 0 && p->firstClusterLow == 0) {
860
   if (p->firstClusterHigh == 0 && p->firstClusterLow == 0) {
864
     if (!file.openRoot(dir->volume())) goto fail;
861
     if (!file.openRoot(dir->volume())) goto fail;
865
-  } else {
866
-    if (!file.openCachedEntry(1, O_READ)) goto fail;
862
+  }
863
+  else if (!file.openCachedEntry(1, O_READ)) {
864
+    goto fail;
867
   }
865
   }
868
   // search for parent in '../..'
866
   // search for parent in '../..'
869
   do {
867
   do {
872
     c |= (uint32_t)entry.firstClusterHigh << 16;
870
     c |= (uint32_t)entry.firstClusterHigh << 16;
873
   } while (c != cluster);
871
   } while (c != cluster);
874
   // open parent
872
   // open parent
875
-  return open(&file, file.curPosition()/32 - 1, O_READ);
876
-
877
- fail:
873
+  return open(&file, file.curPosition() / 32 - 1, O_READ);
874
+fail:
878
   return false;
875
   return false;
879
 }
876
 }
880
 //------------------------------------------------------------------------------
877
 //------------------------------------------------------------------------------
895
     type_ = FAT_FILE_TYPE_ROOT_FIXED;
892
     type_ = FAT_FILE_TYPE_ROOT_FIXED;
896
     firstCluster_ = 0;
893
     firstCluster_ = 0;
897
     fileSize_ = 32 * vol->rootDirEntryCount();
894
     fileSize_ = 32 * vol->rootDirEntryCount();
898
-  } else if (vol->fatType() == 32) {
895
+  }
896
+  else if (vol->fatType() == 32) {
899
     type_ = FAT_FILE_TYPE_ROOT32;
897
     type_ = FAT_FILE_TYPE_ROOT32;
900
     firstCluster_ = vol->rootDirStart();
898
     firstCluster_ = vol->rootDirStart();
901
     if (!vol->chainSize(firstCluster_, &fileSize_)) goto fail;
899
     if (!vol->chainSize(firstCluster_, &fileSize_)) goto fail;
902
-  } else {
900
+  }
901
+  else {
903
     // volume is not initialized, invalid, or FAT12 without support
902
     // volume is not initialized, invalid, or FAT12 without support
904
     return false;
903
     return false;
905
   }
904
   }
915
   dirBlock_ = 0;
914
   dirBlock_ = 0;
916
   dirIndex_ = 0;
915
   dirIndex_ = 0;
917
   return true;
916
   return true;
918
-
919
- fail:
917
+fail:
920
   return false;
918
   return false;
921
 }
919
 }
922
 //------------------------------------------------------------------------------
920
 //------------------------------------------------------------------------------
940
  * \param[in] printSlash Print '/' after directory names if true.
938
  * \param[in] printSlash Print '/' after directory names if true.
941
  */
939
  */
942
 void SdBaseFile::printDirName(const dir_t& dir,
940
 void SdBaseFile::printDirName(const dir_t& dir,
943
-  uint8_t width, bool printSlash) {
941
+                              uint8_t width, bool printSlash) {
944
   uint8_t w = 0;
942
   uint8_t w = 0;
945
   for (uint8_t i = 0; i < 11; i++) {
943
   for (uint8_t i = 0; i < 11; i++) {
946
     if (dir.name[i] == ' ')continue;
944
     if (dir.name[i] == ' ')continue;
962
 }
960
 }
963
 //------------------------------------------------------------------------------
961
 //------------------------------------------------------------------------------
964
 // print uint8_t with width 2
962
 // print uint8_t with width 2
965
-static void print2u( uint8_t v) {
963
+static void print2u(uint8_t v) {
966
   if (v < 10) MYSERIAL.write('0');
964
   if (v < 10) MYSERIAL.write('0');
967
   MYSERIAL.print(v, DEC);
965
   MYSERIAL.print(v, DEC);
968
 }
966
 }
985
 void SdBaseFile::printFatDate(uint16_t fatDate) {
983
 void SdBaseFile::printFatDate(uint16_t fatDate) {
986
   MYSERIAL.print(FAT_YEAR(fatDate));
984
   MYSERIAL.print(FAT_YEAR(fatDate));
987
   MYSERIAL.write('-');
985
   MYSERIAL.write('-');
988
-  print2u( FAT_MONTH(fatDate));
986
+  print2u(FAT_MONTH(fatDate));
989
   MYSERIAL.write('-');
987
   MYSERIAL.write('-');
990
-  print2u( FAT_DAY(fatDate));
988
+  print2u(FAT_DAY(fatDate));
991
 }
989
 }
992
 
990
 
993
 //------------------------------------------------------------------------------
991
 //------------------------------------------------------------------------------
998
  * \param[in] pr Print stream for output.
996
  * \param[in] pr Print stream for output.
999
  * \param[in] fatTime The time field from a directory entry.
997
  * \param[in] fatTime The time field from a directory entry.
1000
  */
998
  */
1001
-void SdBaseFile::printFatTime( uint16_t fatTime) {
1002
-  print2u( FAT_HOUR(fatTime));
999
+void SdBaseFile::printFatTime(uint16_t fatTime) {
1000
+  print2u(FAT_HOUR(fatTime));
1003
   MYSERIAL.write(':');
1001
   MYSERIAL.write(':');
1004
-  print2u( FAT_MINUTE(fatTime));
1002
+  print2u(FAT_MINUTE(fatTime));
1005
   MYSERIAL.write(':');
1003
   MYSERIAL.write(':');
1006
-  print2u( FAT_SECOND(fatTime));
1004
+  print2u(FAT_SECOND(fatTime));
1007
 }
1005
 }
1008
 //------------------------------------------------------------------------------
1006
 //------------------------------------------------------------------------------
1009
 /** Print a file's name to Serial
1007
 /** Print a file's name to Serial
1060
     offset = curPosition_ & 0X1FF;  // offset in block
1058
     offset = curPosition_ & 0X1FF;  // offset in block
1061
     if (type_ == FAT_FILE_TYPE_ROOT_FIXED) {
1059
     if (type_ == FAT_FILE_TYPE_ROOT_FIXED) {
1062
       block = vol_->rootDirStart() + (curPosition_ >> 9);
1060
       block = vol_->rootDirStart() + (curPosition_ >> 9);
1063
-    } else {
1061
+    }
1062
+    else {
1064
       uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_);
1063
       uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_);
1065
       if (offset == 0 && blockOfCluster == 0) {
1064
       if (offset == 0 && blockOfCluster == 0) {
1066
         // start of new cluster
1065
         // start of new cluster
1067
         if (curPosition_ == 0) {
1066
         if (curPosition_ == 0) {
1068
           // use first cluster in file
1067
           // use first cluster in file
1069
           curCluster_ = firstCluster_;
1068
           curCluster_ = firstCluster_;
1070
-        } else {
1069
+        }
1070
+        else {
1071
           // get next cluster from FAT
1071
           // get next cluster from FAT
1072
           if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail;
1072
           if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail;
1073
         }
1073
         }
1082
     // no buffering needed if n == 512
1082
     // no buffering needed if n == 512
1083
     if (n == 512 && block != vol_->cacheBlockNumber()) {
1083
     if (n == 512 && block != vol_->cacheBlockNumber()) {
1084
       if (!vol_->readBlock(block, dst)) goto fail;
1084
       if (!vol_->readBlock(block, dst)) goto fail;
1085
-    } else {
1085
+    }
1086
+    else {
1086
       // read block to cache and copy data to caller
1087
       // read block to cache and copy data to caller
1087
       if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail;
1088
       if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail;
1088
       uint8_t* src = vol_->cache()->data + offset;
1089
       uint8_t* src = vol_->cache()->data + offset;
1093
     toRead -= n;
1094
     toRead -= n;
1094
   }
1095
   }
1095
   return nbyte;
1096
   return nbyte;
1096
-
1097
- fail:
1097
+fail:
1098
   return -1;
1098
   return -1;
1099
 }
1099
 }
1100
 
1100
 
1113
   int16_t n;
1113
   int16_t n;
1114
   // if not a directory file or miss-positioned return an error
1114
   // if not a directory file or miss-positioned return an error
1115
   if (!isDir() || (0X1F & curPosition_)) return -1;
1115
   if (!isDir() || (0X1F & curPosition_)) return -1;
1116
-  
1116
+
1117
   //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly.
1117
   //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly.
1118
   if (longFilename != NULL) longFilename[0] = '\0';
1118
   if (longFilename != NULL) longFilename[0] = '\0';
1119
 
1119
 
1131
     // Fill the long filename if we have a long filename entry.
1131
     // Fill the long filename if we have a long filename entry.
1132
     // Long filename entries are stored before the short filename.
1132
     // Long filename entries are stored before the short filename.
1133
     if (longFilename != NULL && DIR_IS_LONG_NAME(dir)) {
1133
     if (longFilename != NULL && DIR_IS_LONG_NAME(dir)) {
1134
-      vfat_t *VFAT = (vfat_t*)dir;
1134
+      vfat_t* VFAT = (vfat_t*)dir;
1135
       // Sanity-check the VFAT entry. The first cluster is always set to zero. And the sequence number should be higher than 0
1135
       // Sanity-check the VFAT entry. The first cluster is always set to zero. And the sequence number should be higher than 0
1136
       if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) {
1136
       if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) {
1137
         // TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table.
1137
         // TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table.
1138
         n = ((VFAT->sequenceNumber & 0x1F) - 1) * FILENAME_LENGTH;
1138
         n = ((VFAT->sequenceNumber & 0x1F) - 1) * FILENAME_LENGTH;
1139
-        for (uint8_t i=0; i<FILENAME_LENGTH; i++)
1140
-          longFilename[n+i] = (i < 5) ? VFAT->name1[i] : (i < 11) ? VFAT->name2[i-5] : VFAT->name3[i-11];
1139
+        for (uint8_t i = 0; i < FILENAME_LENGTH; i++)
1140
+          longFilename[n + i] = (i < 5) ? VFAT->name1[i] : (i < 11) ? VFAT->name2[i - 5] : VFAT->name3[i - 11];
1141
         // If this VFAT entry is the last one, add a NUL terminator at the end of the string
1141
         // If this VFAT entry is the last one, add a NUL terminator at the end of the string
1142
-        if (VFAT->sequenceNumber & 0x40) longFilename[n+FILENAME_LENGTH] = '\0';
1142
+        if (VFAT->sequenceNumber & 0x40) longFilename[n + FILENAME_LENGTH] = '\0';
1143
       }
1143
       }
1144
     }
1144
     }
1145
     // Return if normal file or subdirectory
1145
     // Return if normal file or subdirectory
1166
 
1166
 
1167
   // return pointer to entry
1167
   // return pointer to entry
1168
   return vol_->cache()->dir + i;
1168
   return vol_->cache()->dir + i;
1169
-
1170
- fail:
1169
+fail:
1171
   return 0;
1170
   return 0;
1172
 }
1171
 }
1173
 //------------------------------------------------------------------------------
1172
 //------------------------------------------------------------------------------
1202
   // write entry to SD
1201
   // write entry to SD
1203
   return vol_->cacheFlush();
1202
   return vol_->cacheFlush();
1204
   return true;
1203
   return true;
1205
-
1206
- fail:
1204
+fail:
1207
   return false;
1205
   return false;
1208
 }
1206
 }
1209
 //------------------------------------------------------------------------------
1207
 //------------------------------------------------------------------------------
1228
   SdBaseFile file;
1226
   SdBaseFile file;
1229
   if (!file.open(dirFile, path, O_WRITE)) goto fail;
1227
   if (!file.open(dirFile, path, O_WRITE)) goto fail;
1230
   return file.remove();
1228
   return file.remove();
1231
-
1232
- fail:
1229
+fail:
1233
   // can't set iostate - static function
1230
   // can't set iostate - static function
1234
   return false;
1231
   return false;
1235
 }
1232
 }
1272
     if (!file.open(dirFile, newPath, O_CREAT | O_EXCL | O_WRITE)) {
1269
     if (!file.open(dirFile, newPath, O_CREAT | O_EXCL | O_WRITE)) {
1273
       goto restore;
1270
       goto restore;
1274
     }
1271
     }
1275
-  } else {
1272
+  }
1273
+  else {
1276
     // don't create missing path prefix components
1274
     // don't create missing path prefix components
1277
     if (!file.mkdir(dirFile, newPath, false)) {
1275
     if (!file.mkdir(dirFile, newPath, false)) {
1278
       goto restore;
1276
       goto restore;
1311
   }
1309
   }
1312
   return vol_->cacheFlush();
1310
   return vol_->cacheFlush();
1313
 
1311
 
1314
- restore:
1312
+restore:
1315
   d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE);
1313
   d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE);
1316
   if (!d) goto fail;
1314
   if (!d) goto fail;
1317
   // restore entry
1315
   // restore entry
1318
   d->name[0] = entry.name[0];
1316
   d->name[0] = entry.name[0];
1319
   vol_->cacheFlush();
1317
   vol_->cacheFlush();
1320
 
1318
 
1321
- fail:
1319
+fail:
1322
   return false;
1320
   return false;
1323
 }
1321
 }
1324
 //------------------------------------------------------------------------------
1322
 //------------------------------------------------------------------------------
1358
   type_ = FAT_FILE_TYPE_NORMAL;
1356
   type_ = FAT_FILE_TYPE_NORMAL;
1359
   flags_ |= O_WRITE;
1357
   flags_ |= O_WRITE;
1360
   return remove();
1358
   return remove();
1361
-
1362
- fail:
1359
+fail:
1363
   return false;
1360
   return false;
1364
 }
1361
 }
1365
 //------------------------------------------------------------------------------
1362
 //------------------------------------------------------------------------------
1384
   rewind();
1381
   rewind();
1385
   while (curPosition_ < fileSize_) {
1382
   while (curPosition_ < fileSize_) {
1386
     // remember position
1383
     // remember position
1387
-    index = curPosition_/32;
1384
+    index = curPosition_ / 32;
1388
 
1385
 
1389
     dir_t* p = readDirCache();
1386
     dir_t* p = readDirCache();
1390
     if (!p) goto fail;
1387
     if (!p) goto fail;
1402
     if (f.isSubDir()) {
1399
     if (f.isSubDir()) {
1403
       // recursively delete
1400
       // recursively delete
1404
       if (!f.rmRfStar()) goto fail;
1401
       if (!f.rmRfStar()) goto fail;
1405
-    } else {
1402
+    }
1403
+    else {
1406
       // ignore read-only
1404
       // ignore read-only
1407
       f.flags_ |= O_WRITE;
1405
       f.flags_ |= O_WRITE;
1408
       if (!f.remove()) goto fail;
1406
       if (!f.remove()) goto fail;
1409
     }
1407
     }
1410
     // position to next entry if required
1408
     // position to next entry if required
1411
-    if (curPosition_ != (32*(index + 1))) {
1412
-      if (!seekSet(32*(index + 1))) goto fail;
1409
+    if (curPosition_ != (32 * (index + 1))) {
1410
+      if (!seekSet(32 * (index + 1))) goto fail;
1413
     }
1411
     }
1414
   }
1412
   }
1415
   // don't try to delete root
1413
   // don't try to delete root
1417
     if (!rmdir()) goto fail;
1415
     if (!rmdir()) goto fail;
1418
   }
1416
   }
1419
   return true;
1417
   return true;
1420
-
1421
- fail:
1418
+fail:
1422
   return false;
1419
   return false;
1423
 }
1420
 }
1424
 //------------------------------------------------------------------------------
1421
 //------------------------------------------------------------------------------
1465
   if (nNew < nCur || curPosition_ == 0) {
1462
   if (nNew < nCur || curPosition_ == 0) {
1466
     // must follow chain from first cluster
1463
     // must follow chain from first cluster
1467
     curCluster_ = firstCluster_;
1464
     curCluster_ = firstCluster_;
1468
-  } else {
1465
+  }
1466
+  else {
1469
     // advance from curPosition
1467
     // advance from curPosition
1470
     nNew -= nCur;
1468
     nNew -= nCur;
1471
   }
1469
   }
1474
   }
1472
   }
1475
   curPosition_ = pos;
1473
   curPosition_ = pos;
1476
 
1474
 
1477
- done:
1475
+done:
1478
   return true;
1476
   return true;
1479
 
1477
 
1480
- fail:
1478
+fail:
1481
   return false;
1479
   return false;
1482
 }
1480
 }
1483
 //------------------------------------------------------------------------------
1481
 //------------------------------------------------------------------------------
1520
   }
1518
   }
1521
   return vol_->cacheFlush();
1519
   return vol_->cacheFlush();
1522
 
1520
 
1523
- fail:
1521
+fail:
1524
   writeError = true;
1522
   writeError = true;
1525
   return false;
1523
   return false;
1526
 }
1524
 }
1560
   // write back entry
1558
   // write back entry
1561
   return vol_->cacheFlush();
1559
   return vol_->cacheFlush();
1562
 
1560
 
1563
- fail:
1561
+fail:
1564
   return false;
1562
   return false;
1565
 }
1563
 }
1566
 //------------------------------------------------------------------------------
1564
 //------------------------------------------------------------------------------
1598
  * the value zero, false, is returned for failure.
1596
  * the value zero, false, is returned for failure.
1599
  */
1597
  */
1600
 bool SdBaseFile::timestamp(uint8_t flags, uint16_t year, uint8_t month,
1598
 bool SdBaseFile::timestamp(uint8_t flags, uint16_t year, uint8_t month,
1601
-         uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) {
1599
+                           uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) {
1602
   uint16_t dirDate;
1600
   uint16_t dirDate;
1603
   uint16_t dirTime;
1601
   uint16_t dirTime;
1604
   dir_t* d;
1602
   dir_t* d;
1605
 
1603
 
1606
   if (!isOpen()
1604
   if (!isOpen()
1607
-    || year < 1980
1608
-    || year > 2107
1609
-    || month < 1
1610
-    || month > 12
1611
-    || day < 1
1612
-    || day > 31
1613
-    || hour > 23
1614
-    || minute > 59
1615
-    || second > 59) {
1616
-      goto fail;
1605
+      || year < 1980
1606
+      || year > 2107
1607
+      || month < 1
1608
+      || month > 12
1609
+      || day < 1
1610
+      || day > 31
1611
+      || hour > 23
1612
+      || minute > 59
1613
+      || second > 59) {
1614
+    goto fail;
1617
   }
1615
   }
1618
   // update directory entry
1616
   // update directory entry
1619
   if (!sync()) goto fail;
1617
   if (!sync()) goto fail;
1637
     d->lastWriteTime = dirTime;
1635
     d->lastWriteTime = dirTime;
1638
   }
1636
   }
1639
   return vol_->cacheFlush();
1637
   return vol_->cacheFlush();
1640
-
1641
- fail:
1638
+fail:
1642
   return false;
1639
   return false;
1643
 }
1640
 }
1644
 //------------------------------------------------------------------------------
1641
 //------------------------------------------------------------------------------
1674
     // free all clusters
1671
     // free all clusters
1675
     if (!vol_->freeChain(firstCluster_)) goto fail;
1672
     if (!vol_->freeChain(firstCluster_)) goto fail;
1676
     firstCluster_ = 0;
1673
     firstCluster_ = 0;
1677
-  } else {
1674
+  }
1675
+  else {
1678
     uint32_t toFree;
1676
     uint32_t toFree;
1679
     if (!vol_->fatGet(curCluster_, &toFree)) goto fail;
1677
     if (!vol_->fatGet(curCluster_, &toFree)) goto fail;
1680
 
1678
 
1696
   // set file to correct position
1694
   // set file to correct position
1697
   return seekSet(newPos);
1695
   return seekSet(newPos);
1698
 
1696
 
1699
- fail:
1697
+fail:
1700
   return false;
1698
   return false;
1701
 }
1699
 }
1702
 //------------------------------------------------------------------------------
1700
 //------------------------------------------------------------------------------
1739
         if (firstCluster_ == 0) {
1737
         if (firstCluster_ == 0) {
1740
           // allocate first cluster of file
1738
           // allocate first cluster of file
1741
           if (!addCluster()) goto fail;
1739
           if (!addCluster()) goto fail;
1742
-        } else {
1740
+        }
1741
+        else {
1743
           curCluster_ = firstCluster_;
1742
           curCluster_ = firstCluster_;
1744
         }
1743
         }
1745
-      } else {
1744
+      }
1745
+      else {
1746
         uint32_t next;
1746
         uint32_t next;
1747
         if (!vol_->fatGet(curCluster_, &next)) goto fail;
1747
         if (!vol_->fatGet(curCluster_, &next)) goto fail;
1748
         if (vol_->isEOC(next)) {
1748
         if (vol_->isEOC(next)) {
1749
           // add cluster if at end of chain
1749
           // add cluster if at end of chain
1750
           if (!addCluster()) goto fail;
1750
           if (!addCluster()) goto fail;
1751
-        } else {
1751
+        }
1752
+        else {
1752
           curCluster_ = next;
1753
           curCluster_ = next;
1753
         }
1754
         }
1754
       }
1755
       }
1768
         vol_->cacheSetBlockNumber(0XFFFFFFFF, false);
1769
         vol_->cacheSetBlockNumber(0XFFFFFFFF, false);
1769
       }
1770
       }
1770
       if (!vol_->writeBlock(block, src)) goto fail;
1771
       if (!vol_->writeBlock(block, src)) goto fail;
1771
-    } else {
1772
+    }
1773
+    else {
1772
       if (blockOffset == 0 && curPosition_ >= fileSize_) {
1774
       if (blockOffset == 0 && curPosition_ >= fileSize_) {
1773
         // start of new block don't need to read into cache
1775
         // start of new block don't need to read into cache
1774
         if (!vol_->cacheFlush()) goto fail;
1776
         if (!vol_->cacheFlush()) goto fail;
1775
         // set cache dirty and SD address of block
1777
         // set cache dirty and SD address of block
1776
         vol_->cacheSetBlockNumber(block, true);
1778
         vol_->cacheSetBlockNumber(block, true);
1777
-      } else {
1779
+      }
1780
+      else {
1778
         // rewrite part of block
1781
         // rewrite part of block
1779
         if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail;
1782
         if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail;
1780
       }
1783
       }
1789
     // update fileSize and insure sync will update dir entry
1792
     // update fileSize and insure sync will update dir entry
1790
     fileSize_ = curPosition_;
1793
     fileSize_ = curPosition_;
1791
     flags_ |= F_FILE_DIR_DIRTY;
1794
     flags_ |= F_FILE_DIR_DIRTY;
1792
-  } else if (dateTime_ && nbyte) {
1795
+  }
1796
+  else if (dateTime_ && nbyte) {
1793
     // insure sync will update modified date and time
1797
     // insure sync will update modified date and time
1794
     flags_ |= F_FILE_DIR_DIRTY;
1798
     flags_ |= F_FILE_DIR_DIRTY;
1795
   }
1799
   }
1799
   }
1803
   }
1800
   return nbyte;
1804
   return nbyte;
1801
 
1805
 
1802
- fail:
1806
+fail:
1803
   // return for write error
1807
   // return for write error
1804
   writeError = true;
1808
   writeError = true;
1805
   return -1;
1809
   return -1;
1807
 //------------------------------------------------------------------------------
1811
 //------------------------------------------------------------------------------
1808
 // suppress cpplint warnings with NOLINT comment
1812
 // suppress cpplint warnings with NOLINT comment
1809
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
1813
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
1810
-void (*SdBaseFile::oldDateTime_)(uint16_t& date, uint16_t& time) = 0;  // NOLINT
1814
+  void (*SdBaseFile::oldDateTime_)(uint16_t& date, uint16_t& time) = 0;  // NOLINT
1811
 #endif  // ALLOW_DEPRECATED_FUNCTIONS
1815
 #endif  // ALLOW_DEPRECATED_FUNCTIONS
1812
 
1816
 
1813
 
1817
 

+ 27
- 27
Marlin/SdBaseFile.h Переглянути файл

158
  * \return Extracted minute [0,59]
158
  * \return Extracted minute [0,59]
159
  */
159
  */
160
 static inline uint8_t FAT_MINUTE(uint16_t fatTime) {
160
 static inline uint8_t FAT_MINUTE(uint16_t fatTime) {
161
-  return(fatTime >> 5) & 0X3F;
161
+  return (fatTime >> 5) & 0X3F;
162
 }
162
 }
163
 /** second part of FAT directory time field
163
 /** second part of FAT directory time field
164
  * Note second/2 is stored in packed time.
164
  * Note second/2 is stored in packed time.
168
  * \return Extracted second [0,58]
168
  * \return Extracted second [0,58]
169
  */
169
  */
170
 static inline uint8_t FAT_SECOND(uint16_t fatTime) {
170
 static inline uint8_t FAT_SECOND(uint16_t fatTime) {
171
-  return 2*(fatTime & 0X1F);
171
+  return 2 * (fatTime & 0X1F);
172
 }
172
 }
173
 /** Default date for file timestamps is 1 Jan 2000 */
173
 /** Default date for file timestamps is 1 Jan 2000 */
174
 uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1;
174
 uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1;
184
   /** Create an instance. */
184
   /** Create an instance. */
185
   SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {}
185
   SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {}
186
   SdBaseFile(const char* path, uint8_t oflag);
186
   SdBaseFile(const char* path, uint8_t oflag);
187
-  ~SdBaseFile() {if(isOpen()) close();}
187
+  ~SdBaseFile() {if (isOpen()) close();}
188
   /**
188
   /**
189
    * writeError is set to true if an error occurs during a write().
189
    * writeError is set to true if an error occurs during a write().
190
    * Set writeError to false before calling print() and/or write() and check
190
    * Set writeError to false before calling print() and/or write() and check
205
   bool close();
205
   bool close();
206
   bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock);
206
   bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock);
207
   bool createContiguous(SdBaseFile* dirFile,
207
   bool createContiguous(SdBaseFile* dirFile,
208
-          const char* path, uint32_t size);
208
+                        const char* path, uint32_t size);
209
   /** \return The current cluster number for a file or directory. */
209
   /** \return The current cluster number for a file or directory. */
210
   uint32_t curCluster() const {return curCluster_;}
210
   uint32_t curCluster() const {return curCluster_;}
211
   /** \return The current position for a file or directory. */
211
   /** \return The current position for a file or directory. */
266
   bool isRoot() const {
266
   bool isRoot() const {
267
     return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32;
267
     return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32;
268
   }
268
   }
269
-  void ls( uint8_t flags = 0, uint8_t indent = 0);
269
+  void ls(uint8_t flags = 0, uint8_t indent = 0);
270
   bool mkdir(SdBaseFile* dir, const char* path, bool pFlag = true);
270
   bool mkdir(SdBaseFile* dir, const char* path, bool pFlag = true);
271
   // alias for backward compactability
271
   // alias for backward compactability
272
   bool makeDir(SdBaseFile* dir, const char* path) {
272
   bool makeDir(SdBaseFile* dir, const char* path) {
279
   bool openRoot(SdVolume* vol);
279
   bool openRoot(SdVolume* vol);
280
   int peek();
280
   int peek();
281
   static void printFatDate(uint16_t fatDate);
281
   static void printFatDate(uint16_t fatDate);
282
-  static void printFatTime( uint16_t fatTime);
282
+  static void printFatTime(uint16_t fatTime);
283
   bool printName();
283
   bool printName();
284
   int16_t read();
284
   int16_t read();
285
   int16_t read(void* buf, uint16_t nbyte);
285
   int16_t read(void* buf, uint16_t nbyte);
309
   bool sync();
309
   bool sync();
310
   bool timestamp(SdBaseFile* file);
310
   bool timestamp(SdBaseFile* file);
311
   bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day,
311
   bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day,
312
-          uint8_t hour, uint8_t minute, uint8_t second);
312
+                 uint8_t hour, uint8_t minute, uint8_t second);
313
   /** Type of file.  You should use isFile() or isDir() instead of type()
313
   /** Type of file.  You should use isFile() or isDir() instead of type()
314
    * if possible.
314
    * if possible.
315
    *
315
    *
320
   /** \return SdVolume that contains this file. */
320
   /** \return SdVolume that contains this file. */
321
   SdVolume* volume() const {return vol_;}
321
   SdVolume* volume() const {return vol_;}
322
   int16_t write(const void* buf, uint16_t nbyte);
322
   int16_t write(const void* buf, uint16_t nbyte);
323
-//------------------------------------------------------------------------------
323
+  //------------------------------------------------------------------------------
324
  private:
324
  private:
325
   // allow SdFat to set cwd_
325
   // allow SdFat to set cwd_
326
   friend class SdFat;
326
   friend class SdFat;
352
   bool addCluster();
352
   bool addCluster();
353
   bool addDirCluster();
353
   bool addDirCluster();
354
   dir_t* cacheDirEntry(uint8_t action);
354
   dir_t* cacheDirEntry(uint8_t action);
355
-  int8_t lsPrintNext( uint8_t flags, uint8_t indent);
355
+  int8_t lsPrintNext(uint8_t flags, uint8_t indent);
356
   static bool make83Name(const char* str, uint8_t* name, const char** ptr);
356
   static bool make83Name(const char* str, uint8_t* name, const char** ptr);
357
   bool mkdir(SdBaseFile* parent, const uint8_t dname[11]);
357
   bool mkdir(SdBaseFile* parent, const uint8_t dname[11]);
358
   bool open(SdBaseFile* dirFile, const uint8_t dname[11], uint8_t oflag);
358
   bool open(SdBaseFile* dirFile, const uint8_t dname[11], uint8_t oflag);
359
   bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags);
359
   bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags);
360
   dir_t* readDirCache();
360
   dir_t* readDirCache();
361
-//------------------------------------------------------------------------------
362
-// to be deleted
363
-  static void printDirName( const dir_t& dir,
364
-    uint8_t width, bool printSlash);
365
-//------------------------------------------------------------------------------
366
-// Deprecated functions  - suppress cpplint warnings with NOLINT comment
361
+  //------------------------------------------------------------------------------
362
+  // to be deleted
363
+  static void printDirName(const dir_t& dir,
364
+                           uint8_t width, bool printSlash);
365
+  //------------------------------------------------------------------------------
366
+  // Deprecated functions  - suppress cpplint warnings with NOLINT comment
367
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
367
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
368
  public:
368
  public:
369
   /** \deprecated Use:
369
   /** \deprecated Use:
375
   bool contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) {  // NOLINT
375
   bool contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) {  // NOLINT
376
     return contiguousRange(&bgnBlock, &endBlock);
376
     return contiguousRange(&bgnBlock, &endBlock);
377
   }
377
   }
378
- /** \deprecated Use:
379
-   * bool createContiguous(SdBaseFile* dirFile,
380
-   *   const char* path, uint32_t size)
381
-   * \param[in] dirFile The directory where the file will be created.
382
-   * \param[in] path A path with a valid DOS 8.3 file name.
383
-   * \param[in] size The desired file size.
384
-   * \return true for success or false for failure.
385
-   */
378
+  /** \deprecated Use:
379
+    * bool createContiguous(SdBaseFile* dirFile,
380
+    *   const char* path, uint32_t size)
381
+    * \param[in] dirFile The directory where the file will be created.
382
+    * \param[in] path A path with a valid DOS 8.3 file name.
383
+    * \param[in] size The desired file size.
384
+    * \return true for success or false for failure.
385
+    */
386
   bool createContiguous(SdBaseFile& dirFile,  // NOLINT
386
   bool createContiguous(SdBaseFile& dirFile,  // NOLINT
387
-    const char* path, uint32_t size) {
387
+                        const char* path, uint32_t size) {
388
     return createContiguous(&dirFile, path, size);
388
     return createContiguous(&dirFile, path, size);
389
   }
389
   }
390
   /** \deprecated Use:
390
   /** \deprecated Use:
422
    * \return true for success or false for failure.
422
    * \return true for success or false for failure.
423
    */
423
    */
424
   bool open(SdBaseFile& dirFile, // NOLINT
424
   bool open(SdBaseFile& dirFile, // NOLINT
425
-    const char* path, uint8_t oflag) {
425
+            const char* path, uint8_t oflag) {
426
     return open(&dirFile, path, oflag);
426
     return open(&dirFile, path, oflag);
427
   }
427
   }
428
   /** \deprecated  Do not use in new apps
428
   /** \deprecated  Do not use in new apps
465
   static bool remove(SdBaseFile& dirFile, const char* path) {  // NOLINT
465
   static bool remove(SdBaseFile& dirFile, const char* path) {  // NOLINT
466
     return remove(&dirFile, path);
466
     return remove(&dirFile, path);
467
   }
467
   }
468
-//------------------------------------------------------------------------------
469
-// rest are private
468
+  //------------------------------------------------------------------------------
469
+  // rest are private
470
  private:
470
  private:
471
   static void (*oldDateTime_)(uint16_t& date, uint16_t& time);  // NOLINT
471
   static void (*oldDateTime_)(uint16_t& date, uint16_t& time);  // NOLINT
472
   static void oldToNew(uint16_t* date, uint16_t* time) {
472
   static void oldToNew(uint16_t* date, uint16_t* time) {

+ 92
- 92
Marlin/SdFatConfig.h Переглянути файл

25
 #if ENABLED(SDSUPPORT)
25
 #if ENABLED(SDSUPPORT)
26
 
26
 
27
 #ifndef SdFatConfig_h
27
 #ifndef SdFatConfig_h
28
-#define SdFatConfig_h
29
-#include <stdint.h>
30
-//------------------------------------------------------------------------------
31
-/**
32
- * To use multiple SD cards set USE_MULTIPLE_CARDS nonzero.
33
- *
34
- * Using multiple cards costs 400 - 500  bytes of flash.
35
- *
36
- * Each card requires about 550 bytes of SRAM so use of a Mega is recommended.
37
- */
38
-#define USE_MULTIPLE_CARDS 0
39
-//------------------------------------------------------------------------------
40
-/**
41
- * Call flush for endl if ENDL_CALLS_FLUSH is nonzero
42
- *
43
- * The standard for iostreams is to call flush.  This is very costly for
44
- * SdFat.  Each call to flush causes 2048 bytes of I/O to the SD.
45
- *
46
- * SdFat has a single 512 byte buffer for SD I/O so it must write the current
47
- * data block to the SD, read the directory block from the SD, update the
48
- * directory entry, write the directory block to the SD and read the data
49
- * block back into the buffer.
50
- *
51
- * The SD flash memory controller is not designed for this many rewrites
52
- * so performance may be reduced by more than a factor of 100.
53
- *
54
- * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force
55
- * all data to be written to the SD.
56
- */
57
-#define ENDL_CALLS_FLUSH 0
58
-//------------------------------------------------------------------------------
59
-/**
60
- * Allow use of deprecated functions if ALLOW_DEPRECATED_FUNCTIONS is nonzero
61
- */
62
-#define ALLOW_DEPRECATED_FUNCTIONS 1
63
-//------------------------------------------------------------------------------
64
-/**
65
- * Allow FAT12 volumes if FAT12_SUPPORT is nonzero.
66
- * FAT12 has not been well tested.
67
- */
68
-#define FAT12_SUPPORT 0
69
-//------------------------------------------------------------------------------
70
-/**
71
- * SPI init rate for SD initialization commands. Must be 5 (F_CPU/64)
72
- * or 6 (F_CPU/128).
73
- */
74
-#define SPI_SD_INIT_RATE 5
75
-//------------------------------------------------------------------------------
76
-/**
77
- * Set the SS pin high for hardware SPI.  If SS is chip select for another SPI
78
- * device this will disable that device during the SD init phase.
79
- */
80
-#define SET_SPI_SS_HIGH 1
81
-//------------------------------------------------------------------------------
82
-/**
83
- * Define MEGA_SOFT_SPI nonzero to use software SPI on Mega Arduinos.
84
- * Pins used are SS 10, MOSI 11, MISO 12, and SCK 13.
85
- *
86
- * MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used
87
- * on Mega Arduinos.  Software SPI works well with GPS Shield V1.1
88
- * but many SD cards will fail with GPS Shield V1.0.
89
- */
90
-#define MEGA_SOFT_SPI 0
91
-//------------------------------------------------------------------------------
92
-/**
93
- * Set USE_SOFTWARE_SPI nonzero to always use software SPI.
94
- */
95
-#define USE_SOFTWARE_SPI 0
96
-// define software SPI pins so Mega can use unmodified 168/328 shields
97
-/** Software SPI chip select pin for the SD */
98
-uint8_t const SOFT_SPI_CS_PIN = 10;
99
-/** Software SPI Master Out Slave In pin */
100
-uint8_t const SOFT_SPI_MOSI_PIN = 11;
101
-/** Software SPI Master In Slave Out pin */
102
-uint8_t const SOFT_SPI_MISO_PIN = 12;
103
-/** Software SPI Clock pin */
104
-uint8_t const SOFT_SPI_SCK_PIN = 13;
105
-//------------------------------------------------------------------------------
106
-/**
107
- * The __cxa_pure_virtual function is an error handler that is invoked when
108
- * a pure virtual function is called.
109
- */
110
-#define USE_CXA_PURE_VIRTUAL 1
28
+  #define SdFatConfig_h
29
+  #include <stdint.h>
30
+  //------------------------------------------------------------------------------
31
+  /**
32
+  * To use multiple SD cards set USE_MULTIPLE_CARDS nonzero.
33
+  *
34
+  * Using multiple cards costs 400 - 500  bytes of flash.
35
+  *
36
+  * Each card requires about 550 bytes of SRAM so use of a Mega is recommended.
37
+  */
38
+  #define USE_MULTIPLE_CARDS 0
39
+  //------------------------------------------------------------------------------
40
+  /**
41
+  * Call flush for endl if ENDL_CALLS_FLUSH is nonzero
42
+  *
43
+  * The standard for iostreams is to call flush.  This is very costly for
44
+  * SdFat.  Each call to flush causes 2048 bytes of I/O to the SD.
45
+  *
46
+  * SdFat has a single 512 byte buffer for SD I/O so it must write the current
47
+  * data block to the SD, read the directory block from the SD, update the
48
+  * directory entry, write the directory block to the SD and read the data
49
+  * block back into the buffer.
50
+  *
51
+  * The SD flash memory controller is not designed for this many rewrites
52
+  * so performance may be reduced by more than a factor of 100.
53
+  *
54
+  * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force
55
+  * all data to be written to the SD.
56
+  */
57
+  #define ENDL_CALLS_FLUSH 0
58
+  //------------------------------------------------------------------------------
59
+  /**
60
+  * Allow use of deprecated functions if ALLOW_DEPRECATED_FUNCTIONS is nonzero
61
+  */
62
+  #define ALLOW_DEPRECATED_FUNCTIONS 1
63
+  //------------------------------------------------------------------------------
64
+  /**
65
+  * Allow FAT12 volumes if FAT12_SUPPORT is nonzero.
66
+  * FAT12 has not been well tested.
67
+  */
68
+  #define FAT12_SUPPORT 0
69
+  //------------------------------------------------------------------------------
70
+  /**
71
+  * SPI init rate for SD initialization commands. Must be 5 (F_CPU/64)
72
+  * or 6 (F_CPU/128).
73
+  */
74
+  #define SPI_SD_INIT_RATE 5
75
+  //------------------------------------------------------------------------------
76
+  /**
77
+  * Set the SS pin high for hardware SPI.  If SS is chip select for another SPI
78
+  * device this will disable that device during the SD init phase.
79
+  */
80
+  #define SET_SPI_SS_HIGH 1
81
+  //------------------------------------------------------------------------------
82
+  /**
83
+  * Define MEGA_SOFT_SPI nonzero to use software SPI on Mega Arduinos.
84
+  * Pins used are SS 10, MOSI 11, MISO 12, and SCK 13.
85
+  *
86
+  * MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used
87
+  * on Mega Arduinos.  Software SPI works well with GPS Shield V1.1
88
+  * but many SD cards will fail with GPS Shield V1.0.
89
+  */
90
+  #define MEGA_SOFT_SPI 0
91
+  //------------------------------------------------------------------------------
92
+  /**
93
+  * Set USE_SOFTWARE_SPI nonzero to always use software SPI.
94
+  */
95
+  #define USE_SOFTWARE_SPI 0
96
+  // define software SPI pins so Mega can use unmodified 168/328 shields
97
+  /** Software SPI chip select pin for the SD */
98
+  uint8_t const SOFT_SPI_CS_PIN = 10;
99
+  /** Software SPI Master Out Slave In pin */
100
+  uint8_t const SOFT_SPI_MOSI_PIN = 11;
101
+  /** Software SPI Master In Slave Out pin */
102
+  uint8_t const SOFT_SPI_MISO_PIN = 12;
103
+  /** Software SPI Clock pin */
104
+  uint8_t const SOFT_SPI_SCK_PIN = 13;
105
+  //------------------------------------------------------------------------------
106
+  /**
107
+  * The __cxa_pure_virtual function is an error handler that is invoked when
108
+  * a pure virtual function is called.
109
+  */
110
+  #define USE_CXA_PURE_VIRTUAL 1
111
 
111
 
112
-/** Number of UTF-16 characters per entry */
113
-#define FILENAME_LENGTH 13
112
+  /** Number of UTF-16 characters per entry */
113
+  #define FILENAME_LENGTH 13
114
 
114
 
115
-/**
116
- * Defines for long (vfat) filenames
117
- */
118
-/** Number of VFAT entries used. Every entry has 13 UTF-16 characters */
119
-#define MAX_VFAT_ENTRIES (2)
120
-/** Total size of the buffer used to store the long filenames */
121
-#define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1)
115
+  /**
116
+  * Defines for long (vfat) filenames
117
+  */
118
+  /** Number of VFAT entries used. Every entry has 13 UTF-16 characters */
119
+  #define MAX_VFAT_ENTRIES (2)
120
+  /** Total size of the buffer used to store the long filenames */
121
+  #define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1)
122
 #endif  // SdFatConfig_h
122
 #endif  // SdFatConfig_h
123
 
123
 
124
 
124
 

+ 19
- 19
Marlin/SdFatStructs.h Переглянути файл

55
            */
55
            */
56
   uint8_t  boot;
56
   uint8_t  boot;
57
           /**
57
           /**
58
-            * Head part of Cylinder-head-sector address of the first block in
59
-            * the partition. Legal values are 0-255. Only used in old PC BIOS.
60
-            */
58
+           * Head part of Cylinder-head-sector address of the first block in
59
+           * the partition. Legal values are 0-255. Only used in old PC BIOS.
60
+           */
61
   uint8_t  beginHead;
61
   uint8_t  beginHead;
62
           /**
62
           /**
63
            * Sector part of Cylinder-head-sector address of the first block in
63
            * Sector part of Cylinder-head-sector address of the first block in
337
            * Bits 0-3 -- Zero-based number of active FAT.
337
            * Bits 0-3 -- Zero-based number of active FAT.
338
            *             Only valid if mirroring is disabled.
338
            *             Only valid if mirroring is disabled.
339
            * Bits 4-6 -- Reserved.
339
            * Bits 4-6 -- Reserved.
340
-           * Bit 7	-- 0 means the FAT is mirrored at runtime into all FATs.
341
-	         *        -- 1 means only one FAT is active; it is the one referenced
342
-	         *             in bits 0-3.
343
-           * Bits 8-15 	-- Reserved.
340
+           * Bit 7  -- 0 means the FAT is mirrored at runtime into all FATs.
341
+           *        -- 1 means only one FAT is active; it is the one referenced
342
+           *             in bits 0-3.
343
+           * Bits 8-15  -- Reserved.
344
            */
344
            */
345
   uint16_t fat32Flags;
345
   uint16_t fat32Flags;
346
           /**
346
           /**
468
  * \brief FAT short directory entry
468
  * \brief FAT short directory entry
469
  *
469
  *
470
  * Short means short 8.3 name, not the entry size.
470
  * Short means short 8.3 name, not the entry size.
471
- *  
472
- * Date Format. A FAT directory entry date stamp is a 16-bit field that is 
471
+ *
472
+ * Date Format. A FAT directory entry date stamp is a 16-bit field that is
473
  * basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the
473
  * basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the
474
- * format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 
474
+ * format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the
475
  * 16-bit word):
475
  * 16-bit word):
476
- *   
477
- * Bits 9-15: Count of years from 1980, valid value range 0-127 
476
+ *
477
+ * Bits 9-15: Count of years from 1980, valid value range 0-127
478
  * inclusive (1980-2107).
478
  * inclusive (1980-2107).
479
- *   
479
+ *
480
  * Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.
480
  * Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.
481
  *
481
  *
482
  * Bits 0-4: Day of month, valid value range 1-31 inclusive.
482
  * Bits 0-4: Day of month, valid value range 1-31 inclusive.
483
  *
483
  *
484
  * Time Format. A FAT directory entry time stamp is a 16-bit field that has
484
  * Time Format. A FAT directory entry time stamp is a 16-bit field that has
485
- * a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the 
485
+ * a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the
486
  * 16-bit word, bit 15 is the MSB of the 16-bit word).
486
  * 16-bit word, bit 15 is the MSB of the 16-bit word).
487
- *   
487
+ *
488
  * Bits 11-15: Hours, valid value range 0-23 inclusive.
488
  * Bits 11-15: Hours, valid value range 0-23 inclusive.
489
- * 
489
+ *
490
  * Bits 5-10: Minutes, valid value range 0-59 inclusive.
490
  * Bits 5-10: Minutes, valid value range 0-59 inclusive.
491
- *      
491
+ *
492
  * Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).
492
  * Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).
493
- *   
493
+ *
494
  * The valid time range is from Midnight 00:00:00 to 23:59:58.
494
  * The valid time range is from Midnight 00:00:00 to 23:59:58.
495
  */
495
  */
496
 struct directoryEntry {
496
 struct directoryEntry {
548
  *
548
  *
549
  * directoryVFATEntries are found in the same list as normal directoryEntry.
549
  * directoryVFATEntries are found in the same list as normal directoryEntry.
550
  * But have the attribute field set to DIR_ATT_LONG_NAME.
550
  * But have the attribute field set to DIR_ATT_LONG_NAME.
551
- * 
551
+ *
552
  * Long filenames are saved in multiple directoryVFATEntries.
552
  * Long filenames are saved in multiple directoryVFATEntries.
553
  * Each entry containing 13 UTF-16 characters.
553
  * Each entry containing 13 UTF-16 characters.
554
  */
554
  */

+ 5
- 5
Marlin/SdFatUtil.cpp Переглянути файл

33
   return &top - reinterpret_cast<char*>(sbrk(0));
33
   return &top - reinterpret_cast<char*>(sbrk(0));
34
 }
34
 }
35
 #else  // __arm__
35
 #else  // __arm__
36
-extern char *__brkval;
36
+extern char* __brkval;
37
 extern char __bss_end;
37
 extern char __bss_end;
38
 /** Amount of free RAM
38
 /** Amount of free RAM
39
  * \return The number of free bytes.
39
  * \return The number of free bytes.
50
  * \param[in] pr Print object for output.
50
  * \param[in] pr Print object for output.
51
  * \param[in] str Pointer to string stored in flash memory.
51
  * \param[in] str Pointer to string stored in flash memory.
52
  */
52
  */
53
-void SdFatUtil::print_P( PGM_P str) {
53
+void SdFatUtil::print_P(PGM_P str) {
54
   for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c);
54
   for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c);
55
 }
55
 }
56
 //------------------------------------------------------------------------------
56
 //------------------------------------------------------------------------------
59
  * \param[in] pr Print object for output.
59
  * \param[in] pr Print object for output.
60
  * \param[in] str Pointer to string stored in flash memory.
60
  * \param[in] str Pointer to string stored in flash memory.
61
  */
61
  */
62
-void SdFatUtil::println_P( PGM_P str) {
63
-  print_P( str);
62
+void SdFatUtil::println_P(PGM_P str) {
63
+  print_P(str);
64
   MYSERIAL.println();
64
   MYSERIAL.println();
65
 }
65
 }
66
 //------------------------------------------------------------------------------
66
 //------------------------------------------------------------------------------
77
  * \param[in] str Pointer to string stored in flash memory.
77
  * \param[in] str Pointer to string stored in flash memory.
78
  */
78
  */
79
 void SdFatUtil::SerialPrintln_P(PGM_P str) {
79
 void SdFatUtil::SerialPrintln_P(PGM_P str) {
80
-  println_P( str);
80
+  println_P(str);
81
 }
81
 }
82
 #endif
82
 #endif

+ 2
- 2
Marlin/SdFatUtil.h Переглянути файл

35
 
35
 
36
 namespace SdFatUtil {
36
 namespace SdFatUtil {
37
   int FreeRam();
37
   int FreeRam();
38
-  void print_P( PGM_P str);
39
-  void println_P( PGM_P str);
38
+  void print_P(PGM_P str);
39
+  void println_P(PGM_P str);
40
   void SerialPrint_P(PGM_P str);
40
   void SerialPrint_P(PGM_P str);
41
   void SerialPrintln_P(PGM_P str);
41
   void SerialPrintln_P(PGM_P str);
42
 }
42
 }

+ 4
- 6
Marlin/SdFile.cpp Переглянути файл

55
  * Use writeError to check for errors.
55
  * Use writeError to check for errors.
56
  */
56
  */
57
 #if ARDUINO >= 100
57
 #if ARDUINO >= 100
58
-size_t SdFile::write(uint8_t b)
59
-{
58
+  size_t SdFile::write(uint8_t b) {
60
     return SdBaseFile::write(&b, 1);
59
     return SdBaseFile::write(&b, 1);
61
-}
60
+  }
62
 #else
61
 #else
63
-void SdFile::write(uint8_t b)
64
-{
62
+  void SdFile::write(uint8_t b) {
65
     SdBaseFile::write(&b, 1);
63
     SdBaseFile::write(&b, 1);
66
-}
64
+  }
67
 #endif
65
 #endif
68
 //------------------------------------------------------------------------------
66
 //------------------------------------------------------------------------------
69
 /** Write a string to a file. Used by the Arduino Print class.
67
 /** Write a string to a file. Used by the Arduino Print class.

+ 2
- 2
Marlin/SdFile.h Переглянути файл

38
   SdFile() {}
38
   SdFile() {}
39
   SdFile(const char* name, uint8_t oflag);
39
   SdFile(const char* name, uint8_t oflag);
40
   #if ARDUINO >= 100
40
   #if ARDUINO >= 100
41
-      size_t write(uint8_t b);
41
+    size_t write(uint8_t b);
42
   #else
42
   #else
43
    void write(uint8_t b);
43
    void write(uint8_t b);
44
   #endif
44
   #endif
45
-  
45
+
46
   int16_t write(const void* buf, uint16_t nbyte);
46
   int16_t write(const void* buf, uint16_t nbyte);
47
   void write(const char* str);
47
   void write(const char* str);
48
   void write_P(PGM_P str);
48
   void write_P(PGM_P str);

+ 7
- 7
Marlin/SdInfo.h Переглянути файл

118
   /** Manufacturing date month */
118
   /** Manufacturing date month */
119
   unsigned char mdt_month : 4;
119
   unsigned char mdt_month : 4;
120
   /** Manufacturing date year low digit */
120
   /** Manufacturing date year low digit */
121
-  unsigned char mdt_year_low :4;
121
+  unsigned char mdt_year_low : 4;
122
   // byte 15
122
   // byte 15
123
   /** not used always 1 */
123
   /** not used always 1 */
124
   unsigned char always1 : 1;
124
   unsigned char always1 : 1;
125
   /** CRC7 checksum */
125
   /** CRC7 checksum */
126
   unsigned char crc : 7;
126
   unsigned char crc : 7;
127
-}cid_t;
127
+} cid_t;
128
 //------------------------------------------------------------------------------
128
 //------------------------------------------------------------------------------
129
 /** CSD for version 1.00 cards */
129
 /** CSD for version 1.00 cards */
130
 typedef struct CSDV1 {
130
 typedef struct CSDV1 {
146
   unsigned char c_size_high : 2;
146
   unsigned char c_size_high : 2;
147
   unsigned char reserved2 : 2;
147
   unsigned char reserved2 : 2;
148
   unsigned char dsr_imp : 1;
148
   unsigned char dsr_imp : 1;
149
-  unsigned char read_blk_misalign :1;
149
+  unsigned char read_blk_misalign : 1;
150
   unsigned char write_blk_misalign : 1;
150
   unsigned char write_blk_misalign : 1;
151
   unsigned char read_bl_partial : 1;
151
   unsigned char read_bl_partial : 1;
152
   // byte 7
152
   // byte 7
154
   // byte 8
154
   // byte 8
155
   unsigned char vdd_r_curr_max : 3;
155
   unsigned char vdd_r_curr_max : 3;
156
   unsigned char vdd_r_curr_min : 3;
156
   unsigned char vdd_r_curr_min : 3;
157
-  unsigned char c_size_low :2;
157
+  unsigned char c_size_low : 2;
158
   // byte 9
158
   // byte 9
159
   unsigned char c_size_mult_high : 2;
159
   unsigned char c_size_mult_high : 2;
160
   unsigned char vdd_w_cur_max : 3;
160
   unsigned char vdd_w_cur_max : 3;
186
   // byte 15
186
   // byte 15
187
   unsigned char always1 : 1;
187
   unsigned char always1 : 1;
188
   unsigned char crc : 7;
188
   unsigned char crc : 7;
189
-}csd1_t;
189
+} csd1_t;
190
 //------------------------------------------------------------------------------
190
 //------------------------------------------------------------------------------
191
 /** CSD for version 2.00 cards */
191
 /** CSD for version 2.00 cards */
192
 typedef struct CSDV2 {
192
 typedef struct CSDV2 {
212
   unsigned char reserved2 : 4;
212
   unsigned char reserved2 : 4;
213
   unsigned char dsr_imp : 1;
213
   unsigned char dsr_imp : 1;
214
   /** fixed to 0 */
214
   /** fixed to 0 */
215
-  unsigned char read_blk_misalign :1;
215
+  unsigned char read_blk_misalign : 1;
216
   /** fixed to 0 */
216
   /** fixed to 0 */
217
   unsigned char write_blk_misalign : 1;
217
   unsigned char write_blk_misalign : 1;
218
   /** fixed to 0 - no partial read */
218
   /** fixed to 0 - no partial read */
268
   unsigned char always1 : 1;
268
   unsigned char always1 : 1;
269
   /** checksum */
269
   /** checksum */
270
   unsigned char crc : 7;
270
   unsigned char crc : 7;
271
-}csd2_t;
271
+} csd2_t;
272
 //------------------------------------------------------------------------------
272
 //------------------------------------------------------------------------------
273
 /** union of old and new style CSD register */
273
 /** union of old and new style CSD register */
274
 union csd_t {
274
 union csd_t {

+ 53
- 47
Marlin/SdVolume.cpp Переглянути файл

23
 #include "SdVolume.h"
23
 #include "SdVolume.h"
24
 //------------------------------------------------------------------------------
24
 //------------------------------------------------------------------------------
25
 #if !USE_MULTIPLE_CARDS
25
 #if !USE_MULTIPLE_CARDS
26
-// raw block cache
27
-uint32_t SdVolume::cacheBlockNumber_;  // current block number
28
-cache_t  SdVolume::cacheBuffer_;       // 512 byte cache for Sd2Card
29
-Sd2Card* SdVolume::sdCard_;            // pointer to SD card object
30
-bool     SdVolume::cacheDirty_;        // cacheFlush() will write block if true
31
-uint32_t SdVolume::cacheMirrorBlock_;  // mirror  block for second FAT
26
+  // raw block cache
27
+  uint32_t SdVolume::cacheBlockNumber_;  // current block number
28
+  cache_t  SdVolume::cacheBuffer_;       // 512 byte cache for Sd2Card
29
+  Sd2Card* SdVolume::sdCard_;            // pointer to SD card object
30
+  bool     SdVolume::cacheDirty_;        // cacheFlush() will write block if true
31
+  uint32_t SdVolume::cacheMirrorBlock_;  // mirror  block for second FAT
32
 #endif  // USE_MULTIPLE_CARDS
32
 #endif  // USE_MULTIPLE_CARDS
33
 //------------------------------------------------------------------------------
33
 //------------------------------------------------------------------------------
34
 // find a contiguous group of clusters
34
 // find a contiguous group of clusters
50
 
50
 
51
     // don't save new start location
51
     // don't save new start location
52
     setStart = false;
52
     setStart = false;
53
-  } else {
53
+  }
54
+  else {
54
     // start at likely place for free cluster
55
     // start at likely place for free cluster
55
     bgnCluster = allocSearchStart_;
56
     bgnCluster = allocSearchStart_;
56
 
57
 
75
     if (f != 0) {
76
     if (f != 0) {
76
       // cluster in use try next cluster as bgnCluster
77
       // cluster in use try next cluster as bgnCluster
77
       bgnCluster = endCluster + 1;
78
       bgnCluster = endCluster + 1;
78
-    } else if ((endCluster - bgnCluster + 1) == count) {
79
+    }
80
+    else if ((endCluster - bgnCluster + 1) == count) {
79
       // done - found space
81
       // done - found space
80
       break;
82
       break;
81
     }
83
     }
99
   if (setStart) allocSearchStart_ = bgnCluster + 1;
101
   if (setStart) allocSearchStart_ = bgnCluster + 1;
100
 
102
 
101
   return true;
103
   return true;
102
-
103
- fail:
104
+fail:
104
   return false;
105
   return false;
105
 }
106
 }
106
 //------------------------------------------------------------------------------
107
 //------------------------------------------------------------------------------
119
     cacheDirty_ = 0;
120
     cacheDirty_ = 0;
120
   }
121
   }
121
   return true;
122
   return true;
122
-
123
- fail:
123
+fail:
124
   return false;
124
   return false;
125
 }
125
 }
126
 //------------------------------------------------------------------------------
126
 //------------------------------------------------------------------------------
132
   }
132
   }
133
   if (dirty) cacheDirty_ = true;
133
   if (dirty) cacheDirty_ = true;
134
   return true;
134
   return true;
135
-
136
- fail:
135
+fail:
137
   return false;
136
   return false;
138
 }
137
 }
139
 //------------------------------------------------------------------------------
138
 //------------------------------------------------------------------------------
146
   } while (!isEOC(cluster));
145
   } while (!isEOC(cluster));
147
   *size = s;
146
   *size = s;
148
   return true;
147
   return true;
149
-
150
- fail:
148
+fail:
151
   return false;
149
   return false;
152
 }
150
 }
153
 //------------------------------------------------------------------------------
151
 //------------------------------------------------------------------------------
173
   }
171
   }
174
   if (fatType_ == 16) {
172
   if (fatType_ == 16) {
175
     lba = fatStartBlock_ + (cluster >> 8);
173
     lba = fatStartBlock_ + (cluster >> 8);
176
-  } else if (fatType_ == 32) {
174
+  }
175
+  else if (fatType_ == 32) {
177
     lba = fatStartBlock_ + (cluster >> 7);
176
     lba = fatStartBlock_ + (cluster >> 7);
178
-  } else {
177
+  }
178
+  else {
179
     goto fail;
179
     goto fail;
180
   }
180
   }
181
   if (lba != cacheBlockNumber_) {
181
   if (lba != cacheBlockNumber_) {
183
   }
183
   }
184
   if (fatType_ == 16) {
184
   if (fatType_ == 16) {
185
     *value = cacheBuffer_.fat16[cluster & 0XFF];
185
     *value = cacheBuffer_.fat16[cluster & 0XFF];
186
-  } else {
186
+  }
187
+  else {
187
     *value = cacheBuffer_.fat32[cluster & 0X7F] & FAT32MASK;
188
     *value = cacheBuffer_.fat32[cluster & 0X7F] & FAT32MASK;
188
   }
189
   }
189
   return true;
190
   return true;
190
-
191
- fail:
191
+fail:
192
   return false;
192
   return false;
193
 }
193
 }
194
 //------------------------------------------------------------------------------
194
 //------------------------------------------------------------------------------
231
   }
231
   }
232
   if (fatType_ == 16) {
232
   if (fatType_ == 16) {
233
     lba = fatStartBlock_ + (cluster >> 8);
233
     lba = fatStartBlock_ + (cluster >> 8);
234
-  } else if (fatType_ == 32) {
234
+  }
235
+  else if (fatType_ == 32) {
235
     lba = fatStartBlock_ + (cluster >> 7);
236
     lba = fatStartBlock_ + (cluster >> 7);
236
-  } else {
237
+  }
238
+  else {
237
     goto fail;
239
     goto fail;
238
   }
240
   }
239
   if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail;
241
   if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail;
240
   // store entry
242
   // store entry
241
   if (fatType_ == 16) {
243
   if (fatType_ == 16) {
242
     cacheBuffer_.fat16[cluster & 0XFF] = value;
244
     cacheBuffer_.fat16[cluster & 0XFF] = value;
243
-  } else {
245
+  }
246
+  else {
244
     cacheBuffer_.fat32[cluster & 0X7F] = value;
247
     cacheBuffer_.fat32[cluster & 0X7F] = value;
245
   }
248
   }
246
   // mirror second FAT
249
   // mirror second FAT
247
   if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_;
250
   if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_;
248
   return true;
251
   return true;
249
-
250
- fail:
252
+fail:
251
   return false;
253
   return false;
252
 }
254
 }
253
 //------------------------------------------------------------------------------
255
 //------------------------------------------------------------------------------
268
   } while (!isEOC(cluster));
270
   } while (!isEOC(cluster));
269
 
271
 
270
   return true;
272
   return true;
271
-
272
- fail:
273
+fail:
273
   return false;
274
   return false;
274
 }
275
 }
275
 //------------------------------------------------------------------------------
276
 //------------------------------------------------------------------------------
284
 
285
 
285
   if (fatType_ == 16) {
286
   if (fatType_ == 16) {
286
     n = 256;
287
     n = 256;
287
-  } else if (fatType_ == 32) {
288
+  }
289
+  else if (fatType_ == 32) {
288
     n = 128;
290
     n = 128;
289
-  } else {
291
+  }
292
+  else {
290
     // put FAT12 here
293
     // put FAT12 here
291
     return -1;
294
     return -1;
292
   }
295
   }
298
       for (uint16_t i = 0; i < n; i++) {
301
       for (uint16_t i = 0; i < n; i++) {
299
         if (cacheBuffer_.fat16[i] == 0) free++;
302
         if (cacheBuffer_.fat16[i] == 0) free++;
300
       }
303
       }
301
-    } else {
304
+    }
305
+    else {
302
       for (uint16_t i = 0; i < n; i++) {
306
       for (uint16_t i = 0; i < n; i++) {
303
         if (cacheBuffer_.fat32[i] == 0) free++;
307
         if (cacheBuffer_.fat32[i] == 0) free++;
304
       }
308
       }
338
   if (part) {
342
   if (part) {
339
     if (part > 4)goto fail;
343
     if (part > 4)goto fail;
340
     if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail;
344
     if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail;
341
-    part_t* p = &cacheBuffer_.mbr.part[part-1];
342
-    if ((p->boot & 0X7F) !=0  ||
343
-      p->totalSectors < 100 ||
344
-      p->firstSector == 0) {
345
+    part_t* p = &cacheBuffer_.mbr.part[part - 1];
346
+    if ((p->boot & 0X7F) != 0  ||
347
+        p->totalSectors < 100 ||
348
+        p->firstSector == 0) {
345
       // not a valid partition
349
       // not a valid partition
346
       goto fail;
350
       goto fail;
347
     }
351
     }
350
   if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail;
354
   if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail;
351
   fbs = &cacheBuffer_.fbs32;
355
   fbs = &cacheBuffer_.fbs32;
352
   if (fbs->bytesPerSector != 512 ||
356
   if (fbs->bytesPerSector != 512 ||
353
-    fbs->fatCount == 0 ||
354
-    fbs->reservedSectorCount == 0 ||
355
-    fbs->sectorsPerCluster == 0) {
356
-       // not valid FAT volume
357
-      goto fail;
357
+      fbs->fatCount == 0 ||
358
+      fbs->reservedSectorCount == 0 ||
359
+      fbs->sectorsPerCluster == 0) {
360
+    // not valid FAT volume
361
+    goto fail;
358
   }
362
   }
359
   fatCount_ = fbs->fatCount;
363
   fatCount_ = fbs->fatCount;
360
   blocksPerCluster_ = fbs->sectorsPerCluster;
364
   blocksPerCluster_ = fbs->sectorsPerCluster;
365
     if (clusterSizeShift_++ > 7) goto fail;
369
     if (clusterSizeShift_++ > 7) goto fail;
366
   }
370
   }
367
   blocksPerFat_ = fbs->sectorsPerFat16 ?
371
   blocksPerFat_ = fbs->sectorsPerFat16 ?
368
-                    fbs->sectorsPerFat16 : fbs->sectorsPerFat32;
372
+                  fbs->sectorsPerFat16 : fbs->sectorsPerFat32;
369
 
373
 
370
   fatStartBlock_ = volumeStartBlock + fbs->reservedSectorCount;
374
   fatStartBlock_ = volumeStartBlock + fbs->reservedSectorCount;
371
 
375
 
376
   rootDirStart_ = fatStartBlock_ + fbs->fatCount * blocksPerFat_;
380
   rootDirStart_ = fatStartBlock_ + fbs->fatCount * blocksPerFat_;
377
 
381
 
378
   // data start for FAT16 and FAT32
382
   // data start for FAT16 and FAT32
379
-  dataStartBlock_ = rootDirStart_ + ((32 * fbs->rootDirEntryCount + 511)/512);
383
+  dataStartBlock_ = rootDirStart_ + ((32 * fbs->rootDirEntryCount + 511) / 512);
380
 
384
 
381
   // total blocks for FAT16 or FAT32
385
   // total blocks for FAT16 or FAT32
382
   totalBlocks = fbs->totalSectors16 ?
386
   totalBlocks = fbs->totalSectors16 ?
383
-                           fbs->totalSectors16 : fbs->totalSectors32;
387
+                fbs->totalSectors16 : fbs->totalSectors32;
388
+
384
   // total data blocks
389
   // total data blocks
385
   clusterCount_ = totalBlocks - (dataStartBlock_ - volumeStartBlock);
390
   clusterCount_ = totalBlocks - (dataStartBlock_ - volumeStartBlock);
386
 
391
 
391
   if (clusterCount_ < 4085) {
396
   if (clusterCount_ < 4085) {
392
     fatType_ = 12;
397
     fatType_ = 12;
393
     if (!FAT12_SUPPORT) goto fail;
398
     if (!FAT12_SUPPORT) goto fail;
394
-  } else if (clusterCount_ < 65525) {
399
+  }
400
+  else if (clusterCount_ < 65525) {
395
     fatType_ = 16;
401
     fatType_ = 16;
396
-  } else {
402
+  }
403
+  else {
397
     rootDirStart_ = fbs->fat32RootCluster;
404
     rootDirStart_ = fbs->fat32RootCluster;
398
     fatType_ = 32;
405
     fatType_ = 32;
399
   }
406
   }
400
   return true;
407
   return true;
401
-
402
- fail:
408
+fail:
403
   return false;
409
   return false;
404
 }
410
 }
405
 #endif
411
 #endif

+ 11
- 7
Marlin/SdVolume.h Переглянути файл

117
    * \return true for success or false for failure
117
    * \return true for success or false for failure
118
    */
118
    */
119
   bool dbgFat(uint32_t n, uint32_t* v) {return fatGet(n, v);}
119
   bool dbgFat(uint32_t n, uint32_t* v) {return fatGet(n, v);}
120
-//------------------------------------------------------------------------------
120
+  //------------------------------------------------------------------------------
121
  private:
121
  private:
122
   // Allow SdBaseFile access to SdVolume private data.
122
   // Allow SdBaseFile access to SdVolume private data.
123
   friend class SdBaseFile;
123
   friend class SdBaseFile;
154
   //----------------------------------------------------------------------------
154
   //----------------------------------------------------------------------------
155
   bool allocContiguous(uint32_t count, uint32_t* curCluster);
155
   bool allocContiguous(uint32_t count, uint32_t* curCluster);
156
   uint8_t blockOfCluster(uint32_t position) const {
156
   uint8_t blockOfCluster(uint32_t position) const {
157
-          return (position >> 9) & (blocksPerCluster_ - 1);}
157
+    return (position >> 9) & (blocksPerCluster_ - 1);
158
+  }
158
   uint32_t clusterStartBlock(uint32_t cluster) const {
159
   uint32_t clusterStartBlock(uint32_t cluster) const {
159
-           return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);}
160
+    return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);
161
+  }
160
   uint32_t blockNumber(uint32_t cluster, uint32_t position) const {
162
   uint32_t blockNumber(uint32_t cluster, uint32_t position) const {
161
-           return clusterStartBlock(cluster) + blockOfCluster(position);}
162
-  cache_t *cache() {return &cacheBuffer_;}
163
+    return clusterStartBlock(cluster) + blockOfCluster(position);
164
+  }
165
+  cache_t* cache() {return &cacheBuffer_;}
163
   uint32_t cacheBlockNumber() {return cacheBlockNumber_;}
166
   uint32_t cacheBlockNumber() {return cacheBlockNumber_;}
164
 #if USE_MULTIPLE_CARDS
167
 #if USE_MULTIPLE_CARDS
165
   bool cacheFlush();
168
   bool cacheFlush();
187
     return  cluster >= FAT32EOC_MIN;
190
     return  cluster >= FAT32EOC_MIN;
188
   }
191
   }
189
   bool readBlock(uint32_t block, uint8_t* dst) {
192
   bool readBlock(uint32_t block, uint8_t* dst) {
190
-    return sdCard_->readBlock(block, dst);}
193
+    return sdCard_->readBlock(block, dst);
194
+  }
191
   bool writeBlock(uint32_t block, const uint8_t* dst) {
195
   bool writeBlock(uint32_t block, const uint8_t* dst) {
192
     return sdCard_->writeBlock(block, dst);
196
     return sdCard_->writeBlock(block, dst);
193
   }
197
   }
194
-//------------------------------------------------------------------------------
198
+  //------------------------------------------------------------------------------
195
   // Deprecated functions  - suppress cpplint warnings with NOLINT comment
199
   // Deprecated functions  - suppress cpplint warnings with NOLINT comment
196
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
200
 #if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)
197
  public:
201
  public:

+ 1
- 1
Marlin/blinkm.cpp Переглянути файл

9
 #include "blinkm.h"
9
 #include "blinkm.h"
10
 
10
 
11
 void SendColors(byte red, byte grn, byte blu) {
11
 void SendColors(byte red, byte grn, byte blu) {
12
-  Wire.begin(); 
12
+  Wire.begin();
13
   Wire.beginTransmission(0x09);
13
   Wire.beginTransmission(0x09);
14
   Wire.write('o');                    //to disable ongoing script, only needs to be used once
14
   Wire.write('o');                    //to disable ongoing script, only needs to be used once
15
   Wire.write('n');
15
   Wire.write('n');

+ 1
- 1
Marlin/buzzer.h Переглянути файл

2
   #define BUZZER_H
2
   #define BUZZER_H
3
 
3
 
4
   #if HAS_BUZZER
4
   #if HAS_BUZZER
5
-    void buzz(long duration,uint16_t freq);
5
+    void buzz(long duration, uint16_t freq);
6
   #endif
6
   #endif
7
 
7
 
8
 #endif //BUZZER_H
8
 #endif //BUZZER_H

+ 27
- 28
Marlin/cardreader.cpp Переглянути файл

248
 }
248
 }
249
 
249
 
250
 void CardReader::startFileprint() {
250
 void CardReader::startFileprint() {
251
-  if (cardOK) {
251
+  if (cardOK)
252
     sdprinting = true;
252
     sdprinting = true;
253
-  }
254
 }
253
 }
255
 
254
 
256
 void CardReader::pauseSDPrint() {
255
 void CardReader::pauseSDPrint() {
267
   *t = '/'; t++; cnt++;
266
   *t = '/'; t++; cnt++;
268
   for (uint8_t i = 0; i < workDirDepth; i++) {
267
   for (uint8_t i = 0; i < workDirDepth; i++) {
269
     workDirParents[i].getFilename(t); //SDBaseFile.getfilename!
268
     workDirParents[i].getFilename(t); //SDBaseFile.getfilename!
270
-    while(*t && cnt < MAXPATHNAMELENGTH) { t++; cnt++; } //crawl counter forward.
269
+    while (*t && cnt < MAXPATHNAMELENGTH) { t++; cnt++; } //crawl counter forward.
271
   }
270
   }
272
   if (cnt < MAXPATHNAMELENGTH - FILENAME_LENGTH)
271
   if (cnt < MAXPATHNAMELENGTH - FILENAME_LENGTH)
273
     file.getFilename(t);
272
     file.getFilename(t);
279
   if (!cardOK) return;
278
   if (!cardOK) return;
280
   if (file.isOpen()) { //replacing current file by new file, or subfile call
279
   if (file.isOpen()) { //replacing current file by new file, or subfile call
281
     if (!replace_current) {
280
     if (!replace_current) {
282
-     if (file_subcall_ctr > SD_PROCEDURE_DEPTH - 1) {
283
-       SERIAL_ERROR_START;
284
-       SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
285
-       SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
286
-       kill(PSTR(MSG_KILLED));
287
-       return;
288
-     }
281
+      if (file_subcall_ctr > SD_PROCEDURE_DEPTH - 1) {
282
+        SERIAL_ERROR_START;
283
+        SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:");
284
+        SERIAL_ERRORLN(SD_PROCEDURE_DEPTH);
285
+        kill(PSTR(MSG_KILLED));
286
+        return;
287
+      }
289
 
288
 
290
-     SERIAL_ECHO_START;
291
-     SERIAL_ECHOPGM("SUBROUTINE CALL target:\"");
292
-     SERIAL_ECHO(name);
293
-     SERIAL_ECHOPGM("\" parent:\"");
289
+      SERIAL_ECHO_START;
290
+      SERIAL_ECHOPGM("SUBROUTINE CALL target:\"");
291
+      SERIAL_ECHO(name);
292
+      SERIAL_ECHOPGM("\" parent:\"");
294
 
293
 
295
-     //store current filename and position
296
-     getAbsFilename(filenames[file_subcall_ctr]);
294
+      //store current filename and position
295
+      getAbsFilename(filenames[file_subcall_ctr]);
297
 
296
 
298
-     SERIAL_ECHO(filenames[file_subcall_ctr]);
299
-     SERIAL_ECHOPGM("\" pos");
300
-     SERIAL_ECHOLN(sdpos);
301
-     filespos[file_subcall_ctr] = sdpos;
302
-     file_subcall_ctr++;
303
-    }
304
-    else {
305
-     SERIAL_ECHO_START;
306
-     SERIAL_ECHOPGM("Now doing file: ");
307
-     SERIAL_ECHOLN(name);
308
-    }
309
-    file.close();
297
+      SERIAL_ECHO(filenames[file_subcall_ctr]);
298
+      SERIAL_ECHOPGM("\" pos");
299
+      SERIAL_ECHOLN(sdpos);
300
+      filespos[file_subcall_ctr] = sdpos;
301
+      file_subcall_ctr++;
302
+     }
303
+     else {
304
+      SERIAL_ECHO_START;
305
+      SERIAL_ECHOPGM("Now doing file: ");
306
+      SERIAL_ECHOLN(name);
307
+     }
308
+     file.close();
310
   }
309
   }
311
   else { //opening fresh file
310
   else { //opening fresh file
312
     file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure
311
     file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure

+ 1
- 1
Marlin/cardreader.h Переглянути файл

38
   void getAbsFilename(char *t);
38
   void getAbsFilename(char *t);
39
 
39
 
40
   void ls();
40
   void ls();
41
-  void chdir(const char * relpath);
41
+  void chdir(const char *relpath);
42
   void updir();
42
   void updir();
43
   void setroot();
43
   void setroot();
44
 
44
 

+ 11
- 11
Marlin/configuration_store.cpp Переглянути файл

102
 
102
 
103
 void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) {
103
 void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) {
104
   uint8_t c;
104
   uint8_t c;
105
-  while(size--) {
105
+  while (size--) {
106
     eeprom_write_byte((unsigned char*)pos, *value);
106
     eeprom_write_byte((unsigned char*)pos, *value);
107
     c = eeprom_read_byte((unsigned char*)pos);
107
     c = eeprom_read_byte((unsigned char*)pos);
108
     if (c != *value) {
108
     if (c != *value) {
156
   uint8_t mesh_num_y = 3;
156
   uint8_t mesh_num_y = 3;
157
   #if ENABLED(MESH_BED_LEVELING)
157
   #if ENABLED(MESH_BED_LEVELING)
158
     // Compile time test that sizeof(mbl.z_values) is as expected
158
     // Compile time test that sizeof(mbl.z_values) is as expected
159
-    typedef char c_assert[(sizeof(mbl.z_values) == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS*sizeof(dummy)) ? 1 : -1];
159
+    typedef char c_assert[(sizeof(mbl.z_values) == MESH_NUM_X_POINTS * MESH_NUM_Y_POINTS * sizeof(dummy)) ? 1 : -1];
160
     mesh_num_x = MESH_NUM_X_POINTS;
160
     mesh_num_x = MESH_NUM_X_POINTS;
161
     mesh_num_y = MESH_NUM_Y_POINTS;
161
     mesh_num_y = MESH_NUM_Y_POINTS;
162
     EEPROM_WRITE_VAR(i, mbl.active);
162
     EEPROM_WRITE_VAR(i, mbl.active);
169
     EEPROM_WRITE_VAR(i, mesh_num_x);
169
     EEPROM_WRITE_VAR(i, mesh_num_x);
170
     EEPROM_WRITE_VAR(i, mesh_num_y);
170
     EEPROM_WRITE_VAR(i, mesh_num_y);
171
     dummy = 0.0f;
171
     dummy = 0.0f;
172
-    for (uint8_t q=0; q<mesh_num_x*mesh_num_y; q++) EEPROM_WRITE_VAR(i, dummy);
172
+    for (uint8_t q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_WRITE_VAR(i, dummy);
173
   #endif // MESH_BED_LEVELING
173
   #endif // MESH_BED_LEVELING
174
 
174
 
175
   #if DISABLED(AUTO_BED_LEVELING_FEATURE)
175
   #if DISABLED(AUTO_BED_LEVELING_FEATURE)
185
   #elif ENABLED(Z_DUAL_ENDSTOPS)
185
   #elif ENABLED(Z_DUAL_ENDSTOPS)
186
     EEPROM_WRITE_VAR(i, z_endstop_adj);            // 1 floats
186
     EEPROM_WRITE_VAR(i, z_endstop_adj);            // 1 floats
187
     dummy = 0.0f;
187
     dummy = 0.0f;
188
-    for (int q=5; q--;) EEPROM_WRITE_VAR(i, dummy);
188
+    for (int q = 5; q--;) EEPROM_WRITE_VAR(i, dummy);
189
   #else
189
   #else
190
     dummy = 0.0f;
190
     dummy = 0.0f;
191
-    for (int q=6; q--;) EEPROM_WRITE_VAR(i, dummy);
191
+    for (int q = 6; q--;) EEPROM_WRITE_VAR(i, dummy);
192
   #endif
192
   #endif
193
 
193
 
194
   #if DISABLED(ULTIPANEL)
194
   #if DISABLED(ULTIPANEL)
579
   #endif
579
   #endif
580
 
580
 
581
   volumetric_enabled = false;
581
   volumetric_enabled = false;
582
-  for (uint8_t q=0; q<COUNT(filament_size); q++)
582
+  for (uint8_t q = 0; q < COUNT(filament_size); q++)
583
     filament_size[q] = DEFAULT_NOMINAL_FILAMENT_DIA;
583
     filament_size[q] = DEFAULT_NOMINAL_FILAMENT_DIA;
584
   calculate_volumetric_multipliers();
584
   calculate_volumetric_multipliers();
585
 
585
 
686
     SERIAL_ECHOPAIR(" X", (unsigned long)MESH_NUM_X_POINTS);
686
     SERIAL_ECHOPAIR(" X", (unsigned long)MESH_NUM_X_POINTS);
687
     SERIAL_ECHOPAIR(" Y", (unsigned long)MESH_NUM_Y_POINTS);
687
     SERIAL_ECHOPAIR(" Y", (unsigned long)MESH_NUM_Y_POINTS);
688
     SERIAL_EOL;
688
     SERIAL_EOL;
689
-    for (int y=0; y<MESH_NUM_Y_POINTS; y++) {
690
-      for (int x=0; x<MESH_NUM_X_POINTS; x++) {
689
+    for (int y = 0; y < MESH_NUM_Y_POINTS; y++) {
690
+      for (int x = 0; x < MESH_NUM_X_POINTS; x++) {
691
         CONFIG_ECHO_START;
691
         CONFIG_ECHO_START;
692
         SERIAL_ECHOPAIR("  M421 X", mbl.get_x(x));
692
         SERIAL_ECHOPAIR("  M421 X", mbl.get_x(x));
693
         SERIAL_ECHOPAIR(" Y", mbl.get_y(y));
693
         SERIAL_ECHOPAIR(" Y", mbl.get_y(y));
721
       CONFIG_ECHO_START;
721
       CONFIG_ECHO_START;
722
     }
722
     }
723
     SERIAL_ECHOPAIR("  M666 Z", z_endstop_adj);
723
     SERIAL_ECHOPAIR("  M666 Z", z_endstop_adj);
724
-    SERIAL_EOL;  
724
+    SERIAL_EOL;
725
   #endif // DELTA
725
   #endif // DELTA
726
 
726
 
727
   #if ENABLED(ULTIPANEL)
727
   #if ENABLED(ULTIPANEL)
810
     #if EXTRUDERS > 1
810
     #if EXTRUDERS > 1
811
       SERIAL_ECHOPAIR(" W", retract_length_swap);
811
       SERIAL_ECHOPAIR(" W", retract_length_swap);
812
     #endif
812
     #endif
813
-    SERIAL_ECHOPAIR(" F", retract_feedrate*60);
813
+    SERIAL_ECHOPAIR(" F", retract_feedrate * 60);
814
     SERIAL_ECHOPAIR(" Z", retract_zlift);
814
     SERIAL_ECHOPAIR(" Z", retract_zlift);
815
     SERIAL_EOL;
815
     SERIAL_EOL;
816
     CONFIG_ECHO_START;
816
     CONFIG_ECHO_START;
822
     #if EXTRUDERS > 1
822
     #if EXTRUDERS > 1
823
       SERIAL_ECHOPAIR(" W", retract_recover_length_swap);
823
       SERIAL_ECHOPAIR(" W", retract_recover_length_swap);
824
     #endif
824
     #endif
825
-    SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60);
825
+    SERIAL_ECHOPAIR(" F", retract_recover_feedrate * 60);
826
     SERIAL_EOL;
826
     SERIAL_EOL;
827
     CONFIG_ECHO_START;
827
     CONFIG_ECHO_START;
828
     if (!forReplay) {
828
     if (!forReplay) {

+ 5
- 6
Marlin/digipot_mcp4451.cpp Переглянути файл

16
 #endif
16
 #endif
17
 
17
 
18
 static byte current_to_wiper(float current) {
18
 static byte current_to_wiper(float current) {
19
-  return byte(ceil(float((DIGIPOT_I2C_FACTOR*current))));
19
+  return byte(ceil(float((DIGIPOT_I2C_FACTOR * current))));
20
 }
20
 }
21
 
21
 
22
 static void i2c_send(byte addr, byte a, byte b) {
22
 static void i2c_send(byte addr, byte a, byte b) {
28
 
28
 
29
 // This is for the MCP4451 I2C based digipot
29
 // This is for the MCP4451 I2C based digipot
30
 void digipot_i2c_set_current(int channel, float current) {
30
 void digipot_i2c_set_current(int channel, float current) {
31
-  current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT);
31
+  current = min((float) max(current, 0.0f), DIGIPOT_I2C_MAX_CURRENT);
32
   // these addresses are specific to Azteeg X3 Pro, can be set to others,
32
   // these addresses are specific to Azteeg X3 Pro, can be set to others,
33
   // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
33
   // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
34
   byte addr = 0x2C; // channel 0-3
34
   byte addr = 0x2C; // channel 0-3
35
   if (channel >= 4) {
35
   if (channel >= 4) {
36
-  	addr = 0x2E; // channel 4-7
37
-  	channel -= 4;
36
+    addr = 0x2E; // channel 4-7
37
+    channel -= 4;
38
   }
38
   }
39
 
39
 
40
   // Initial setup
40
   // Initial setup
50
   const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
50
   const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS;
51
   Wire.begin();
51
   Wire.begin();
52
   // setup initial currents as defined in Configuration_adv.h
52
   // setup initial currents as defined in Configuration_adv.h
53
-  for(int i = 0; i < COUNT(digipot_motor_current); i++) {
53
+  for (int i = 0; i < COUNT(digipot_motor_current); i++)
54
     digipot_i2c_set_current(i, digipot_motor_current[i]);
54
     digipot_i2c_set_current(i, digipot_motor_current[i]);
55
-  }
56
 }
55
 }
57
 
56
 
58
 #endif //DIGIPOT_I2C
57
 #endif //DIGIPOT_I2C

+ 206
- 207
Marlin/dogm_bitmaps.h Переглянути файл

1
 // BitMap for splashscreen
1
 // BitMap for splashscreen
2
 // Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php
2
 // Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php
3
-// Please note that using the high-res version takes 402Bytes of PROGMEM. 
3
+// Please note that using the high-res version takes 402Bytes of PROGMEM.
4
 //#define START_BMPHIGH
4
 //#define START_BMPHIGH
5
 
5
 
6
 #if ENABLED(SHOW_BOOTSCREEN)
6
 #if ENABLED(SHOW_BOOTSCREEN)
11
     #define START_BMPBYTES      532 // START_BMPWIDTH * START_BMPHEIGHT / 8
11
     #define START_BMPBYTES      532 // START_BMPWIDTH * START_BMPHEIGHT / 8
12
 
12
 
13
     const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
13
     const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
14
-       0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
15
-      ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
16
-      ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff
17
-      ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff
18
-      ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff
19
-      ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff
20
-      ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff
21
-      ,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x3f,0xff
22
-      ,0xc0,0x0f,0xc0,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x00,0x1f,0xff
23
-      ,0xc0,0x3f,0xe1,0xff,0x00,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x0f,0xff
24
-      ,0xc0,0x7f,0xf3,0xff,0x80,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x07,0xff
25
-      ,0xc0,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x03,0xff
26
-      ,0xc1,0xf8,0x7f,0x87,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xff
27
-      ,0xc1,0xf0,0x3f,0x03,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xff
28
-      ,0xc1,0xe0,0x1e,0x01,0xe0,0x1f,0x00,0x03,0xe0,0x78,0x3c,0x03,0xf0,0x7f
29
-      ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0xc0,0x0f,0xf8,0x78,0x3c,0x07,0xfc,0x3f
30
-      ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0xe0,0x1f,0xfc,0x78,0x3c,0x0f,0xfe,0x1f
31
-      ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0xf0,0x3f,0xfe,0x78,0x3c,0x1f,0xfe,0x0f
32
-      ,0xc1,0xe0,0x1e,0x01,0xe3,0xf3,0xf8,0x3f,0x3e,0x78,0x3c,0x3f,0x3f,0x07
33
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0xe0,0xfc,0x7c,0x1f,0x78,0x3c,0x3e,0x1f,0x07
34
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x7c,0x7c,0x0f,0x78,0x3c,0x3c,0x0f,0x03
35
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x7c,0x78,0x0f,0x78,0x3c,0x3c,0x0f,0x03
36
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
37
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
38
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
39
-      ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03
40
-      ,0xc1,0xe0,0x1e,0x01,0xe3,0xe0,0x3c,0x78,0x00,0x7c,0x3c,0x3c,0x0f,0x03
41
-      ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0x3f,0xf8,0x00,0x7f,0xbc,0x3c,0x0f,0x03
42
-      ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0x3f,0xf8,0x00,0x3f,0xbf,0xfc,0x0f,0x03
43
-      ,0xc1,0xe0,0x1e,0x01,0xe0,0xff,0x3f,0xf8,0x00,0x1f,0xbf,0xfc,0x0f,0x03
44
-      ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0x3f,0xf8,0x00,0x0f,0xbf,0xfc,0x0f,0x03
45
-      ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07
46
-      ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06
47
-      ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e
48
-      ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c
49
-      ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78
50
-      ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0
51
-      ,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80 };
14
+      0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
15
+      0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
16
+      0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF,
17
+      0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF,
18
+      0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
19
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
20
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
21
+      0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3F, 0xFF,
22
+      0xC0, 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x00, 0x1F, 0xFF,
23
+      0xC0, 0x3F, 0xE1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x0F, 0xFF,
24
+      0xC0, 0x7F, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x07, 0xFF,
25
+      0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xFF,
26
+      0xC1, 0xF8, 0x7F, 0x87, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xFF,
27
+      0xC1, 0xF0, 0x3F, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xFF,
28
+      0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x00, 0x03, 0xE0, 0x78, 0x3C, 0x03, 0xF0, 0x7F,
29
+      0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0xC0, 0x0F, 0xF8, 0x78, 0x3C, 0x07, 0xFC, 0x3F,
30
+      0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0xE0, 0x1F, 0xFC, 0x78, 0x3C, 0x0F, 0xFE, 0x1F,
31
+      0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0xF0, 0x3F, 0xFE, 0x78, 0x3C, 0x1F, 0xFE, 0x0F,
32
+      0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xF3, 0xF8, 0x3F, 0x3E, 0x78, 0x3C, 0x3F, 0x3F, 0x07,
33
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xE0, 0xFC, 0x7C, 0x1F, 0x78, 0x3C, 0x3E, 0x1F, 0x07,
34
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x7C, 0x7C, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
35
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x7C, 0x78, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
36
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
37
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
38
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
39
+      0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03,
40
+      0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xE0, 0x3C, 0x78, 0x00, 0x7C, 0x3C, 0x3C, 0x0F, 0x03,
41
+      0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0x3F, 0xF8, 0x00, 0x7F, 0xBC, 0x3C, 0x0F, 0x03,
42
+      0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0x3F, 0xF8, 0x00, 0x3F, 0xBF, 0xFC, 0x0F, 0x03,
43
+      0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0xFF, 0x3F, 0xF8, 0x00, 0x1F, 0xBF, 0xFC, 0x0F, 0x03,
44
+      0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0x3F, 0xF8, 0x00, 0x0F, 0xBF, 0xFC, 0x0F, 0x03,
45
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
46
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
47
+      0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E,
48
+      0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
49
+      0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
50
+      0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
51
+      0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80 };
52
   #else
52
   #else
53
     #define START_BMPWIDTH      56
53
     #define START_BMPWIDTH      56
54
     #define START_BMPHEIGHT     19
54
     #define START_BMPHEIGHT     19
56
     #define START_BMPBYTES      133 // START_BMPWIDTH * START_BMPHEIGHT / 8
56
     #define START_BMPBYTES      133 // START_BMPWIDTH * START_BMPHEIGHT / 8
57
 
57
 
58
     const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
58
     const unsigned char start_bmp[START_BMPBYTES] PROGMEM = {
59
-       0x1f,0xff,0xff,0xff,0xff,0xff,0xff
60
-      ,0x60,0x00,0x00,0x00,0x00,0x01,0xff
61
-      ,0x40,0x00,0x00,0x00,0x00,0x00,0xff
62
-      ,0x80,0x00,0x00,0x00,0x00,0x00,0x7f
63
-      ,0x83,0xcf,0x00,0x00,0x0c,0x30,0x3f
64
-      ,0x87,0xff,0x80,0x00,0x0c,0x30,0x1f
65
-      ,0x86,0x79,0x80,0x00,0x0c,0x00,0x0f
66
-      ,0x8c,0x30,0xc7,0x83,0x8c,0x30,0xe7
67
-      ,0x8c,0x30,0xcf,0xc7,0xcc,0x31,0xf3
68
-      ,0x8c,0x30,0xdc,0xec,0xec,0x33,0xb9
69
-      ,0x8c,0x30,0xd8,0x6c,0x6c,0x33,0x19
70
-      ,0x8c,0x30,0xd0,0x6c,0x0c,0x33,0x19
71
-      ,0x8c,0x30,0xd8,0x6c,0x0c,0x33,0x19
72
-      ,0x8c,0x30,0xdc,0x6c,0x0e,0x3b,0x19
73
-      ,0x8c,0x30,0xcf,0x7c,0x07,0x9f,0x19
74
-      ,0x8c,0x30,0xc7,0x7c,0x03,0x8f,0x19
75
-      ,0x40,0x00,0x00,0x00,0x00,0x00,0x02
76
-      ,0x60,0x00,0x00,0x00,0x00,0x00,0x06
77
-      ,0x1f,0xff,0xff,0xff,0xff,0xff,0xf8 };
59
+      0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
60
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF,
61
+      0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
62
+      0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F,
63
+      0x83, 0xCF, 0x00, 0x00, 0x0C, 0x30, 0x3F,
64
+      0x87, 0xFF, 0x80, 0x00, 0x0C, 0x30, 0x1F,
65
+      0x86, 0x79, 0x80, 0x00, 0x0C, 0x00, 0x0F,
66
+      0x8C, 0x30, 0xC7, 0x83, 0x8C, 0x30, 0xE7,
67
+      0x8C, 0x30, 0xCF, 0xC7, 0xCC, 0x31, 0xF3,
68
+      0x8C, 0x30, 0xDC, 0xEC, 0xEC, 0x33, 0xB9,
69
+      0x8C, 0x30, 0xD8, 0x6C, 0x6C, 0x33, 0x19,
70
+      0x8C, 0x30, 0xD0, 0x6C, 0x0C, 0x33, 0x19,
71
+      0x8C, 0x30, 0xD8, 0x6C, 0x0C, 0x33, 0x19,
72
+      0x8C, 0x30, 0xDC, 0x6C, 0x0E, 0x3B, 0x19,
73
+      0x8C, 0x30, 0xCF, 0x7C, 0x07, 0x9F, 0x19,
74
+      0x8C, 0x30, 0xC7, 0x7C, 0x03, 0x8F, 0x19,
75
+      0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
76
+      0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
77
+      0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8 };
78
   #endif
78
   #endif
79
 #endif
79
 #endif
80
 
80
 
81
-// Here comes a compile-time operation to match the extruder symbols 
81
+// Here comes a compile-time operation to match the extruder symbols
82
 // on the info screen to the set number of extruders in configuration.h
82
 // on the info screen to the set number of extruders in configuration.h
83
-// 
84
-// When only one extruder is selected, the "1" on the symbol will not 
83
+//
84
+// When only one extruder is selected, the "1" on the symbol will not
85
 // be displayed.
85
 // be displayed.
86
 
86
 
87
 #if EXTRUDERS == 1
87
 #if EXTRUDERS == 1
88
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
89
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
90
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
91
-	const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
92
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
93
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
94
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
95
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
96
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
97
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
98
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
99
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
100
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
101
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
102
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
103
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
104
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
105
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
106
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
107
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
108
-	0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
109
-	0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
110
-	0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
111
-	};
88
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
89
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
90
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
91
+  const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
92
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
93
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
94
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
95
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
96
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
97
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
98
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
99
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
100
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
101
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
102
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
103
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
104
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
105
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
106
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
107
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
108
+    0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
109
+    0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
110
+    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
111
+  };
112
 
112
 
113
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
114
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
115
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
116
-	const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
117
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
118
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
119
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
120
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
121
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
122
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
123
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
124
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
125
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
126
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
127
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
128
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
129
-	0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
130
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
131
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
132
-	0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
133
-	0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
134
-	0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
135
-	0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
136
-	};
113
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
114
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
115
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
116
+  const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
117
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
118
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
119
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
120
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
121
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
122
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
123
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
124
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
125
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
126
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
127
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
128
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
129
+    0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
130
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
131
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
132
+    0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
133
+    0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
134
+    0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
135
+    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
136
+  };
137
 #elif EXTRUDERS == 2
137
 #elif EXTRUDERS == 2
138
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
139
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
140
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
141
-	const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
142
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
143
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
144
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
145
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
146
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
147
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
148
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
149
-	0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
150
-	0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
151
-	0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
152
-	0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
153
-	0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
154
-	0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
155
-	0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
156
-	0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
157
-	0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
158
-	0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
159
-	0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
160
-	0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
161
-	};
138
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
139
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
140
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
141
+  const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
142
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
143
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
144
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
145
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
146
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
147
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
148
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
149
+    0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
150
+    0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
151
+    0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
152
+    0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
153
+    0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
154
+    0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
155
+    0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
156
+    0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
157
+    0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
158
+    0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
159
+    0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
160
+    0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
161
+  };
162
 
162
 
163
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
164
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
165
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
166
-	const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
167
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
168
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
169
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
170
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
171
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
172
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
173
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
174
-	0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
175
-	0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
176
-	0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
177
-	0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
178
-	0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
179
-	0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
180
-	0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
181
-	0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
182
-	0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
183
-	0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
184
-	0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
185
-	0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
186
-	};
163
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
164
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
165
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
166
+  const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
167
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
168
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
169
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
170
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
171
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
172
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
173
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
174
+    0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
175
+    0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
176
+    0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
177
+    0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
178
+    0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
179
+    0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
180
+    0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
181
+    0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
182
+    0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
183
+    0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
184
+    0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
185
+    0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
186
+  };
187
 #else
187
 #else
188
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
189
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
190
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
191
-	const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
192
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
193
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
194
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
195
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
196
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
197
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
198
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
199
-	0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
200
-	0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
201
-	0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20,
202
-	0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x40,0x60,0x20,
203
-	0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0,
204
-	0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0,
205
-	0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20,
206
-	0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x47,0x0E,0x20,
207
-	0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x63,0x0C,0x60,
208
-	0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
209
-	0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
210
-	0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
211
-	};
212
-
213
-	#define STATUS_SCREENWIDTH 		115	//Width in pixels
214
-	#define STATUS_SCREENHEIGHT 	19	//Height in pixels
215
-	#define STATUS_SCREENBYTEWIDTH 	15	//Width in bytes
216
-	const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
217
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
218
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
219
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60,
220
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20,
221
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
222
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
223
-	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0,
224
-	0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
225
-	0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
226
-	0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0,
227
-	0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0,
228
-	0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x58,0x01,0xA0,
229
-	0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x40,0x60,0x20,
230
-	0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x40,0xF0,0x20,
231
-	0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x41,0xF8,0x20,
232
-	0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x61,0xF8,0x60,
233
-	0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
234
-	0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0,
235
-	0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00
236
-	};
237
-#endif // Extruders 
188
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
189
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
190
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
191
+  const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR
192
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
193
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
194
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60,
195
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20,
196
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20,
197
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0,
198
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0,
199
+    0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
200
+    0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
201
+    0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20,
202
+    0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20,
203
+    0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0,
204
+    0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0,
205
+    0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20,
206
+    0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20,
207
+    0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60,
208
+    0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
209
+    0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
210
+    0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
211
+  };
238
 
212
 
213
+  #define STATUS_SCREENWIDTH     115 //Width in pixels
214
+  #define STATUS_SCREENHEIGHT     19 //Height in pixels
215
+  #define STATUS_SCREENBYTEWIDTH  15 //Width in bytes
216
+  const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR
217
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
218
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
219
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60,
220
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20,
221
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20,
222
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20,
223
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0,
224
+    0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
225
+    0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
226
+    0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0,
227
+    0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0,
228
+    0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0,
229
+    0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20,
230
+    0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20,
231
+    0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20,
232
+    0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60,
233
+    0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0,
234
+    0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0,
235
+    0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00
236
+  };
237
+#endif // Extruders
239
 
238
 

+ 145
- 144
Marlin/dogm_font_data_6x9_marlin.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = {
13
 const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = {
14
-  0,6,9,0,254,6,1,137,2,254,32,255,254,7,254,6,
15
-  254,0,0,0,6,0,7,1,6,6,6,2,0,128,128,128,
16
-  128,0,128,3,3,3,6,1,3,160,160,160,5,7,7,6,
17
-  0,255,80,80,248,80,248,80,80,5,9,9,6,0,254,32,
18
-  112,168,160,112,40,168,112,32,6,8,8,6,0,255,64,168,
19
-  72,16,32,72,84,8,5,7,7,6,0,255,96,144,144,96,
20
-  152,144,104,1,3,3,6,2,3,128,128,128,2,7,7,6,
21
-  2,255,64,128,128,128,128,128,64,2,7,7,6,2,255,128,
22
-  64,64,64,64,64,128,5,5,5,6,0,0,136,80,248,80,
23
-  136,5,5,5,6,0,0,32,32,248,32,32,2,4,4,6,
24
-  2,254,192,64,64,128,5,1,1,6,0,2,248,2,2,2,
25
-  6,2,0,192,192,4,6,6,6,1,0,16,16,32,64,128,
26
-  128,4,6,6,6,1,0,96,144,144,144,144,96,3,6,6,
27
-  6,1,0,64,192,64,64,64,224,4,6,6,6,1,0,96,
28
-  144,16,32,64,240,4,6,6,6,1,0,240,32,96,16,16,
29
-  224,5,6,6,6,0,0,16,48,80,144,248,16,4,6,6,
30
-  6,1,0,240,128,224,16,16,224,4,6,6,6,1,0,96,
31
-  128,224,144,144,96,4,6,6,6,1,0,240,16,16,32,64,
32
-  64,4,6,6,6,1,0,96,144,96,144,144,96,4,6,6,
33
-  6,1,0,96,144,144,112,16,96,2,5,5,6,2,0,192,
34
-  192,0,192,192,2,7,7,6,2,254,192,192,0,192,64,64,
35
-  128,5,5,5,6,0,0,24,96,128,96,24,5,3,3,6,
36
-  0,1,248,0,248,5,5,5,6,0,0,192,48,8,48,192,
37
-  4,7,7,6,1,0,96,144,16,96,64,0,64,5,6,6,
38
-  6,0,0,112,144,168,176,128,112,5,6,6,6,0,0,32,
39
-  80,136,248,136,136,5,6,6,6,0,0,240,136,240,136,136,
40
-  240,4,6,6,6,1,0,96,144,128,128,144,96,4,6,6,
41
-  6,1,0,224,144,144,144,144,224,4,6,6,6,1,0,240,
42
-  128,224,128,128,240,4,6,6,6,1,0,240,128,224,128,128,
43
-  128,4,6,6,6,1,0,96,144,128,176,144,96,4,6,6,
44
-  6,1,0,144,144,240,144,144,144,3,6,6,6,1,0,224,
45
-  64,64,64,64,224,5,6,6,6,0,0,56,16,16,16,144,
46
-  96,4,6,6,6,1,0,144,160,192,160,144,144,4,6,6,
47
-  6,1,0,128,128,128,128,128,240,5,6,6,6,0,0,136,
48
-  216,168,168,136,136,4,6,6,6,1,0,144,208,176,144,144,
49
-  144,5,6,6,6,0,0,112,136,136,136,136,112,4,6,6,
50
-  6,1,0,224,144,144,224,128,128,4,7,7,6,1,255,96,
51
-  144,144,208,176,96,16,4,6,6,6,1,0,224,144,144,224,
52
-  144,144,4,6,6,6,1,0,96,144,64,32,144,96,5,6,
53
-  6,6,0,0,248,32,32,32,32,32,4,6,6,6,1,0,
54
-  144,144,144,144,144,96,4,6,6,6,1,0,144,144,144,240,
55
-  96,96,5,6,6,6,0,0,136,136,168,168,216,136,5,6,
56
-  6,6,0,0,136,80,32,32,80,136,5,6,6,6,0,0,
57
-  136,136,80,32,32,32,4,6,6,6,1,0,240,16,32,64,
58
-  128,240,3,6,6,6,1,0,224,128,128,128,128,224,4,6,
59
-  6,6,1,0,128,128,64,32,16,16,3,6,6,6,1,0,
60
-  224,32,32,32,32,224,5,3,3,6,0,3,32,80,136,5,
61
-  1,1,6,0,254,248,2,2,2,6,2,4,128,64,4,4,
62
-  4,6,1,0,112,144,144,112,4,6,6,6,1,0,128,128,
63
-  224,144,144,224,4,4,4,6,1,0,112,128,128,112,4,6,
64
-  6,6,1,0,16,16,112,144,144,112,4,4,4,6,1,0,
65
-  96,176,192,112,4,6,6,6,1,0,32,80,64,224,64,64,
66
-  4,6,6,6,1,254,96,144,144,112,16,96,4,6,6,6,
67
-  1,0,128,128,224,144,144,144,3,6,6,6,1,0,64,0,
68
-  192,64,64,224,3,8,8,6,1,254,32,0,96,32,32,32,
69
-  160,64,4,6,6,6,1,0,128,128,160,192,160,144,3,6,
70
-  6,6,1,0,192,64,64,64,64,224,5,4,4,6,0,0,
71
-  208,168,168,136,4,4,4,6,1,0,224,144,144,144,4,4,
72
-  4,6,1,0,96,144,144,96,4,6,6,6,1,254,224,144,
73
-  144,224,128,128,4,6,6,6,1,254,112,144,144,112,16,16,
74
-  4,4,4,6,1,0,160,208,128,128,4,4,4,6,1,0,
75
-  112,192,48,224,4,6,6,6,1,0,64,64,224,64,80,32,
76
-  4,4,4,6,1,0,144,144,144,112,4,4,4,6,1,0,
77
-  144,144,96,96,5,4,4,6,0,0,136,168,168,80,4,4,
78
-  4,6,1,0,144,96,96,144,4,6,6,6,1,254,144,144,
79
-  144,112,144,96,4,4,4,6,1,0,240,32,64,240,3,7,
80
-  7,6,1,0,32,64,64,128,64,64,32,1,7,7,6,2,
81
-  255,128,128,128,128,128,128,128,3,7,7,6,1,0,128,64,
82
-  64,32,64,64,128,4,2,2,6,1,3,80,160,255,255,255,
83
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
84
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,
85
-  0,6,0,7,1,6,6,6,2,0,128,0,128,128,128,128,
86
-  4,6,6,6,1,255,32,112,160,160,112,32,5,7,7,6,
87
-  0,255,48,72,64,240,64,64,248,5,5,5,6,0,0,168,
88
-  80,136,80,168,5,6,6,6,0,0,136,80,248,32,248,32,
89
-  1,7,7,6,2,255,128,128,128,0,128,128,128,4,7,7,
90
-  6,1,255,112,128,96,144,96,16,224,3,1,1,6,1,5,
91
-  160,6,7,7,6,0,0,120,132,148,164,148,132,120,3,5,
92
-  5,6,1,1,96,160,96,0,224,5,5,5,6,0,0,40,
93
-  80,160,80,40,4,3,3,6,1,0,240,16,16,4,1,1,
94
-  6,1,2,240,6,7,7,6,0,0,120,132,180,164,164,132,
95
-  120,4,1,1,6,1,5,240,4,3,3,6,1,2,96,144,
96
-  96,5,7,7,6,0,255,32,32,248,32,32,0,248,3,5,
97
-  5,6,1,1,64,160,32,64,224,3,5,5,6,1,1,192,
98
-  32,64,32,192,2,2,2,6,2,4,64,128,4,5,5,6,
99
-  1,255,144,144,176,208,128,5,6,6,6,0,0,120,232,232,
100
-  104,40,40,1,1,1,6,2,2,128,2,2,2,6,2,254,
101
-  64,128,3,5,5,6,1,1,64,192,64,64,224,3,5,5,
102
-  6,1,1,64,160,64,0,224,5,5,5,6,0,0,160,80,
103
-  40,80,160,5,8,8,6,0,255,64,192,64,80,112,48,120,
104
-  16,5,8,8,6,0,255,64,192,64,80,104,8,16,56,5,
105
-  8,8,6,0,255,192,32,64,48,240,48,120,16,4,7,7,
106
-  6,1,0,32,0,32,96,128,144,96,5,7,7,6,0,0,
107
-  64,32,32,80,112,136,136,5,7,7,6,0,0,16,32,32,
108
-  80,112,136,136,5,7,7,6,0,0,32,80,32,80,112,136,
109
-  136,5,7,7,6,0,0,40,80,32,80,112,136,136,5,7,
110
-  7,6,0,0,80,0,32,80,112,136,136,5,7,7,6,0,
111
-  0,32,80,32,80,112,136,136,5,6,6,6,0,0,120,160,
112
-  240,160,160,184,4,8,8,6,1,254,96,144,128,128,144,96,
113
-  32,64,4,7,7,6,1,0,64,32,240,128,224,128,240,4,
114
-  7,7,6,1,0,32,64,240,128,224,128,240,4,7,7,6,
115
-  1,0,32,80,240,128,224,128,240,4,7,7,6,1,0,80,
116
-  0,240,128,224,128,240,3,7,7,6,1,0,128,64,224,64,
117
-  64,64,224,3,7,7,6,1,0,32,64,224,64,64,64,224,
118
-  3,7,7,6,1,0,64,160,224,64,64,64,224,3,7,7,
119
-  6,1,0,160,0,224,64,64,64,224,5,6,6,6,0,0,
120
-  112,72,232,72,72,112,4,7,7,6,1,0,80,160,144,208,
121
-  176,144,144,4,7,7,6,1,0,64,32,96,144,144,144,96,
122
-  4,7,7,6,1,0,32,64,96,144,144,144,96,4,7,7,
123
-  6,1,0,32,80,96,144,144,144,96,4,7,7,6,1,0,
124
-  80,160,96,144,144,144,96,4,7,7,6,1,0,80,0,96,
125
-  144,144,144,96,5,5,5,6,0,0,136,80,32,80,136,4,
126
-  8,8,6,1,255,16,112,176,176,208,208,224,128,4,7,7,
127
-  6,1,0,64,32,144,144,144,144,96,4,7,7,6,1,0,
128
-  32,64,144,144,144,144,96,4,7,7,6,1,0,32,80,144,
129
-  144,144,144,96,4,7,7,6,1,0,80,0,144,144,144,144,
130
-  96,5,7,7,6,0,0,16,32,136,80,32,32,32,4,6,
131
-  6,6,1,0,128,224,144,144,224,128,4,6,6,6,1,0,
132
-  96,144,160,160,144,160,4,7,7,6,1,0,64,32,0,112,
133
-  144,144,112,4,7,7,6,1,0,32,64,0,112,144,144,112,
134
-  4,7,7,6,1,0,32,80,0,112,144,144,112,4,7,7,
135
-  6,1,0,80,160,0,112,144,144,112,4,6,6,6,1,0,
136
-  80,0,112,144,144,112,4,7,7,6,1,0,32,80,32,112,
137
-  144,144,112,5,4,4,6,0,0,112,168,176,120,4,6,6,
138
-  6,1,254,112,128,128,112,32,64,4,7,7,6,1,0,64,
139
-  32,0,96,176,192,112,4,7,7,6,1,0,32,64,0,96,
140
-  176,192,112,4,7,7,6,1,0,32,80,0,96,176,192,112,
141
-  4,6,6,6,1,0,80,0,96,176,192,112,3,7,7,6,
142
-  1,0,128,64,0,192,64,64,224,3,7,7,6,1,0,32,
143
-  64,0,192,64,64,224,3,7,7,6,1,0,64,160,0,192,
144
-  64,64,224,3,6,6,6,1,0,160,0,192,64,64,224,4,
145
-  7,7,6,1,0,48,96,16,112,144,144,96,4,7,7,6,
146
-  1,0,80,160,0,224,144,144,144,4,7,7,6,1,0,64,
147
-  32,0,96,144,144,96,4,7,7,6,1,0,32,64,0,96,
148
-  144,144,96,4,7,7,6,1,0,32,80,0,96,144,144,96,
149
-  4,7,7,6,1,0,80,160,0,96,144,144,96,4,6,6,
150
-  6,1,0,80,0,96,144,144,96,5,5,5,6,0,0,32,
151
-  0,248,0,32,4,4,4,6,1,0,112,176,208,224,4,7,
152
-  7,6,1,0,64,32,0,144,144,144,112,4,7,7,6,1,
153
-  0,32,64,0,144,144,144,112,4,7,7,6,1,0,32,80,
154
-  0,144,144,144,112,4,6,6,6,1,0,80,0,144,144,144,
155
-  112,4,9,9,6,1,254,32,64,0,144,144,144,112,144,96,
156
-  4,8,8,6,1,254,128,128,224,144,144,224,128,128,4,8,
157
-  8,6,1,254,80,0,144,144,144,112,144,96};
14
+  0, 6, 9, 0, 254, 6, 1, 137, 2, 254, 32, 255, 254, 7, 254, 6,
15
+  254, 0, 0, 0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 128, 128,
16
+  128, 0, 128, 3, 3, 3, 6, 1, 3, 160, 160, 160, 5, 7, 7, 6,
17
+  0, 255, 80, 80, 248, 80, 248, 80, 80, 5, 9, 9, 6, 0, 254, 32,
18
+  112, 168, 160, 112, 40, 168, 112, 32, 6, 8, 8, 6, 0, 255, 64, 168,
19
+  72, 16, 32, 72, 84, 8, 5, 7, 7, 6, 0, 255, 96, 144, 144, 96,
20
+  152, 144, 104, 1, 3, 3, 6, 2, 3, 128, 128, 128, 2, 7, 7, 6,
21
+  2, 255, 64, 128, 128, 128, 128, 128, 64, 2, 7, 7, 6, 2, 255, 128,
22
+  64, 64, 64, 64, 64, 128, 5, 5, 5, 6, 0, 0, 136, 80, 248, 80,
23
+  136, 5, 5, 5, 6, 0, 0, 32, 32, 248, 32, 32, 2, 4, 4, 6,
24
+  2, 254, 192, 64, 64, 128, 5, 1, 1, 6, 0, 2, 248, 2, 2, 2,
25
+  6, 2, 0, 192, 192, 4, 6, 6, 6, 1, 0, 16, 16, 32, 64, 128,
26
+  128, 4, 6, 6, 6, 1, 0, 96, 144, 144, 144, 144, 96, 3, 6, 6,
27
+  6, 1, 0, 64, 192, 64, 64, 64, 224, 4, 6, 6, 6, 1, 0, 96,
28
+  144, 16, 32, 64, 240, 4, 6, 6, 6, 1, 0, 240, 32, 96, 16, 16,
29
+  224, 5, 6, 6, 6, 0, 0, 16, 48, 80, 144, 248, 16, 4, 6, 6,
30
+  6, 1, 0, 240, 128, 224, 16, 16, 224, 4, 6, 6, 6, 1, 0, 96,
31
+  128, 224, 144, 144, 96, 4, 6, 6, 6, 1, 0, 240, 16, 16, 32, 64,
32
+  64, 4, 6, 6, 6, 1, 0, 96, 144, 96, 144, 144, 96, 4, 6, 6,
33
+  6, 1, 0, 96, 144, 144, 112, 16, 96, 2, 5, 5, 6, 2, 0, 192,
34
+  192, 0, 192, 192, 2, 7, 7, 6, 2, 254, 192, 192, 0, 192, 64, 64,
35
+  128, 5, 5, 5, 6, 0, 0, 24, 96, 128, 96, 24, 5, 3, 3, 6,
36
+  0, 1, 248, 0, 248, 5, 5, 5, 6, 0, 0, 192, 48, 8, 48, 192,
37
+  4, 7, 7, 6, 1, 0, 96, 144, 16, 96, 64, 0, 64, 5, 6, 6,
38
+  6, 0, 0, 112, 144, 168, 176, 128, 112, 5, 6, 6, 6, 0, 0, 32,
39
+  80, 136, 248, 136, 136, 5, 6, 6, 6, 0, 0, 240, 136, 240, 136, 136,
40
+  240, 4, 6, 6, 6, 1, 0, 96, 144, 128, 128, 144, 96, 4, 6, 6,
41
+  6, 1, 0, 224, 144, 144, 144, 144, 224, 4, 6, 6, 6, 1, 0, 240,
42
+  128, 224, 128, 128, 240, 4, 6, 6, 6, 1, 0, 240, 128, 224, 128, 128,
43
+  128, 4, 6, 6, 6, 1, 0, 96, 144, 128, 176, 144, 96, 4, 6, 6,
44
+  6, 1, 0, 144, 144, 240, 144, 144, 144, 3, 6, 6, 6, 1, 0, 224,
45
+  64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0, 56, 16, 16, 16, 144,
46
+  96, 4, 6, 6, 6, 1, 0, 144, 160, 192, 160, 144, 144, 4, 6, 6,
47
+  6, 1, 0, 128, 128, 128, 128, 128, 240, 5, 6, 6, 6, 0, 0, 136,
48
+  216, 168, 168, 136, 136, 4, 6, 6, 6, 1, 0, 144, 208, 176, 144, 144,
49
+  144, 5, 6, 6, 6, 0, 0, 112, 136, 136, 136, 136, 112, 4, 6, 6,
50
+  6, 1, 0, 224, 144, 144, 224, 128, 128, 4, 7, 7, 6, 1, 255, 96,
51
+  144, 144, 208, 176, 96, 16, 4, 6, 6, 6, 1, 0, 224, 144, 144, 224,
52
+  144, 144, 4, 6, 6, 6, 1, 0, 96, 144, 64, 32, 144, 96, 5, 6,
53
+  6, 6, 0, 0, 248, 32, 32, 32, 32, 32, 4, 6, 6, 6, 1, 0,
54
+  144, 144, 144, 144, 144, 96, 4, 6, 6, 6, 1, 0, 144, 144, 144, 240,
55
+  96, 96, 5, 6, 6, 6, 0, 0, 136, 136, 168, 168, 216, 136, 5, 6,
56
+  6, 6, 0, 0, 136, 80, 32, 32, 80, 136, 5, 6, 6, 6, 0, 0,
57
+  136, 136, 80, 32, 32, 32, 4, 6, 6, 6, 1, 0, 240, 16, 32, 64,
58
+  128, 240, 3, 6, 6, 6, 1, 0, 224, 128, 128, 128, 128, 224, 4, 6,
59
+  6, 6, 1, 0, 128, 128, 64, 32, 16, 16, 3, 6, 6, 6, 1, 0,
60
+  224, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 3, 32, 80, 136, 5,
61
+  1, 1, 6, 0, 254, 248, 2, 2, 2, 6, 2, 4, 128, 64, 4, 4,
62
+  4, 6, 1, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0, 128, 128,
63
+  224, 144, 144, 224, 4, 4, 4, 6, 1, 0, 112, 128, 128, 112, 4, 6,
64
+  6, 6, 1, 0, 16, 16, 112, 144, 144, 112, 4, 4, 4, 6, 1, 0,
65
+  96, 176, 192, 112, 4, 6, 6, 6, 1, 0, 32, 80, 64, 224, 64, 64,
66
+  4, 6, 6, 6, 1, 254, 96, 144, 144, 112, 16, 96, 4, 6, 6, 6,
67
+  1, 0, 128, 128, 224, 144, 144, 144, 3, 6, 6, 6, 1, 0, 64, 0,
68
+  192, 64, 64, 224, 3, 8, 8, 6, 1, 254, 32, 0, 96, 32, 32, 32,
69
+  160, 64, 4, 6, 6, 6, 1, 0, 128, 128, 160, 192, 160, 144, 3, 6,
70
+  6, 6, 1, 0, 192, 64, 64, 64, 64, 224, 5, 4, 4, 6, 0, 0,
71
+  208, 168, 168, 136, 4, 4, 4, 6, 1, 0, 224, 144, 144, 144, 4, 4,
72
+  4, 6, 1, 0, 96, 144, 144, 96, 4, 6, 6, 6, 1, 254, 224, 144,
73
+  144, 224, 128, 128, 4, 6, 6, 6, 1, 254, 112, 144, 144, 112, 16, 16,
74
+  4, 4, 4, 6, 1, 0, 160, 208, 128, 128, 4, 4, 4, 6, 1, 0,
75
+  112, 192, 48, 224, 4, 6, 6, 6, 1, 0, 64, 64, 224, 64, 80, 32,
76
+  4, 4, 4, 6, 1, 0, 144, 144, 144, 112, 4, 4, 4, 6, 1, 0,
77
+  144, 144, 96, 96, 5, 4, 4, 6, 0, 0, 136, 168, 168, 80, 4, 4,
78
+  4, 6, 1, 0, 144, 96, 96, 144, 4, 6, 6, 6, 1, 254, 144, 144,
79
+  144, 112, 144, 96, 4, 4, 4, 6, 1, 0, 240, 32, 64, 240, 3, 7,
80
+  7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32, 1, 7, 7, 6, 2,
81
+  255, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7, 6, 1, 0, 128, 64,
82
+  64, 32, 64, 64, 128, 4, 2, 2, 6, 1, 3, 80, 160, 255, 255, 255,
83
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
84
+  255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0,
85
+  0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 0, 128, 128, 128, 128,
86
+  4, 6, 6, 6, 1, 255, 32, 112, 160, 160, 112, 32, 5, 7, 7, 6,
87
+  0, 255, 48, 72, 64, 240, 64, 64, 248, 5, 5, 5, 6, 0, 0, 168,
88
+  80, 136, 80, 168, 5, 6, 6, 6, 0, 0, 136, 80, 248, 32, 248, 32,
89
+  1, 7, 7, 6, 2, 255, 128, 128, 128, 0, 128, 128, 128, 4, 7, 7,
90
+  6, 1, 255, 112, 128, 96, 144, 96, 16, 224, 3, 1, 1, 6, 1, 5,
91
+  160, 6, 7, 7, 6, 0, 0, 120, 132, 148, 164, 148, 132, 120, 3, 5,
92
+  5, 6, 1, 1, 96, 160, 96, 0, 224, 5, 5, 5, 6, 0, 0, 40,
93
+  80, 160, 80, 40, 4, 3, 3, 6, 1, 0, 240, 16, 16, 4, 1, 1,
94
+  6, 1, 2, 240, 6, 7, 7, 6, 0, 0, 120, 132, 180, 164, 164, 132,
95
+  120, 4, 1, 1, 6, 1, 5, 240, 4, 3, 3, 6, 1, 2, 96, 144,
96
+  96, 5, 7, 7, 6, 0, 255, 32, 32, 248, 32, 32, 0, 248, 3, 5,
97
+  5, 6, 1, 1, 64, 160, 32, 64, 224, 3, 5, 5, 6, 1, 1, 192,
98
+  32, 64, 32, 192, 2, 2, 2, 6, 2, 4, 64, 128, 4, 5, 5, 6,
99
+  1, 255, 144, 144, 176, 208, 128, 5, 6, 6, 6, 0, 0, 120, 232, 232,
100
+  104, 40, 40, 1, 1, 1, 6, 2, 2, 128, 2, 2, 2, 6, 2, 254,
101
+  64, 128, 3, 5, 5, 6, 1, 1, 64, 192, 64, 64, 224, 3, 5, 5,
102
+  6, 1, 1, 64, 160, 64, 0, 224, 5, 5, 5, 6, 0, 0, 160, 80,
103
+  40, 80, 160, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 112, 48, 120,
104
+  16, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 104, 8, 16, 56, 5,
105
+  8, 8, 6, 0, 255, 192, 32, 64, 48, 240, 48, 120, 16, 4, 7, 7,
106
+  6, 1, 0, 32, 0, 32, 96, 128, 144, 96, 5, 7, 7, 6, 0, 0,
107
+  64, 32, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 16, 32, 32,
108
+  80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 32, 80, 32, 80, 112, 136,
109
+  136, 5, 7, 7, 6, 0, 0, 40, 80, 32, 80, 112, 136, 136, 5, 7,
110
+  7, 6, 0, 0, 80, 0, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0,
111
+  0, 32, 80, 32, 80, 112, 136, 136, 5, 6, 6, 6, 0, 0, 120, 160,
112
+  240, 160, 160, 184, 4, 8, 8, 6, 1, 254, 96, 144, 128, 128, 144, 96,
113
+  32, 64, 4, 7, 7, 6, 1, 0, 64, 32, 240, 128, 224, 128, 240, 4,
114
+  7, 7, 6, 1, 0, 32, 64, 240, 128, 224, 128, 240, 4, 7, 7, 6,
115
+  1, 0, 32, 80, 240, 128, 224, 128, 240, 4, 7, 7, 6, 1, 0, 80,
116
+  0, 240, 128, 224, 128, 240, 3, 7, 7, 6, 1, 0, 128, 64, 224, 64,
117
+  64, 64, 224, 3, 7, 7, 6, 1, 0, 32, 64, 224, 64, 64, 64, 224,
118
+  3, 7, 7, 6, 1, 0, 64, 160, 224, 64, 64, 64, 224, 3, 7, 7,
119
+  6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0,
120
+  112, 72, 232, 72, 72, 112, 4, 7, 7, 6, 1, 0, 80, 160, 144, 208,
121
+  176, 144, 144, 4, 7, 7, 6, 1, 0, 64, 32, 96, 144, 144, 144, 96,
122
+  4, 7, 7, 6, 1, 0, 32, 64, 96, 144, 144, 144, 96, 4, 7, 7,
123
+  6, 1, 0, 32, 80, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0,
124
+  80, 160, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 96,
125
+  144, 144, 144, 96, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 4,
126
+  8, 8, 6, 1, 255, 16, 112, 176, 176, 208, 208, 224, 128, 4, 7, 7,
127
+  6, 1, 0, 64, 32, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0,
128
+  32, 64, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 144,
129
+  144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 144, 144, 144, 144,
130
+  96, 5, 7, 7, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 4, 6,
131
+  6, 6, 1, 0, 128, 224, 144, 144, 224, 128, 4, 6, 6, 6, 1, 0,
132
+  96, 144, 160, 160, 144, 160, 4, 7, 7, 6, 1, 0, 64, 32, 0, 112,
133
+  144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 112, 144, 144, 112,
134
+  4, 7, 7, 6, 1, 0, 32, 80, 0, 112, 144, 144, 112, 4, 7, 7,
135
+  6, 1, 0, 80, 160, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0,
136
+  80, 0, 112, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80, 32, 112,
137
+  144, 144, 112, 5, 4, 4, 6, 0, 0, 112, 168, 176, 120, 4, 6, 6,
138
+  6, 1, 254, 112, 128, 128, 112, 32, 64, 4, 7, 7, 6, 1, 0, 64,
139
+  32, 0, 96, 176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96,
140
+  176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 176, 192, 112,
141
+  4, 6, 6, 6, 1, 0, 80, 0, 96, 176, 192, 112, 3, 7, 7, 6,
142
+  1, 0, 128, 64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 32,
143
+  64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 64, 160, 0, 192,
144
+  64, 64, 224, 3, 6, 6, 6, 1, 0, 160, 0, 192, 64, 64, 224, 4,
145
+  7, 7, 6, 1, 0, 48, 96, 16, 112, 144, 144, 96, 4, 7, 7, 6,
146
+  1, 0, 80, 160, 0, 224, 144, 144, 144, 4, 7, 7, 6, 1, 0, 64,
147
+  32, 0, 96, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96,
148
+  144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 144, 144, 96,
149
+  4, 7, 7, 6, 1, 0, 80, 160, 0, 96, 144, 144, 96, 4, 6, 6,
150
+  6, 1, 0, 80, 0, 96, 144, 144, 96, 5, 5, 5, 6, 0, 0, 32,
151
+  0, 248, 0, 32, 4, 4, 4, 6, 1, 0, 112, 176, 208, 224, 4, 7,
152
+  7, 6, 1, 0, 64, 32, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1,
153
+  0, 32, 64, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80,
154
+  0, 144, 144, 144, 112, 4, 6, 6, 6, 1, 0, 80, 0, 144, 144, 144,
155
+  112, 4, 9, 9, 6, 1, 254, 32, 64, 0, 144, 144, 144, 112, 144, 96,
156
+  4, 8, 8, 6, 1, 254, 128, 128, 224, 144, 144, 224, 128, 128, 4, 8,
157
+  8, 6, 1, 254, 80, 0, 144, 144, 144, 112, 144, 96
158
+};

+ 159
- 158
Marlin/dogm_font_data_HD44780_C.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t HD44780_C_5x7[2522] U8G_SECTION(".progmem.HD44780_C_5x7") = {
13
 const u8g_fntpgm_uint8_t HD44780_C_5x7[2522] U8G_SECTION(".progmem.HD44780_C_5x7") = {
14
-  0,6,9,0,254,7,1,145,3,34,32,255,255,8,255,7,
15
-  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
-  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
-  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
-  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
-  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
-  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
-  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
-  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
-  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
-  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
-  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
-  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
-  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
-  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
-  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
-  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
-  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
-  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
-  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
-  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
-  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
-  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
-  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
-  5,7,7,6,0,0,32,112,160,160,168,112,32,3,7,7,
62
-  6,1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,
63
-  32,80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,
64
-  128,64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,
65
-  6,0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,
66
-  112,128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,
67
-  136,120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,
68
-  6,0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,
69
-  112,136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,
70
-  136,136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,
71
-  3,8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,
72
-  7,6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,
73
-  0,192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,
74
-  168,168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,
75
-  5,6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,
76
-  136,136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,
77
-  8,5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,
78
-  0,0,112,128,112,8,240,5,7,7,6,0,0,64,64,224,
79
-  64,64,72,48,5,5,5,6,0,0,136,136,136,152,104,5,
80
-  5,5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,
81
-  136,136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,
82
-  5,6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,
83
-  0,0,248,16,32,64,248,5,5,5,6,0,2,184,168,168,
84
-  168,184,5,5,5,6,0,2,184,136,184,160,184,5,5,5,
85
-  6,0,2,184,160,184,136,184,5,6,6,6,0,1,8,40,
86
-  72,248,64,32,5,5,5,6,0,0,56,112,224,136,240,0,
87
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
88
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
89
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
90
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
91
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
92
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
93
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
94
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
95
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
96
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
97
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
98
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,5,
99
-  7,7,6,0,0,248,136,128,240,136,136,240,5,7,7,6,
100
-  0,0,248,136,128,128,128,128,128,5,7,7,6,0,0,80,
101
-  0,248,128,240,128,248,5,7,7,6,0,0,168,168,168,112,
102
-  168,168,168,5,7,7,6,0,0,240,8,8,112,8,8,240,
103
-  5,7,7,6,0,0,136,136,152,168,200,136,136,5,8,8,
104
-  6,0,0,80,32,136,152,168,168,200,136,5,7,7,6,0,
105
-  0,120,40,40,40,40,168,72,5,7,7,6,0,0,248,136,
106
-  136,136,136,136,136,5,7,7,6,0,0,136,136,136,80,32,
107
-  64,128,5,7,7,6,0,0,32,112,168,168,168,112,32,5,
108
-  7,7,6,0,0,136,136,136,120,8,8,8,5,7,7,6,
109
-  0,0,168,168,168,168,168,168,248,5,7,7,6,0,0,192,
110
-  64,64,112,72,72,112,5,7,7,6,0,0,136,136,136,200,
111
-  168,168,200,5,7,7,6,0,0,112,136,8,56,8,136,112,
112
-  5,7,7,6,0,0,144,168,168,232,168,168,144,5,7,7,
113
-  6,0,0,120,136,136,120,40,72,136,5,7,7,6,0,0,
114
-  24,96,128,240,136,136,112,4,5,5,6,0,0,224,144,224,
115
-  144,224,5,5,5,6,0,0,248,136,128,128,128,5,7,7,
116
-  6,0,0,80,0,112,136,248,128,112,5,5,5,6,0,0,
117
-  168,168,112,168,168,5,5,5,6,0,0,240,8,48,8,240,
118
-  5,5,5,6,0,0,136,152,168,200,136,5,7,7,6,0,
119
-  0,80,32,136,152,168,200,136,4,5,5,6,0,0,144,160,
120
-  192,160,144,5,5,5,6,0,0,248,40,40,168,72,5,5,
121
-  5,6,0,0,136,216,168,136,136,5,5,5,6,0,0,136,
122
-  136,248,136,136,5,5,5,6,0,0,248,136,136,136,136,5,
123
-  5,5,6,0,0,248,32,32,32,32,5,5,5,6,0,0,
124
-  136,136,120,8,8,5,5,5,6,0,0,168,168,168,168,248,
125
-  5,5,5,6,0,0,192,64,112,72,112,5,5,5,6,0,
126
-  0,136,136,200,168,200,4,5,5,6,0,0,128,128,224,144,
127
-  224,5,5,5,6,0,0,112,136,56,136,112,5,5,5,6,
128
-  0,0,144,168,232,168,144,5,5,5,6,0,0,120,136,120,
129
-  40,72,5,5,5,6,0,1,32,72,144,72,32,5,5,5,
130
-  6,0,1,32,144,72,144,32,5,3,3,6,0,0,72,144,
131
-  216,5,3,3,6,0,4,216,72,144,5,7,7,6,0,0,
132
-  144,208,176,144,56,40,56,5,7,7,6,0,0,32,0,32,
133
-  64,128,136,112,5,7,7,6,0,0,24,32,32,112,32,32,
134
-  192,5,7,7,6,0,0,32,80,64,240,64,64,120,1,2,
135
-  2,6,2,0,128,128,1,4,4,6,2,0,128,128,128,128,
136
-  3,5,5,6,1,0,160,160,160,0,224,3,5,5,6,1,
137
-  0,160,160,160,0,160,5,7,7,6,0,0,160,0,232,16,
138
-  32,64,128,5,5,5,6,0,1,216,112,32,112,216,5,7,
139
-  7,6,0,0,160,64,168,16,32,64,128,3,6,6,6,1,
140
-  1,224,64,64,64,64,224,5,6,6,6,0,1,248,80,80,
141
-  80,80,248,5,7,7,6,0,0,32,112,168,32,32,32,32,
142
-  5,7,7,6,0,0,32,32,32,32,168,112,32,5,7,7,
143
-  6,0,0,128,144,176,248,176,144,128,5,7,7,6,0,0,
144
-  8,72,104,248,104,72,8,5,7,7,6,0,0,128,136,168,
145
-  248,168,136,128,5,7,7,6,0,0,128,224,136,16,32,64,
146
-  128,2,2,2,6,2,2,192,192,5,8,8,6,0,255,120,
147
-  40,40,40,72,136,248,136,5,8,8,6,0,255,136,136,136,
148
-  136,136,136,248,8,5,8,8,6,0,255,168,168,168,168,168,
149
-  168,248,8,5,6,6,6,0,255,120,40,72,136,248,136,5,
150
-  7,7,6,0,255,32,32,112,168,168,112,32,5,6,6,6,
151
-  0,255,136,136,136,136,248,8,5,6,6,6,0,255,168,168,
152
-  168,168,248,8,2,2,2,6,2,6,64,128,3,1,1,6,
153
-  1,7,160,5,2,2,6,0,6,72,176,5,8,8,6,0,
154
-  0,16,32,0,112,136,248,128,112,5,6,6,6,0,255,112,
155
-  128,136,112,32,96,3,7,7,6,1,0,160,0,160,160,160,
156
-  32,192,5,6,6,6,0,1,32,112,112,112,248,32,5,5,
157
-  5,6,0,1,80,0,136,0,80,5,5,5,6,0,1,112,
158
-  136,136,136,112,5,7,7,6,0,0,136,144,168,88,184,8,
159
-  8,5,7,7,6,0,0,136,144,184,72,184,8,56,5,7,
160
-  7,6,0,0,136,144,184,72,152,32,56,5,8,8,6,0,
161
-  0,192,64,192,72,216,56,8,8,5,7,7,6,0,0,136,
162
-  248,136,248,136,248,136,4,5,5,6,0,2,192,0,48,0,
163
-  96,5,8,8,6,0,0,64,160,224,168,8,40,120,32,5,
164
-  8,8,6,0,0,64,112,64,120,64,112,64,224,5,8,8,
165
-  6,0,0,32,112,32,248,32,112,32,112,5,7,7,6,0,
166
-  0,104,0,232,0,104,16,56,5,8,8,6,0,0,16,112,
167
-  16,240,16,112,16,56,5,7,7,6,0,1,32,112,32,248,
168
-  32,112,32,5,8,8,6,0,0,16,144,80,48,80,144,16,
169
-  56,5,8,8,6,0,0,48,72,32,80,80,32,144,96,5,
170
-  7,7,6,0,0,120,168,168,120,40,40,40,5,8,8,6,
171
-  0,0,248,248,248,248,248,248,248,248};
14
+  0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 255, 7,
15
+  255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
40
+  7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
41
+  0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
42
+  136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
43
+  128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
44
+  7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
45
+  0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
46
+  128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
47
+  16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
48
+  5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
49
+  6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
50
+  136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
51
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
52
+  128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
53
+  7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
54
+  0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
55
+  32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
56
+  136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
57
+  7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
58
+  0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
59
+  136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
60
+  64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
61
+  5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 3, 7, 7,
62
+  6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4,
63
+  32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5,
64
+  128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7,
65
+  6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0,
66
+  112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136,
67
+  136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7,
68
+  6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255,
69
+  112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200,
70
+  136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
71
+  3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7,
72
+  7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1,
73
+  0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168,
74
+  168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5,
75
+  5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240,
76
+  136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8,
77
+  8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6,
78
+  0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224,
79
+  64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5,
80
+  5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0,
81
+  136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136,
82
+  5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6,
83
+  0, 0, 248, 16, 32, 64, 248, 5, 5, 5, 6, 0, 2, 184, 168, 168,
84
+  168, 184, 5, 5, 5, 6, 0, 2, 184, 136, 184, 160, 184, 5, 5, 5,
85
+  6, 0, 2, 184, 160, 184, 136, 184, 5, 6, 6, 6, 0, 1, 8, 40,
86
+  72, 248, 64, 32, 5, 5, 5, 6, 0, 0, 56, 112, 224, 136, 240, 0,
87
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
88
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
89
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
90
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
91
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
92
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
93
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
94
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
95
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
96
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
97
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
98
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5,
99
+  7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240, 5, 7, 7, 6,
100
+  0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 80,
101
+  0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112,
102
+  168, 168, 168, 5, 7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240,
103
+  5, 7, 7, 6, 0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8,
104
+  6, 0, 0, 80, 32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0,
105
+  0, 120, 40, 40, 40, 40, 168, 72, 5, 7, 7, 6, 0, 0, 248, 136,
106
+  136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136, 80, 32,
107
+  64, 128, 5, 7, 7, 6, 0, 0, 32, 112, 168, 168, 168, 112, 32, 5,
108
+  7, 7, 6, 0, 0, 136, 136, 136, 120, 8, 8, 8, 5, 7, 7, 6,
109
+  0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 7, 7, 6, 0, 0, 192,
110
+  64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200,
111
+  168, 168, 200, 5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112,
112
+  5, 7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7,
113
+  6, 0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0,
114
+  24, 96, 128, 240, 136, 136, 112, 4, 5, 5, 6, 0, 0, 224, 144, 224,
115
+  144, 224, 5, 5, 5, 6, 0, 0, 248, 136, 128, 128, 128, 5, 7, 7,
116
+  6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6, 0, 0,
117
+  168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48, 8, 240,
118
+  5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7, 6, 0,
119
+  0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0, 144, 160,
120
+  192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72, 5, 5,
121
+  5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0, 0, 136,
122
+  136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5,
123
+  5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 5, 5, 6, 0, 0,
124
+  136, 136, 120, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168, 168, 168, 248,
125
+  5, 5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0,
126
+  0, 136, 136, 200, 168, 200, 4, 5, 5, 6, 0, 0, 128, 128, 224, 144,
127
+  224, 5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6,
128
+  0, 0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120,
129
+  40, 72, 5, 5, 5, 6, 0, 1, 32, 72, 144, 72, 32, 5, 5, 5,
130
+  6, 0, 1, 32, 144, 72, 144, 32, 5, 3, 3, 6, 0, 0, 72, 144,
131
+  216, 5, 3, 3, 6, 0, 4, 216, 72, 144, 5, 7, 7, 6, 0, 0,
132
+  144, 208, 176, 144, 56, 40, 56, 5, 7, 7, 6, 0, 0, 32, 0, 32,
133
+  64, 128, 136, 112, 5, 7, 7, 6, 0, 0, 24, 32, 32, 112, 32, 32,
134
+  192, 5, 7, 7, 6, 0, 0, 32, 80, 64, 240, 64, 64, 120, 1, 2,
135
+  2, 6, 2, 0, 128, 128, 1, 4, 4, 6, 2, 0, 128, 128, 128, 128,
136
+  3, 5, 5, 6, 1, 0, 160, 160, 160, 0, 224, 3, 5, 5, 6, 1,
137
+  0, 160, 160, 160, 0, 160, 5, 7, 7, 6, 0, 0, 160, 0, 232, 16,
138
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 216, 112, 32, 112, 216, 5, 7,
139
+  7, 6, 0, 0, 160, 64, 168, 16, 32, 64, 128, 3, 6, 6, 6, 1,
140
+  1, 224, 64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 1, 248, 80, 80,
141
+  80, 80, 248, 5, 7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32,
142
+  5, 7, 7, 6, 0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 7, 7,
143
+  6, 0, 0, 128, 144, 176, 248, 176, 144, 128, 5, 7, 7, 6, 0, 0,
144
+  8, 72, 104, 248, 104, 72, 8, 5, 7, 7, 6, 0, 0, 128, 136, 168,
145
+  248, 168, 136, 128, 5, 7, 7, 6, 0, 0, 128, 224, 136, 16, 32, 64,
146
+  128, 2, 2, 2, 6, 2, 2, 192, 192, 5, 8, 8, 6, 0, 255, 120,
147
+  40, 40, 40, 72, 136, 248, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136,
148
+  136, 136, 136, 248, 8, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168,
149
+  168, 248, 8, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248, 136, 5,
150
+  7, 7, 6, 0, 255, 32, 32, 112, 168, 168, 112, 32, 5, 6, 6, 6,
151
+  0, 255, 136, 136, 136, 136, 248, 8, 5, 6, 6, 6, 0, 255, 168, 168,
152
+  168, 168, 248, 8, 2, 2, 2, 6, 2, 6, 64, 128, 3, 1, 1, 6,
153
+  1, 7, 160, 5, 2, 2, 6, 0, 6, 72, 176, 5, 8, 8, 6, 0,
154
+  0, 16, 32, 0, 112, 136, 248, 128, 112, 5, 6, 6, 6, 0, 255, 112,
155
+  128, 136, 112, 32, 96, 3, 7, 7, 6, 1, 0, 160, 0, 160, 160, 160,
156
+  32, 192, 5, 6, 6, 6, 0, 1, 32, 112, 112, 112, 248, 32, 5, 5,
157
+  5, 6, 0, 1, 80, 0, 136, 0, 80, 5, 5, 5, 6, 0, 1, 112,
158
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8,
159
+  8, 5, 7, 7, 6, 0, 0, 136, 144, 184, 72, 184, 8, 56, 5, 7,
160
+  7, 6, 0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0,
161
+  0, 192, 64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 136,
162
+  248, 136, 248, 136, 248, 136, 4, 5, 5, 6, 0, 2, 192, 0, 48, 0,
163
+  96, 5, 8, 8, 6, 0, 0, 64, 160, 224, 168, 8, 40, 120, 32, 5,
164
+  8, 8, 6, 0, 0, 64, 112, 64, 120, 64, 112, 64, 224, 5, 8, 8,
165
+  6, 0, 0, 32, 112, 32, 248, 32, 112, 32, 112, 5, 7, 7, 6, 0,
166
+  0, 104, 0, 232, 0, 104, 16, 56, 5, 8, 8, 6, 0, 0, 16, 112,
167
+  16, 240, 16, 112, 16, 56, 5, 7, 7, 6, 0, 1, 32, 112, 32, 248,
168
+  32, 112, 32, 5, 8, 8, 6, 0, 0, 16, 144, 80, 48, 80, 144, 16,
169
+  56, 5, 8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5,
170
+  7, 7, 6, 0, 0, 120, 168, 168, 120, 40, 40, 40, 5, 8, 8, 6,
171
+  0, 0, 248, 248, 248, 248, 248, 248, 248, 248
172
+};

+ 157
- 156
Marlin/dogm_font_data_HD44780_J.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t HD44780_J_5x7[2491] U8G_SECTION(".progmem.HD44780_J_5x7") = {
13
 const u8g_fntpgm_uint8_t HD44780_J_5x7[2491] U8G_SECTION(".progmem.HD44780_J_5x7") = {
14
-  0,6,9,0,254,7,1,145,3,34,32,255,255,8,254,7,
15
-  255,0,0,0,6,0,8,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
-  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
-  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
-  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
-  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
-  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
-  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
-  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
-  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
-  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
-  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
-  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
-  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
-  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
-  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
-  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
-  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
-  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
-  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
-  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
-  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
-  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
-  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
-  5,7,7,6,0,0,136,80,248,32,248,32,32,3,7,7,
62
-  6,1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,
63
-  32,80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,
64
-  128,64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,
65
-  6,0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,
66
-  112,128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,
67
-  136,120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,
68
-  6,0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,
69
-  112,136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,
70
-  136,136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,
71
-  3,8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,
72
-  7,6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,
73
-  0,192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,
74
-  168,168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,
75
-  5,6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,
76
-  136,136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,
77
-  8,5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,
78
-  0,0,112,128,112,8,240,5,7,7,6,0,0,64,64,224,
79
-  64,64,72,48,5,5,5,6,0,0,136,136,136,152,104,5,
80
-  5,5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,
81
-  136,136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,
82
-  5,6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,
83
-  0,0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,
84
-  128,64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,
85
-  128,3,7,7,6,1,0,128,64,64,32,64,64,128,5,5,
86
-  5,6,0,1,32,16,248,16,32,5,5,5,6,0,1,32,
87
-  64,248,64,32,0,0,0,6,0,8,0,0,0,6,0,8,
88
-  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
89
-  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
90
-  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
91
-  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
92
-  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
93
-  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
94
-  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
95
-  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
96
-  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
97
-  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
98
-  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
99
-  0,6,0,8,0,0,0,6,0,8,3,3,3,6,0,0,
100
-  224,160,224,3,4,4,6,2,3,224,128,128,128,3,4,4,
101
-  6,0,0,32,32,32,224,3,3,3,6,0,0,128,64,32,
102
-  2,2,2,6,1,2,192,192,5,6,6,6,0,0,248,8,
103
-  248,8,16,32,5,5,5,6,0,0,248,8,48,32,64,4,
104
-  5,5,6,0,0,16,32,96,160,32,5,5,5,6,0,0,
105
-  32,248,136,8,48,5,4,4,6,0,0,248,32,32,248,5,
106
-  5,5,6,0,0,16,248,48,80,144,5,5,5,6,0,0,
107
-  64,248,72,80,64,5,4,4,6,0,0,112,16,16,248,4,
108
-  5,5,6,0,0,240,16,240,16,240,5,4,4,6,0,0,
109
-  168,168,8,48,5,1,1,6,0,4,248,5,7,7,6,0,
110
-  0,248,8,40,48,32,32,64,5,7,7,6,0,0,8,16,
111
-  32,96,160,32,32,5,7,7,6,0,0,32,248,136,136,8,
112
-  16,32,5,6,6,6,0,0,248,32,32,32,32,248,5,7,
113
-  7,6,0,0,16,248,16,48,80,144,16,5,7,7,6,0,
114
-  0,64,248,72,72,72,72,144,5,7,7,6,0,0,32,248,
115
-  32,248,32,32,32,5,6,6,6,0,0,120,72,136,8,16,
116
-  96,5,7,7,6,0,0,64,120,144,16,16,16,32,5,6,
117
-  6,6,0,0,248,8,8,8,8,248,5,7,7,6,0,0,
118
-  80,248,80,80,16,32,64,5,6,6,6,0,0,192,8,200,
119
-  8,16,224,5,6,6,6,0,0,248,8,16,32,80,136,5,
120
-  7,7,6,0,0,64,248,72,80,64,64,56,5,6,6,6,
121
-  0,0,136,136,72,8,16,96,5,6,6,6,0,0,120,72,
122
-  168,24,16,96,5,7,7,6,0,0,16,224,32,248,32,32,
123
-  64,5,6,6,6,0,0,168,168,168,8,16,32,5,7,7,
124
-  6,0,0,112,0,248,32,32,32,64,3,7,7,6,1,0,
125
-  128,128,128,192,160,128,128,5,7,7,6,0,0,32,32,248,
126
-  32,32,64,128,5,6,6,6,0,0,112,0,0,0,0,248,
127
-  5,6,6,6,0,0,248,8,80,32,80,128,5,6,6,6,
128
-  0,1,32,248,16,32,112,168,3,7,7,6,1,0,32,32,
129
-  32,32,32,64,128,5,6,6,6,0,0,32,16,136,136,136,
130
-  136,5,7,7,6,0,0,128,128,248,128,128,128,120,5,6,
131
-  6,6,0,0,248,8,8,8,16,96,5,5,5,6,0,1,
132
-  64,160,16,8,8,5,7,7,6,0,0,32,248,32,32,168,
133
-  168,32,5,6,6,6,0,0,248,8,8,80,32,16,4,6,
134
-  6,6,1,0,224,0,224,0,224,16,5,6,6,6,0,0,
135
-  32,64,128,136,248,8,5,6,6,6,0,0,8,8,80,32,
136
-  80,128,5,6,6,6,0,0,248,64,248,64,64,56,5,7,
137
-  7,6,0,0,64,64,248,72,80,64,64,5,7,7,6,0,
138
-  0,112,16,16,16,16,16,248,5,6,6,6,0,0,248,8,
139
-  248,8,8,248,5,7,7,6,0,0,112,0,248,8,8,16,
140
-  32,4,7,7,6,0,0,144,144,144,144,16,32,64,5,6,
141
-  6,6,0,0,32,160,160,168,168,176,5,7,7,6,0,0,
142
-  128,128,128,136,144,160,192,5,6,6,6,0,0,248,136,136,
143
-  136,136,248,5,6,6,6,0,0,248,136,136,8,16,32,5,
144
-  6,6,6,0,0,192,0,8,8,16,224,4,3,3,6,0,
145
-  4,32,144,64,3,3,3,6,0,4,224,160,224,5,5,5,
146
-  6,0,1,72,168,144,144,104,5,7,7,6,0,0,80,0,
147
-  112,8,120,136,120,4,8,8,6,1,255,96,144,144,224,144,
148
-  144,224,128,5,5,5,6,0,0,112,128,96,136,112,5,6,
149
-  6,6,0,255,136,136,152,232,136,128,5,5,5,6,0,0,
150
-  120,160,144,136,112,5,7,7,6,0,254,48,72,136,136,240,
151
-  128,128,5,8,8,6,0,254,120,136,136,136,120,8,8,112,
152
-  5,5,5,6,0,1,56,32,32,160,64,4,3,3,6,0,
153
-  3,16,208,16,4,8,8,6,0,255,16,0,48,16,16,16,
154
-  144,96,3,3,3,6,0,4,160,64,160,5,7,7,6,0,
155
-  0,32,112,160,160,168,112,32,5,7,7,6,0,0,64,64,
156
-  224,64,224,64,120,5,7,7,6,0,0,112,0,176,200,136,
157
-  136,136,5,7,7,6,0,0,80,0,112,136,136,136,112,5,
158
-  7,7,6,0,255,176,200,136,136,240,128,128,5,7,7,6,
159
-  0,255,104,152,136,136,120,8,8,5,6,6,6,0,0,112,
160
-  136,248,136,136,112,5,3,3,6,0,2,88,168,208,5,5,
161
-  5,6,0,0,112,136,136,80,216,5,7,7,6,0,0,80,
162
-  0,136,136,136,152,104,5,7,7,6,0,0,248,128,64,32,
163
-  64,128,248,5,5,5,6,0,0,248,80,80,80,152,5,7,
164
-  7,6,0,0,248,0,136,80,32,80,136,5,7,7,6,0,
165
-  255,136,136,136,136,120,8,112,5,6,6,6,0,1,8,240,
166
-  32,248,32,32,5,5,5,6,0,0,248,64,120,72,136,5,
167
-  5,5,6,0,0,248,168,248,136,136,5,5,5,6,0,1,
168
-  32,0,248,0,32,0,0,0,6,0,8,6,10,10,6,0,
169
-  254,252,252,252,252,252,252,252,252,252,252};
14
+  0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 254, 7,
15
+  255, 0, 0, 0, 6, 0, 8, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
40
+  7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
41
+  0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
42
+  136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
43
+  128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
44
+  7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
45
+  0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
46
+  128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
47
+  16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
48
+  5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
49
+  6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
50
+  136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
51
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
52
+  128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
53
+  7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
54
+  0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
55
+  32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
56
+  136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
57
+  7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
58
+  0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
59
+  136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
60
+  64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
61
+  5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248, 32, 32, 3, 7, 7,
62
+  6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4,
63
+  32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5,
64
+  128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7,
65
+  6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0,
66
+  112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136,
67
+  136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7,
68
+  6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255,
69
+  112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200,
70
+  136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
71
+  3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7,
72
+  7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1,
73
+  0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168,
74
+  168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5,
75
+  5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240,
76
+  136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8,
77
+  8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6,
78
+  0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224,
79
+  64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5,
80
+  5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0,
81
+  136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136,
82
+  5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6,
83
+  0, 0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64,
84
+  128, 64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128,
85
+  128, 3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 5,
86
+  5, 6, 0, 1, 32, 16, 248, 16, 32, 5, 5, 5, 6, 0, 1, 32,
87
+  64, 248, 64, 32, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8,
88
+  0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6,
89
+  0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0,
90
+  0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8,
91
+  0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6,
92
+  0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0,
93
+  0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8,
94
+  0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6,
95
+  0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0,
96
+  0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8,
97
+  0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6,
98
+  0, 8, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 0, 0,
99
+  0, 6, 0, 8, 0, 0, 0, 6, 0, 8, 3, 3, 3, 6, 0, 0,
100
+  224, 160, 224, 3, 4, 4, 6, 2, 3, 224, 128, 128, 128, 3, 4, 4,
101
+  6, 0, 0, 32, 32, 32, 224, 3, 3, 3, 6, 0, 0, 128, 64, 32,
102
+  2, 2, 2, 6, 1, 2, 192, 192, 5, 6, 6, 6, 0, 0, 248, 8,
103
+  248, 8, 16, 32, 5, 5, 5, 6, 0, 0, 248, 8, 48, 32, 64, 4,
104
+  5, 5, 6, 0, 0, 16, 32, 96, 160, 32, 5, 5, 5, 6, 0, 0,
105
+  32, 248, 136, 8, 48, 5, 4, 4, 6, 0, 0, 248, 32, 32, 248, 5,
106
+  5, 5, 6, 0, 0, 16, 248, 48, 80, 144, 5, 5, 5, 6, 0, 0,
107
+  64, 248, 72, 80, 64, 5, 4, 4, 6, 0, 0, 112, 16, 16, 248, 4,
108
+  5, 5, 6, 0, 0, 240, 16, 240, 16, 240, 5, 4, 4, 6, 0, 0,
109
+  168, 168, 8, 48, 5, 1, 1, 6, 0, 4, 248, 5, 7, 7, 6, 0,
110
+  0, 248, 8, 40, 48, 32, 32, 64, 5, 7, 7, 6, 0, 0, 8, 16,
111
+  32, 96, 160, 32, 32, 5, 7, 7, 6, 0, 0, 32, 248, 136, 136, 8,
112
+  16, 32, 5, 6, 6, 6, 0, 0, 248, 32, 32, 32, 32, 248, 5, 7,
113
+  7, 6, 0, 0, 16, 248, 16, 48, 80, 144, 16, 5, 7, 7, 6, 0,
114
+  0, 64, 248, 72, 72, 72, 72, 144, 5, 7, 7, 6, 0, 0, 32, 248,
115
+  32, 248, 32, 32, 32, 5, 6, 6, 6, 0, 0, 120, 72, 136, 8, 16,
116
+  96, 5, 7, 7, 6, 0, 0, 64, 120, 144, 16, 16, 16, 32, 5, 6,
117
+  6, 6, 0, 0, 248, 8, 8, 8, 8, 248, 5, 7, 7, 6, 0, 0,
118
+  80, 248, 80, 80, 16, 32, 64, 5, 6, 6, 6, 0, 0, 192, 8, 200,
119
+  8, 16, 224, 5, 6, 6, 6, 0, 0, 248, 8, 16, 32, 80, 136, 5,
120
+  7, 7, 6, 0, 0, 64, 248, 72, 80, 64, 64, 56, 5, 6, 6, 6,
121
+  0, 0, 136, 136, 72, 8, 16, 96, 5, 6, 6, 6, 0, 0, 120, 72,
122
+  168, 24, 16, 96, 5, 7, 7, 6, 0, 0, 16, 224, 32, 248, 32, 32,
123
+  64, 5, 6, 6, 6, 0, 0, 168, 168, 168, 8, 16, 32, 5, 7, 7,
124
+  6, 0, 0, 112, 0, 248, 32, 32, 32, 64, 3, 7, 7, 6, 1, 0,
125
+  128, 128, 128, 192, 160, 128, 128, 5, 7, 7, 6, 0, 0, 32, 32, 248,
126
+  32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 112, 0, 0, 0, 0, 248,
127
+  5, 6, 6, 6, 0, 0, 248, 8, 80, 32, 80, 128, 5, 6, 6, 6,
128
+  0, 1, 32, 248, 16, 32, 112, 168, 3, 7, 7, 6, 1, 0, 32, 32,
129
+  32, 32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 32, 16, 136, 136, 136,
130
+  136, 5, 7, 7, 6, 0, 0, 128, 128, 248, 128, 128, 128, 120, 5, 6,
131
+  6, 6, 0, 0, 248, 8, 8, 8, 16, 96, 5, 5, 5, 6, 0, 1,
132
+  64, 160, 16, 8, 8, 5, 7, 7, 6, 0, 0, 32, 248, 32, 32, 168,
133
+  168, 32, 5, 6, 6, 6, 0, 0, 248, 8, 8, 80, 32, 16, 4, 6,
134
+  6, 6, 1, 0, 224, 0, 224, 0, 224, 16, 5, 6, 6, 6, 0, 0,
135
+  32, 64, 128, 136, 248, 8, 5, 6, 6, 6, 0, 0, 8, 8, 80, 32,
136
+  80, 128, 5, 6, 6, 6, 0, 0, 248, 64, 248, 64, 64, 56, 5, 7,
137
+  7, 6, 0, 0, 64, 64, 248, 72, 80, 64, 64, 5, 7, 7, 6, 0,
138
+  0, 112, 16, 16, 16, 16, 16, 248, 5, 6, 6, 6, 0, 0, 248, 8,
139
+  248, 8, 8, 248, 5, 7, 7, 6, 0, 0, 112, 0, 248, 8, 8, 16,
140
+  32, 4, 7, 7, 6, 0, 0, 144, 144, 144, 144, 16, 32, 64, 5, 6,
141
+  6, 6, 0, 0, 32, 160, 160, 168, 168, 176, 5, 7, 7, 6, 0, 0,
142
+  128, 128, 128, 136, 144, 160, 192, 5, 6, 6, 6, 0, 0, 248, 136, 136,
143
+  136, 136, 248, 5, 6, 6, 6, 0, 0, 248, 136, 136, 8, 16, 32, 5,
144
+  6, 6, 6, 0, 0, 192, 0, 8, 8, 16, 224, 4, 3, 3, 6, 0,
145
+  4, 32, 144, 64, 3, 3, 3, 6, 0, 4, 224, 160, 224, 5, 5, 5,
146
+  6, 0, 1, 72, 168, 144, 144, 104, 5, 7, 7, 6, 0, 0, 80, 0,
147
+  112, 8, 120, 136, 120, 4, 8, 8, 6, 1, 255, 96, 144, 144, 224, 144,
148
+  144, 224, 128, 5, 5, 5, 6, 0, 0, 112, 128, 96, 136, 112, 5, 6,
149
+  6, 6, 0, 255, 136, 136, 152, 232, 136, 128, 5, 5, 5, 6, 0, 0,
150
+  120, 160, 144, 136, 112, 5, 7, 7, 6, 0, 254, 48, 72, 136, 136, 240,
151
+  128, 128, 5, 8, 8, 6, 0, 254, 120, 136, 136, 136, 120, 8, 8, 112,
152
+  5, 5, 5, 6, 0, 1, 56, 32, 32, 160, 64, 4, 3, 3, 6, 0,
153
+  3, 16, 208, 16, 4, 8, 8, 6, 0, 255, 16, 0, 48, 16, 16, 16,
154
+  144, 96, 3, 3, 3, 6, 0, 4, 160, 64, 160, 5, 7, 7, 6, 0,
155
+  0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7, 6, 0, 0, 64, 64,
156
+  224, 64, 224, 64, 120, 5, 7, 7, 6, 0, 0, 112, 0, 176, 200, 136,
157
+  136, 136, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136, 112, 5,
158
+  7, 7, 6, 0, 255, 176, 200, 136, 136, 240, 128, 128, 5, 7, 7, 6,
159
+  0, 255, 104, 152, 136, 136, 120, 8, 8, 5, 6, 6, 6, 0, 0, 112,
160
+  136, 248, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88, 168, 208, 5, 5,
161
+  5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6, 0, 0, 80,
162
+  0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 248, 128, 64, 32,
163
+  64, 128, 248, 5, 5, 5, 6, 0, 0, 248, 80, 80, 80, 152, 5, 7,
164
+  7, 6, 0, 0, 248, 0, 136, 80, 32, 80, 136, 5, 7, 7, 6, 0,
165
+  255, 136, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 1, 8, 240,
166
+  32, 248, 32, 32, 5, 5, 5, 6, 0, 0, 248, 64, 120, 72, 136, 5,
167
+  5, 5, 6, 0, 0, 248, 168, 248, 136, 136, 5, 5, 5, 6, 0, 1,
168
+  32, 0, 248, 0, 32, 0, 0, 0, 6, 0, 8, 6, 10, 10, 6, 0,
169
+  254, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252
170
+};

+ 191
- 190
Marlin/dogm_font_data_HD44780_W.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t HD44780_W_5x7[3034] U8G_SECTION(".progmem.HD44780_W_5x7") = {
13
 const u8g_fntpgm_uint8_t HD44780_W_5x7[3034] U8G_SECTION(".progmem.HD44780_W_5x7") = {
14
-  0,6,9,0,254,7,2,79,3,222,16,255,255,8,255,7,
15
-  255,4,7,7,6,0,0,16,48,112,240,112,48,16,4,7,
16
-  7,6,1,0,128,192,224,240,224,192,128,5,3,3,6,0,
17
-  4,216,72,144,5,3,3,6,0,4,216,144,72,5,7,7,
18
-  6,0,0,32,112,248,0,32,112,248,5,7,7,6,0,0,
19
-  248,112,32,0,248,112,32,5,5,5,6,0,1,112,248,248,
20
-  248,112,5,7,7,6,0,0,8,8,40,72,248,64,32,5,
21
-  7,7,6,0,0,32,112,168,32,32,32,32,5,7,7,6,
22
-  0,0,32,32,32,32,168,112,32,5,5,5,6,0,1,32,
23
-  64,248,64,32,5,5,5,6,0,1,32,16,248,16,32,5,
24
-  7,7,6,0,0,16,32,64,32,16,0,248,5,7,7,6,
25
-  0,0,64,32,16,32,64,0,248,5,5,5,6,0,1,32,
26
-  32,112,112,248,5,5,5,6,0,0,248,112,112,32,32,0,
27
-  0,0,6,0,0,1,7,7,6,2,0,128,128,128,128,128,
28
-  0,128,3,2,2,6,1,5,160,160,5,7,7,6,0,0,
29
-  80,80,248,80,248,80,80,5,7,7,6,0,0,32,120,160,
30
-  112,40,240,32,5,7,7,6,0,0,192,200,16,32,64,152,
31
-  24,5,7,7,6,0,0,96,144,160,64,168,144,104,2,3,
32
-  3,6,1,4,192,64,128,3,7,7,6,1,0,32,64,128,
33
-  128,128,64,32,3,7,7,6,1,0,128,64,32,32,32,64,
34
-  128,5,5,5,6,0,1,32,168,112,168,32,5,5,5,6,
35
-  0,1,32,32,248,32,32,2,3,3,6,2,255,192,64,128,
36
-  5,1,1,6,0,3,248,2,2,2,6,2,0,192,192,5,
37
-  5,5,6,0,1,8,16,32,64,128,5,7,7,6,0,0,
38
-  112,136,152,168,200,136,112,3,7,7,6,1,0,64,192,64,
39
-  64,64,64,224,5,7,7,6,0,0,112,136,8,112,128,128,
40
-  248,5,7,7,6,0,0,248,16,32,16,8,8,240,5,7,
41
-  7,6,0,0,16,48,80,144,248,16,16,5,7,7,6,0,
42
-  0,248,128,240,8,8,136,112,5,7,7,6,0,0,48,64,
43
-  128,240,136,136,112,5,7,7,6,0,0,248,8,16,32,32,
44
-  32,32,5,7,7,6,0,0,112,136,136,112,136,136,112,5,
45
-  7,7,6,0,0,112,136,136,120,8,16,96,2,5,5,6,
46
-  2,0,192,192,0,192,192,2,6,6,6,2,255,192,192,0,
47
-  192,64,128,4,7,7,6,0,0,16,32,64,128,64,32,16,
48
-  5,3,3,6,0,2,248,0,248,4,7,7,6,1,0,128,
49
-  64,32,16,32,64,128,5,7,7,6,0,0,112,136,8,16,
50
-  32,0,32,5,6,6,6,0,0,112,136,8,104,168,112,5,
51
-  7,7,6,0,0,112,136,136,248,136,136,136,5,7,7,6,
52
-  0,0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,
53
-  136,128,128,128,136,112,5,7,7,6,0,0,224,144,136,136,
54
-  136,144,224,5,7,7,6,0,0,248,128,128,240,128,128,248,
55
-  5,7,7,6,0,0,248,128,128,240,128,128,128,5,7,7,
56
-  6,0,0,112,136,128,184,136,136,112,5,7,7,6,0,0,
57
-  136,136,136,248,136,136,136,1,7,7,6,2,0,128,128,128,
58
-  128,128,128,128,5,7,7,6,0,0,56,16,16,16,16,144,
59
-  96,5,7,7,6,0,0,136,144,160,192,160,144,136,5,7,
60
-  7,6,0,0,128,128,128,128,128,128,248,5,7,7,6,0,
61
-  0,136,216,168,136,136,136,136,5,7,7,6,0,0,136,136,
62
-  200,168,152,136,136,5,7,7,6,0,0,112,136,136,136,136,
63
-  136,112,5,7,7,6,0,0,240,136,136,240,128,128,128,5,
64
-  7,7,6,0,0,112,136,136,136,168,144,104,5,7,7,6,
65
-  0,0,240,136,136,240,160,144,136,5,7,7,6,0,0,120,
66
-  128,128,112,8,8,240,5,7,7,6,0,0,248,32,32,32,
67
-  32,32,32,5,7,7,6,0,0,136,136,136,136,136,136,112,
68
-  5,7,7,6,0,0,136,136,136,136,136,80,32,5,7,7,
69
-  6,0,0,136,136,136,136,136,168,80,5,7,7,6,0,0,
70
-  136,136,80,32,80,136,136,5,7,7,6,0,0,136,136,136,
71
-  80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128,
72
-  248,3,7,7,6,1,0,224,128,128,128,128,128,224,5,5,
73
-  5,6,0,1,128,64,32,16,8,3,7,7,6,1,0,224,
74
-  32,32,32,32,32,224,5,3,3,6,0,4,32,80,136,5,
75
-  1,1,6,0,0,248,2,2,2,6,2,5,128,64,5,5,
76
-  5,6,0,0,112,8,120,136,120,5,7,7,6,0,0,128,
77
-  128,176,200,136,136,240,5,5,5,6,0,0,112,128,128,136,
78
-  112,5,7,7,6,0,0,8,8,104,152,136,136,120,5,5,
79
-  5,6,0,0,112,136,248,128,112,5,7,7,6,0,0,48,
80
-  72,224,64,64,64,64,5,6,6,6,0,255,112,136,136,120,
81
-  8,112,5,7,7,6,0,0,128,128,176,200,136,136,136,1,
82
-  7,7,6,2,0,128,0,128,128,128,128,128,3,8,8,6,
83
-  1,255,32,0,32,32,32,32,160,64,4,7,7,6,0,0,
84
-  128,128,144,160,192,160,144,3,7,7,6,1,0,192,64,64,
85
-  64,64,64,224,5,5,5,6,0,0,208,168,168,168,168,5,
86
-  5,5,6,0,0,176,200,136,136,136,5,5,5,6,0,0,
87
-  112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128,
88
-  128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5,
89
-  6,0,0,176,200,128,128,128,5,5,5,6,0,0,112,128,
90
-  112,8,240,5,7,7,6,0,0,64,64,224,64,64,72,48,
91
-  5,5,5,6,0,0,136,136,136,152,104,5,5,5,6,0,
92
-  0,136,136,136,80,32,5,5,5,6,0,0,136,136,168,168,
93
-  80,5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,
94
-  0,255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,
95
-  32,64,248,3,7,7,6,1,0,32,64,64,128,64,64,32,
96
-  1,7,7,6,2,0,128,128,128,128,128,128,128,3,7,7,
97
-  6,1,0,128,64,64,32,64,64,128,5,6,6,6,0,1,
98
-  8,40,72,248,64,32,5,7,7,6,0,0,32,80,136,136,
99
-  136,136,248,5,7,7,6,0,0,248,136,128,240,136,136,240,
100
-  5,8,8,6,0,255,120,40,40,40,72,136,248,136,5,7,
101
-  7,6,0,0,168,168,168,112,168,168,168,5,7,7,6,0,
102
-  0,240,8,8,112,8,8,240,5,7,7,6,0,0,136,136,
103
-  152,168,200,136,136,5,8,8,6,0,0,80,32,136,152,168,
104
-  168,200,136,5,7,7,6,0,0,120,40,40,40,40,168,72,
105
-  5,7,7,6,0,0,248,136,136,136,136,136,136,5,7,7,
106
-  6,0,0,136,136,136,80,32,64,128,5,8,8,6,0,255,
107
-  136,136,136,136,136,136,248,8,5,7,7,6,0,0,136,136,
108
-  136,120,8,8,8,5,7,7,6,0,0,168,168,168,168,168,
109
-  168,248,5,8,8,6,0,255,168,168,168,168,168,168,248,8,
110
-  5,7,7,6,0,0,192,64,64,112,72,72,112,5,7,7,
111
-  6,0,0,136,136,136,200,168,168,200,5,7,7,6,0,0,
112
-  112,136,40,80,8,136,112,5,5,5,6,0,0,64,160,144,
113
-  144,104,5,7,7,6,0,0,32,48,40,40,32,224,224,5,
114
-  7,7,6,0,0,248,136,128,128,128,128,128,5,5,5,6,
115
-  0,0,248,80,80,80,152,5,7,7,6,0,0,248,128,64,
116
-  32,64,128,248,5,5,5,6,0,0,120,144,144,144,96,5,
117
-  7,7,6,0,0,48,40,56,40,200,216,24,5,6,6,6,
118
-  0,0,8,112,160,32,32,16,5,6,6,6,0,1,32,112,
119
-  112,112,248,32,5,7,7,6,0,0,112,136,136,248,136,136,
120
-  112,5,5,5,6,0,0,112,136,136,80,216,5,7,7,6,
121
-  0,0,48,72,32,80,136,136,112,5,3,3,6,0,2,88,
122
-  168,208,5,6,6,6,0,0,80,248,248,248,112,32,5,5,
123
-  5,6,0,0,112,128,96,136,112,5,7,7,6,0,0,112,
124
-  136,136,136,136,136,136,5,7,7,6,0,0,216,216,216,216,
125
-  216,216,216,1,7,7,6,2,0,128,0,128,128,128,128,128,
126
-  5,7,7,6,0,0,32,112,160,160,168,112,32,5,7,7,
127
-  6,0,0,48,64,64,224,64,80,168,5,5,5,6,0,0,
128
-  136,112,80,112,136,5,7,7,6,0,0,136,80,248,32,248,
129
-  32,32,1,7,7,6,2,0,128,128,128,0,128,128,128,5,
130
-  8,8,6,0,0,48,72,32,80,80,32,144,96,5,7,7,
131
-  6,0,0,24,32,32,112,32,32,192,5,7,7,6,0,0,
132
-  248,136,184,184,184,136,248,5,7,7,6,0,0,112,8,120,
133
-  136,120,0,248,5,5,5,6,0,1,40,80,160,80,40,5,
134
-  7,7,6,0,0,144,168,168,232,168,168,144,5,7,7,6,
135
-  0,0,120,136,136,120,40,72,136,5,7,7,6,0,0,248,
136
-  136,168,136,152,168,248,2,3,3,6,2,4,64,128,192,4,
137
-  5,5,6,0,3,96,144,144,144,96,5,7,7,6,0,0,
138
-  32,32,248,32,32,0,248,4,5,5,6,0,3,96,144,32,
139
-  64,240,3,5,5,6,0,3,224,32,224,32,224,5,8,8,
140
-  6,0,0,224,144,224,128,144,184,144,24,5,8,8,6,0,
141
-  255,136,136,136,136,152,232,128,128,5,7,7,6,0,0,120,
142
-  152,152,120,24,24,24,2,2,2,6,2,2,192,192,5,5,
143
-  5,6,0,0,80,136,168,168,80,3,5,5,6,0,3,64,
144
-  192,64,64,224,5,7,7,6,0,0,112,136,136,136,112,0,
145
-  248,5,5,5,6,0,1,160,80,40,80,160,5,7,7,6,
146
-  0,0,136,144,168,88,184,8,8,5,7,7,6,0,0,136,
147
-  144,184,72,152,32,56,5,8,8,6,0,0,192,64,192,72,
148
-  216,56,8,8,5,7,7,6,0,0,32,0,32,64,128,136,
149
-  112,5,8,8,6,0,0,64,32,32,80,136,248,136,136,5,
150
-  8,8,6,0,0,16,32,32,80,136,248,136,136,5,8,8,
151
-  6,0,0,32,80,0,112,136,248,136,136,5,8,8,6,0,
152
-  0,104,144,0,112,136,248,136,136,5,8,8,6,0,0,80,
153
-  0,32,80,136,248,136,136,5,8,8,6,0,0,32,80,32,
154
-  112,136,248,136,136,5,7,7,6,0,0,56,96,160,184,224,
155
-  160,184,5,8,8,6,0,255,112,136,128,128,136,112,32,96,
156
-  5,8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,
157
-  8,6,0,0,8,16,0,248,128,240,128,248,5,8,8,6,
158
-  0,0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,
159
-  80,0,248,128,240,128,248,3,8,8,6,1,0,128,64,0,
160
-  224,64,64,64,224,3,8,8,6,1,0,32,64,0,224,64,
161
-  64,64,224,3,8,8,6,1,0,64,160,0,224,64,64,64,
162
-  224,3,7,7,6,1,0,160,0,224,64,64,64,224,5,7,
163
-  7,6,0,0,112,72,72,232,72,72,112,5,8,8,6,0,
164
-  0,104,144,0,136,200,168,152,136,5,8,8,6,0,0,64,
165
-  32,112,136,136,136,136,112,5,8,8,6,0,0,16,32,112,
166
-  136,136,136,136,112,5,8,8,6,0,0,32,80,0,112,136,
167
-  136,136,112,5,8,8,6,0,0,104,144,0,112,136,136,136,
168
-  112,5,8,8,6,0,0,80,0,112,136,136,136,136,112,5,
169
-  5,5,6,0,1,136,80,32,80,136,5,7,7,6,0,0,
170
-  112,32,112,168,112,32,112,5,8,8,6,0,0,64,32,136,
171
-  136,136,136,136,112,5,8,8,6,0,0,16,32,136,136,136,
172
-  136,136,112,5,8,8,6,0,0,32,80,0,136,136,136,136,
173
-  112,5,8,8,6,0,0,80,0,136,136,136,136,136,112,5,
174
-  8,8,6,0,0,16,32,136,80,32,32,32,32,5,8,8,
175
-  6,0,0,192,64,112,72,72,112,64,224,5,7,7,6,0,
176
-  0,48,72,72,112,72,72,176,5,8,8,6,0,0,64,32,
177
-  0,112,8,120,136,120,5,8,8,6,0,0,16,32,0,112,
178
-  8,120,136,120,5,8,8,6,0,0,32,80,0,112,8,120,
179
-  136,120,5,8,8,6,0,0,104,144,0,112,8,120,136,120,
180
-  5,7,7,6,0,0,80,0,112,8,120,136,120,5,8,8,
181
-  6,0,0,32,80,32,112,8,120,136,120,5,6,6,6,0,
182
-  0,208,40,120,160,168,80,5,6,6,6,0,255,112,128,136,
183
-  112,32,96,5,8,8,6,0,0,64,32,0,112,136,248,128,
184
-  112,5,8,8,6,0,0,16,32,0,112,136,248,128,112,5,
185
-  8,8,6,0,0,32,80,0,112,136,248,128,112,5,7,7,
186
-  6,0,0,80,0,112,136,248,128,112,3,8,8,6,1,0,
187
-  128,64,0,64,192,64,64,224,3,8,8,6,1,0,32,64,
188
-  0,64,192,64,64,224,3,8,8,6,1,0,64,160,0,64,
189
-  192,64,64,224,3,7,7,6,1,0,160,0,64,192,64,64,
190
-  224,5,7,7,6,0,0,160,64,160,16,120,136,112,5,8,
191
-  8,6,0,0,104,144,0,176,200,136,136,136,5,8,8,6,
192
-  0,0,64,32,0,112,136,136,136,112,5,8,8,6,0,0,
193
-  16,32,0,112,136,136,136,112,5,8,8,6,0,0,32,80,
194
-  0,112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,
195
-  136,136,136,112,5,7,7,6,0,0,80,0,112,136,136,136,
196
-  112,5,5,5,6,0,1,32,0,248,0,32,5,7,7,6,
197
-  0,0,16,32,112,168,112,32,64,5,8,8,6,0,0,64,
198
-  32,0,136,136,136,152,104,5,8,8,6,0,0,16,32,0,
199
-  136,136,136,152,104,5,8,8,6,0,0,32,80,0,136,136,
200
-  136,152,104,5,7,7,6,0,0,80,0,136,136,136,152,104,
201
-  5,9,9,6,0,255,16,32,0,136,136,136,248,8,112,4,
202
-  7,7,6,1,0,192,64,96,80,96,64,224,5,8,8,6,
203
-  0,255,80,0,136,136,136,248,8,112};
14
+  0, 6, 9, 0, 254, 7, 2, 79, 3, 222, 16, 255, 255, 8, 255, 7,
15
+  255, 4, 7, 7, 6, 0, 0, 16, 48, 112, 240, 112, 48, 16, 4, 7,
16
+  7, 6, 1, 0, 128, 192, 224, 240, 224, 192, 128, 5, 3, 3, 6, 0,
17
+  4, 216, 72, 144, 5, 3, 3, 6, 0, 4, 216, 144, 72, 5, 7, 7,
18
+  6, 0, 0, 32, 112, 248, 0, 32, 112, 248, 5, 7, 7, 6, 0, 0,
19
+  248, 112, 32, 0, 248, 112, 32, 5, 5, 5, 6, 0, 1, 112, 248, 248,
20
+  248, 112, 5, 7, 7, 6, 0, 0, 8, 8, 40, 72, 248, 64, 32, 5,
21
+  7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32, 5, 7, 7, 6,
22
+  0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 5, 5, 6, 0, 1, 32,
23
+  64, 248, 64, 32, 5, 5, 5, 6, 0, 1, 32, 16, 248, 16, 32, 5,
24
+  7, 7, 6, 0, 0, 16, 32, 64, 32, 16, 0, 248, 5, 7, 7, 6,
25
+  0, 0, 64, 32, 16, 32, 64, 0, 248, 5, 5, 5, 6, 0, 1, 32,
26
+  32, 112, 112, 248, 5, 5, 5, 6, 0, 0, 248, 112, 112, 32, 32, 0,
27
+  0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128,
28
+  0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, 0, 0,
29
+  80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, 120, 160,
30
+  112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, 64, 152,
31
+  24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, 2, 3,
32
+  3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, 64, 128,
33
+  128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, 32, 64,
34
+  128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, 5, 6,
35
+  0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, 64, 128,
36
+  5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, 192, 5,
37
+  5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0,
38
+  112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, 192, 64,
39
+  64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, 128, 128,
40
+  248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, 5, 7,
41
+  7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, 6, 0,
42
+  0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, 48, 64,
43
+  128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 32,
44
+  32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, 112, 5,
45
+  7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, 5, 6,
46
+  2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, 192, 0,
47
+  192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, 32, 16,
48
+  5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, 0, 128,
49
+  64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, 8, 16,
50
+  32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, 112, 5,
51
+  7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6,
52
+  0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0, 112,
53
+  136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, 136, 136,
54
+  136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 248,
55
+  5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, 7, 7,
56
+  6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, 0, 0,
57
+  136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 128, 128,
58
+  128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, 16, 144,
59
+  96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, 5, 7,
60
+  7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, 6, 0,
61
+  0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136,
62
+  200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 136,
63
+  136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, 128, 5,
64
+  7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, 7, 6,
65
+  0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120,
66
+  128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, 32, 32,
67
+  32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 136, 112,
68
+  5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, 7, 7,
69
+  6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, 0, 0,
70
+  136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136,
71
+  80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 64, 128,
72
+  248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, 5, 5,
73
+  5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1, 0, 224,
74
+  32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80, 136, 5,
75
+  1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64, 5, 5,
76
+  5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 128,
77
+  128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128, 128, 136,
78
+  112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120, 5, 5,
79
+  5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0, 0, 48,
80
+  72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136, 136, 120,
81
+  8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136, 136, 1,
82
+  7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8, 8, 6,
83
+  1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6, 0, 0,
84
+  128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192, 64, 64,
85
+  64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168, 168, 5,
86
+  5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6, 0, 0,
87
+  112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136, 240, 128,
88
+  128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5, 5, 5,
89
+  6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128,
90
+  112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64, 72, 48,
91
+  5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5, 6, 0,
92
+  0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136, 168, 168,
93
+  80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6, 6, 6,
94
+  0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0, 248, 16,
95
+  32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32,
96
+  1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7,
97
+  6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 6, 6, 6, 0, 1,
98
+  8, 40, 72, 248, 64, 32, 5, 7, 7, 6, 0, 0, 32, 80, 136, 136,
99
+  136, 136, 248, 5, 7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240,
100
+  5, 8, 8, 6, 0, 255, 120, 40, 40, 40, 72, 136, 248, 136, 5, 7,
101
+  7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5, 7, 7, 6, 0,
102
+  0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 136, 136,
103
+  152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80, 32, 136, 152, 168,
104
+  168, 200, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168, 72,
105
+  5, 7, 7, 6, 0, 0, 248, 136, 136, 136, 136, 136, 136, 5, 7, 7,
106
+  6, 0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 8, 8, 6, 0, 255,
107
+  136, 136, 136, 136, 136, 136, 248, 8, 5, 7, 7, 6, 0, 0, 136, 136,
108
+  136, 120, 8, 8, 8, 5, 7, 7, 6, 0, 0, 168, 168, 168, 168, 168,
109
+  168, 248, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168, 168, 248, 8,
110
+  5, 7, 7, 6, 0, 0, 192, 64, 64, 112, 72, 72, 112, 5, 7, 7,
111
+  6, 0, 0, 136, 136, 136, 200, 168, 168, 200, 5, 7, 7, 6, 0, 0,
112
+  112, 136, 40, 80, 8, 136, 112, 5, 5, 5, 6, 0, 0, 64, 160, 144,
113
+  144, 104, 5, 7, 7, 6, 0, 0, 32, 48, 40, 40, 32, 224, 224, 5,
114
+  7, 7, 6, 0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 5, 5, 6,
115
+  0, 0, 248, 80, 80, 80, 152, 5, 7, 7, 6, 0, 0, 248, 128, 64,
116
+  32, 64, 128, 248, 5, 5, 5, 6, 0, 0, 120, 144, 144, 144, 96, 5,
117
+  7, 7, 6, 0, 0, 48, 40, 56, 40, 200, 216, 24, 5, 6, 6, 6,
118
+  0, 0, 8, 112, 160, 32, 32, 16, 5, 6, 6, 6, 0, 1, 32, 112,
119
+  112, 112, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136,
120
+  112, 5, 5, 5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6,
121
+  0, 0, 48, 72, 32, 80, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88,
122
+  168, 208, 5, 6, 6, 6, 0, 0, 80, 248, 248, 248, 112, 32, 5, 5,
123
+  5, 6, 0, 0, 112, 128, 96, 136, 112, 5, 7, 7, 6, 0, 0, 112,
124
+  136, 136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 216, 216, 216, 216,
125
+  216, 216, 216, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128,
126
+  5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7,
127
+  6, 0, 0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0,
128
+  136, 112, 80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248,
129
+  32, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5,
130
+  8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5, 7, 7,
131
+  6, 0, 0, 24, 32, 32, 112, 32, 32, 192, 5, 7, 7, 6, 0, 0,
132
+  248, 136, 184, 184, 184, 136, 248, 5, 7, 7, 6, 0, 0, 112, 8, 120,
133
+  136, 120, 0, 248, 5, 5, 5, 6, 0, 1, 40, 80, 160, 80, 40, 5,
134
+  7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6,
135
+  0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0, 248,
136
+  136, 168, 136, 152, 168, 248, 2, 3, 3, 6, 2, 4, 64, 128, 192, 4,
137
+  5, 5, 6, 0, 3, 96, 144, 144, 144, 96, 5, 7, 7, 6, 0, 0,
138
+  32, 32, 248, 32, 32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32,
139
+  64, 240, 3, 5, 5, 6, 0, 3, 224, 32, 224, 32, 224, 5, 8, 8,
140
+  6, 0, 0, 224, 144, 224, 128, 144, 184, 144, 24, 5, 8, 8, 6, 0,
141
+  255, 136, 136, 136, 136, 152, 232, 128, 128, 5, 7, 7, 6, 0, 0, 120,
142
+  152, 152, 120, 24, 24, 24, 2, 2, 2, 6, 2, 2, 192, 192, 5, 5,
143
+  5, 6, 0, 0, 80, 136, 168, 168, 80, 3, 5, 5, 6, 0, 3, 64,
144
+  192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 112, 0,
145
+  248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5, 7, 7, 6,
146
+  0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6, 0, 0, 136,
147
+  144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192, 64, 192, 72,
148
+  216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32, 64, 128, 136,
149
+  112, 5, 8, 8, 6, 0, 0, 64, 32, 32, 80, 136, 248, 136, 136, 5,
150
+  8, 8, 6, 0, 0, 16, 32, 32, 80, 136, 248, 136, 136, 5, 8, 8,
151
+  6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0,
152
+  0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 80,
153
+  0, 32, 80, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 32, 80, 32,
154
+  112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96, 160, 184, 224,
155
+  160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136, 112, 32, 96,
156
+  5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128, 248, 5, 8,
157
+  8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5, 8, 8, 6,
158
+  0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0,
159
+  80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0, 128, 64, 0,
160
+  224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64, 0, 224, 64,
161
+  64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224, 64, 64, 64,
162
+  224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 7,
163
+  7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8, 8, 6, 0,
164
+  0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6, 0, 0, 64,
165
+  32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 112,
166
+  136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136,
167
+  136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 136, 136, 136,
168
+  112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136, 136, 112, 5,
169
+  5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 7, 7, 6, 0, 0,
170
+  112, 32, 112, 168, 112, 32, 112, 5, 8, 8, 6, 0, 0, 64, 32, 136,
171
+  136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 136, 136,
172
+  136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136, 136, 136,
173
+  112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136, 136, 136, 112, 5,
174
+  8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 32, 5, 8, 8,
175
+  6, 0, 0, 192, 64, 112, 72, 72, 112, 64, 224, 5, 7, 7, 6, 0,
176
+  0, 48, 72, 72, 112, 72, 72, 176, 5, 8, 8, 6, 0, 0, 64, 32,
177
+  0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112,
178
+  8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 8, 120,
179
+  136, 120, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 8, 120, 136, 120,
180
+  5, 7, 7, 6, 0, 0, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8,
181
+  6, 0, 0, 32, 80, 32, 112, 8, 120, 136, 120, 5, 6, 6, 6, 0,
182
+  0, 208, 40, 120, 160, 168, 80, 5, 6, 6, 6, 0, 255, 112, 128, 136,
183
+  112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128,
184
+  112, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 128, 112, 5,
185
+  8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 128, 112, 5, 7, 7,
186
+  6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 3, 8, 8, 6, 1, 0,
187
+  128, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64,
188
+  0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 64,
189
+  192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 64, 192, 64, 64,
190
+  224, 5, 7, 7, 6, 0, 0, 160, 64, 160, 16, 120, 136, 112, 5, 8,
191
+  8, 6, 0, 0, 104, 144, 0, 176, 200, 136, 136, 136, 5, 8, 8, 6,
192
+  0, 0, 64, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0,
193
+  16, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80,
194
+  0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112,
195
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136,
196
+  112, 5, 5, 5, 6, 0, 1, 32, 0, 248, 0, 32, 5, 7, 7, 6,
197
+  0, 0, 16, 32, 112, 168, 112, 32, 64, 5, 8, 8, 6, 0, 0, 64,
198
+  32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 16, 32, 0,
199
+  136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136,
200
+  136, 152, 104, 5, 7, 7, 6, 0, 0, 80, 0, 136, 136, 136, 152, 104,
201
+  5, 9, 9, 6, 0, 255, 16, 32, 0, 136, 136, 136, 248, 8, 112, 4,
202
+  7, 7, 6, 1, 0, 192, 64, 96, 80, 96, 64, 224, 5, 8, 8, 6,
203
+  0, 255, 80, 0, 136, 136, 136, 248, 8, 112
204
+};

+ 163
- 163
Marlin/dogm_font_data_ISO10646_1.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t ISO10646_1_5x7[2592] U8G_SECTION(".progmem.ISO10646_1_5x7") = {
13
 const u8g_fntpgm_uint8_t ISO10646_1_5x7[2592] U8G_SECTION(".progmem.ISO10646_1_5x7") = {
14
-  0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
15
-  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,136,136,136,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
39
-  168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
40
-  7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
41
-  0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
42
-  136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
43
-  128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
44
-  5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
45
-  6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
46
-  128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
47
-  16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
48
-  136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
49
-  7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
50
-  0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
51
-  136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
52
-  128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
53
-  7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
54
-  0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
55
-  32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
56
-  136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
57
-  5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
58
-  6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
59
-  136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
60
-  32,64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,
61
-  224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
62
-  1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
63
-  80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
64
-  64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
65
-  0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
66
-  128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
67
-  120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
68
-  0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
69
-  136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
70
-  136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
71
-  8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
72
-  6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
73
-  192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
74
-  168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
75
-  6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
76
-  136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
77
-  5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
78
-  0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
79
-  64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
80
-  5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
81
-  136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
82
-  6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
83
-  0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
84
-  64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
85
-  3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
86
-  6,0,2,104,144,0,0,0,6,0,0,0,0,0,6,0,
87
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
88
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
89
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
90
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
91
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
92
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
93
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
94
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
95
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
96
-  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
97
-  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
98
-  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
99
-  0,1,7,7,6,2,0,128,0,128,128,128,128,128,5,7,
100
-  7,6,0,0,32,112,168,160,168,112,32,5,7,7,6,0,
101
-  0,48,64,64,224,64,80,168,5,5,5,6,0,0,136,112,
102
-  80,112,136,5,7,7,6,0,0,136,80,32,248,32,248,32,
103
-  1,7,7,6,2,0,128,128,128,0,128,128,128,5,8,8,
104
-  6,0,0,48,72,32,80,80,32,144,96,3,1,1,6,1,
105
-  7,160,5,7,7,6,0,0,248,136,184,184,184,136,248,5,
106
-  7,7,6,0,1,112,8,120,136,120,0,248,5,5,5,6,
107
-  0,1,40,80,160,80,40,5,3,3,6,0,1,248,8,8,
108
-  2,2,2,6,2,6,64,128,5,7,7,6,0,0,248,136,
109
-  168,136,152,168,248,5,1,1,6,0,6,248,4,4,4,6,
110
-  0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,32,
111
-  32,0,248,4,5,5,6,0,3,96,144,32,64,240,3,5,
112
-  5,6,0,3,224,32,224,32,224,2,2,2,6,2,6,64,
113
-  128,5,8,8,6,0,255,136,136,136,136,152,232,128,128,5,
114
-  7,7,6,0,0,120,152,152,120,24,24,24,2,2,2,6,
115
-  2,2,192,192,2,2,2,6,2,255,64,128,3,5,5,6,
116
-  0,3,64,192,64,64,224,5,7,7,6,0,1,112,136,136,
117
-  136,112,0,248,5,5,5,6,0,1,160,80,40,80,160,5,
118
-  7,7,6,0,0,136,144,168,88,184,8,8,5,7,7,6,
119
-  0,0,136,144,184,72,152,32,56,5,8,8,6,0,0,192,
120
-  64,192,72,216,56,8,8,5,7,7,6,0,0,32,0,32,
121
-  64,128,136,112,5,8,8,6,0,0,64,32,0,112,136,248,
122
-  136,136,5,8,8,6,0,0,16,32,0,112,136,248,136,136,
123
-  5,8,8,6,0,0,32,80,0,112,136,248,136,136,5,8,
124
-  8,6,0,0,104,144,0,112,136,248,136,136,5,8,8,6,
125
-  0,0,80,0,112,136,136,248,136,136,5,8,8,6,0,0,
126
-  32,80,32,112,136,248,136,136,5,7,7,6,0,0,56,96,
127
-  160,184,224,160,184,5,8,8,6,0,255,112,136,128,128,136,
128
-  112,32,96,5,8,8,6,0,0,64,32,0,248,128,240,128,
129
-  248,5,8,8,6,0,0,8,16,0,248,128,240,128,248,5,
130
-  8,8,6,0,0,32,80,0,248,128,240,128,248,5,7,7,
131
-  6,0,0,80,0,248,128,240,128,248,3,8,8,6,1,0,
132
-  128,64,0,224,64,64,64,224,3,8,8,6,1,0,32,64,
133
-  0,224,64,64,64,224,3,8,8,6,1,0,64,160,0,224,
134
-  64,64,64,224,3,7,7,6,1,0,160,0,224,64,64,64,
135
-  224,5,7,7,6,0,0,112,72,72,232,72,72,112,5,8,
136
-  8,6,0,0,104,144,0,136,200,168,152,136,5,8,8,6,
137
-  0,0,64,32,112,136,136,136,136,112,5,8,8,6,0,0,
138
-  16,32,112,136,136,136,136,112,5,8,8,6,0,0,32,80,
139
-  0,112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,
140
-  136,136,136,112,5,8,8,6,0,0,80,0,112,136,136,136,
141
-  136,112,5,5,5,6,0,1,136,80,32,80,136,5,8,8,
142
-  6,0,255,16,112,168,168,168,168,112,64,5,8,8,6,0,
143
-  0,64,32,136,136,136,136,136,112,5,8,8,6,0,0,16,
144
-  32,136,136,136,136,136,112,5,8,8,6,0,0,32,80,0,
145
-  136,136,136,136,112,5,8,8,6,0,0,80,0,136,136,136,
146
-  136,136,112,5,8,8,6,0,0,16,32,136,80,32,32,32,
147
-  32,5,9,9,6,0,255,192,64,112,72,72,112,64,64,224,
148
-  4,8,8,6,1,255,96,144,144,160,144,144,224,128,5,8,
149
-  8,6,0,0,64,32,0,112,8,120,136,120,5,8,8,6,
150
-  0,0,16,32,0,112,8,120,136,120,5,8,8,6,0,0,
151
-  32,80,0,112,8,120,136,120,5,8,8,6,0,0,104,144,
152
-  0,112,8,120,136,120,5,7,7,6,0,0,80,0,112,8,
153
-  120,136,120,5,8,8,6,0,0,32,80,32,112,8,120,136,
154
-  120,5,6,6,6,0,0,208,40,120,160,168,80,5,6,6,
155
-  6,0,255,112,128,136,112,32,96,5,8,8,6,0,0,64,
156
-  32,0,112,136,248,128,112,5,8,8,6,0,0,16,32,0,
157
-  112,136,248,128,112,5,8,8,6,0,0,32,80,0,112,136,
158
-  248,128,112,5,7,7,6,0,0,80,0,112,136,248,128,112,
159
-  3,8,8,6,1,0,128,64,0,64,192,64,64,224,3,8,
160
-  8,6,1,0,32,64,0,64,192,64,64,224,3,8,8,6,
161
-  1,0,64,160,0,64,192,64,64,224,3,7,7,6,1,0,
162
-  160,0,64,192,64,64,224,5,7,7,6,0,0,160,64,160,
163
-  16,120,136,112,5,8,8,6,0,0,104,144,0,176,200,136,
164
-  136,136,5,8,8,6,0,0,64,32,0,112,136,136,136,112,
165
-  5,8,8,6,0,0,16,32,0,112,136,136,136,112,5,8,
166
-  8,6,0,0,32,80,0,112,136,136,136,112,5,8,8,6,
167
-  0,0,104,144,0,112,136,136,136,112,5,7,7,6,0,0,
168
-  80,0,112,136,136,136,112,5,5,5,6,0,1,32,0,248,
169
-  0,32,5,7,7,6,0,255,16,112,168,168,168,112,64,5,
170
-  8,8,6,0,0,64,32,0,136,136,136,152,104,5,8,8,
171
-  6,0,0,16,32,0,136,136,136,152,104,5,8,8,6,0,
172
-  0,32,80,0,136,136,136,152,104,5,7,7,6,0,0,80,
173
-  0,136,136,136,152,104,5,9,9,6,0,255,16,32,0,136,
174
-  136,136,248,8,112,4,7,7,6,1,255,192,64,96,80,96,
175
-  64,224,5,8,8,6,0,255,80,0,136,136,136,120,8,112
176
-  };
14
+  0, 6, 9, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 8, 255, 7,
15
+  255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 136, 136, 136, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5,
40
+  7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6,
41
+  0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240,
42
+  136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240,
43
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128,
44
+  5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7,
45
+  6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0,
46
+  128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16,
47
+  16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144,
48
+  136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7,
49
+  7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0,
50
+  0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136,
51
+  136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
52
+  128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5,
53
+  7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6,
54
+  0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248,
55
+  32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136,
56
+  136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32,
57
+  5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7,
58
+  6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0,
59
+  136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16,
60
+  32, 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128,
61
+  224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6,
62
+  1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32,
63
+  80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128,
64
+  64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6,
65
+  0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112,
66
+  128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136,
67
+  120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6,
68
+  0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112,
69
+  136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136,
70
+  136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3,
71
+  8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7,
72
+  6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0,
73
+  192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168,
74
+  168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5,
75
+  6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136,
76
+  136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8,
77
+  5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0,
78
+  0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64,
79
+  64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5,
80
+  5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136,
81
+  136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5,
82
+  6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0,
83
+  0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128,
84
+  64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128,
85
+  3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2,
86
+  6, 0, 2, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
87
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
88
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
89
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
90
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
91
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
92
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
93
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
94
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
95
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
96
+  0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0,
97
+  6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0,
98
+  0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0,
99
+  0, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 5, 7,
100
+  7, 6, 0, 0, 32, 112, 168, 160, 168, 112, 32, 5, 7, 7, 6, 0,
101
+  0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0, 136, 112,
102
+  80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 32, 248, 32, 248, 32,
103
+  1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5, 8, 8,
104
+  6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 3, 1, 1, 6, 1,
105
+  7, 160, 5, 7, 7, 6, 0, 0, 248, 136, 184, 184, 184, 136, 248, 5,
106
+  7, 7, 6, 0, 1, 112, 8, 120, 136, 120, 0, 248, 5, 5, 5, 6,
107
+  0, 1, 40, 80, 160, 80, 40, 5, 3, 3, 6, 0, 1, 248, 8, 8,
108
+  2, 2, 2, 6, 2, 6, 64, 128, 5, 7, 7, 6, 0, 0, 248, 136,
109
+  168, 136, 152, 168, 248, 5, 1, 1, 6, 0, 6, 248, 4, 4, 4, 6,
110
+  0, 3, 96, 144, 144, 96, 5, 7, 7, 6, 0, 0, 32, 32, 248, 32,
111
+  32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32, 64, 240, 3, 5,
112
+  5, 6, 0, 3, 224, 32, 224, 32, 224, 2, 2, 2, 6, 2, 6, 64,
113
+  128, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 152, 232, 128, 128, 5,
114
+  7, 7, 6, 0, 0, 120, 152, 152, 120, 24, 24, 24, 2, 2, 2, 6,
115
+  2, 2, 192, 192, 2, 2, 2, 6, 2, 255, 64, 128, 3, 5, 5, 6,
116
+  0, 3, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 1, 112, 136, 136,
117
+  136, 112, 0, 248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5,
118
+  7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6,
119
+  0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192,
120
+  64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32,
121
+  64, 128, 136, 112, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248,
122
+  136, 136, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 136, 136,
123
+  5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8,
124
+  8, 6, 0, 0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6,
125
+  0, 0, 80, 0, 112, 136, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0,
126
+  32, 80, 32, 112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96,
127
+  160, 184, 224, 160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136,
128
+  112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128,
129
+  248, 5, 8, 8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5,
130
+  8, 8, 6, 0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7,
131
+  6, 0, 0, 80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0,
132
+  128, 64, 0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64,
133
+  0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224,
134
+  64, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64,
135
+  224, 5, 7, 7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8,
136
+  8, 6, 0, 0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6,
137
+  0, 0, 64, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0,
138
+  16, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80,
139
+  0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112,
140
+  136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136,
141
+  136, 112, 5, 5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 8, 8,
142
+  6, 0, 255, 16, 112, 168, 168, 168, 168, 112, 64, 5, 8, 8, 6, 0,
143
+  0, 64, 32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16,
144
+  32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0,
145
+  136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136,
146
+  136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32,
147
+  32, 5, 9, 9, 6, 0, 255, 192, 64, 112, 72, 72, 112, 64, 64, 224,
148
+  4, 8, 8, 6, 1, 255, 96, 144, 144, 160, 144, 144, 224, 128, 5, 8,
149
+  8, 6, 0, 0, 64, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6,
150
+  0, 0, 16, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0,
151
+  32, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 104, 144,
152
+  0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 80, 0, 112, 8,
153
+  120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 32, 112, 8, 120, 136,
154
+  120, 5, 6, 6, 6, 0, 0, 208, 40, 120, 160, 168, 80, 5, 6, 6,
155
+  6, 0, 255, 112, 128, 136, 112, 32, 96, 5, 8, 8, 6, 0, 0, 64,
156
+  32, 0, 112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 16, 32, 0,
157
+  112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136,
158
+  248, 128, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112,
159
+  3, 8, 8, 6, 1, 0, 128, 64, 0, 64, 192, 64, 64, 224, 3, 8,
160
+  8, 6, 1, 0, 32, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6,
161
+  1, 0, 64, 160, 0, 64, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0,
162
+  160, 0, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 160, 64, 160,
163
+  16, 120, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 176, 200, 136,
164
+  136, 136, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 136, 136, 112,
165
+  5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 136, 136, 112, 5, 8,
166
+  8, 6, 0, 0, 32, 80, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6,
167
+  0, 0, 104, 144, 0, 112, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0,
168
+  80, 0, 112, 136, 136, 136, 112, 5, 5, 5, 6, 0, 1, 32, 0, 248,
169
+  0, 32, 5, 7, 7, 6, 0, 255, 16, 112, 168, 168, 168, 112, 64, 5,
170
+  8, 8, 6, 0, 0, 64, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8,
171
+  6, 0, 0, 16, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0,
172
+  0, 32, 80, 0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 80,
173
+  0, 136, 136, 136, 152, 104, 5, 9, 9, 6, 0, 255, 16, 32, 0, 136,
174
+  136, 136, 248, 8, 112, 4, 7, 7, 6, 1, 255, 192, 64, 96, 80, 96,
175
+  64, 224, 5, 8, 8, 6, 0, 255, 80, 0, 136, 136, 136, 120, 8, 112
176
+};

+ 161
- 161
Marlin/dogm_font_data_ISO10646_5_Cyrillic.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t ISO10646_5_Cyrillic_5x7[2560] U8G_SECTION(".progmem.ISO10646_5_Cyrillic_5x7") = {
13
 const u8g_fntpgm_uint8_t ISO10646_5_Cyrillic_5x7[2560] U8G_SECTION(".progmem.ISO10646_5_Cyrillic_5x7") = {
14
-  0,6,9,0,254,7,1,145,3,32,32,255,255,8,255,7,
15
-  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
-  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
-  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
-  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
-  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
-  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
-  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
-  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
-  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
-  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
-  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
-  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
-  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
-  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
-  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
-  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
-  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
-  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
-  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
-  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
-  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
-  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
-  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
-  5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
62
-  0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
63
-  136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
64
-  5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
65
-  0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
66
-  128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
67
-  5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
68
-  0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
69
-  136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
70
-  136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
71
-  8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
72
-  0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
73
-  64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
74
-  168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
75
-  0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
76
-  240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
77
-  5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
78
-  112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
79
-  72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
80
-  6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
81
-  168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
82
-  6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
83
-  248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
84
-  64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
85
-  7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
86
-  0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
87
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
88
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
89
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
90
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
91
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
92
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
93
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
94
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
95
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
96
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
97
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
98
-  0,6,0,0,0,0,0,6,0,0,5,8,8,6,0,0,
99
-  64,248,128,128,240,128,128,248,5,8,8,6,0,0,80,248,
100
-  128,128,240,128,128,248,5,7,7,6,0,0,224,64,64,112,
101
-  72,72,112,5,8,8,6,0,0,16,32,248,136,128,128,128,
102
-  128,5,7,7,6,0,0,48,72,128,224,128,72,48,5,7,
103
-  7,6,0,0,112,136,128,112,8,136,112,3,7,7,6,1,
104
-  0,224,64,64,64,64,64,224,3,8,8,6,1,0,160,0,
105
-  224,64,64,64,64,224,5,7,7,6,0,0,56,16,16,16,
106
-  16,144,96,5,7,7,6,0,0,160,160,160,184,168,168,184,
107
-  5,7,7,6,0,0,160,160,160,248,168,168,184,4,7,7,
108
-  6,0,0,224,64,112,80,80,80,80,5,8,8,6,0,0,
109
-  16,32,136,144,160,224,144,136,5,8,8,6,0,0,64,32,
110
-  136,152,168,200,136,136,5,9,9,6,0,255,80,32,136,136,
111
-  136,80,32,32,32,5,8,8,6,0,255,136,136,136,136,136,
112
-  136,248,32,5,7,7,6,0,0,112,136,136,248,136,136,136,
113
-  5,7,7,6,0,0,248,128,128,240,136,136,240,5,7,7,
114
-  6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,0,
115
-  248,136,128,128,128,128,128,5,8,8,6,0,255,120,40,40,
116
-  40,72,136,248,136,5,7,7,6,0,0,248,128,128,240,128,
117
-  128,248,5,7,7,6,0,0,168,168,168,112,168,168,168,5,
118
-  7,7,6,0,0,240,8,8,112,8,8,240,5,7,7,6,
119
-  0,0,136,136,152,168,200,136,136,5,8,8,6,0,0,80,
120
-  32,136,152,168,168,200,136,5,7,7,6,0,0,136,144,160,
121
-  192,160,144,136,5,7,7,6,0,0,120,40,40,40,40,168,
122
-  72,5,7,7,6,0,0,136,216,168,136,136,136,136,5,7,
123
-  7,6,0,0,136,136,136,248,136,136,136,5,7,7,6,0,
124
-  0,112,136,136,136,136,136,112,5,7,7,6,0,0,248,136,
125
-  136,136,136,136,136,5,7,7,6,0,0,240,136,136,240,128,
126
-  128,128,5,7,7,6,0,0,112,136,128,128,128,136,112,5,
127
-  7,7,6,0,0,248,32,32,32,32,32,32,5,7,7,6,
128
-  0,0,136,136,136,80,32,64,128,5,7,7,6,0,0,32,
129
-  112,168,168,168,112,32,5,7,7,6,0,0,136,136,80,32,
130
-  80,136,136,5,8,8,6,0,255,136,136,136,136,136,136,248,
131
-  8,5,7,7,6,0,0,136,136,136,152,104,8,8,5,7,
132
-  7,6,0,0,168,168,168,168,168,168,248,5,8,8,6,0,
133
-  255,168,168,168,168,168,168,248,8,5,7,7,6,0,0,192,
134
-  64,64,112,72,72,112,5,7,7,6,0,0,136,136,136,200,
135
-  168,168,200,5,7,7,6,0,0,128,128,128,240,136,136,240,
136
-  5,7,7,6,0,0,112,136,8,56,8,136,112,5,7,7,
137
-  6,0,0,144,168,168,232,168,168,144,5,7,7,6,0,0,
138
-  120,136,136,120,40,72,136,5,5,5,6,0,0,112,8,120,
139
-  136,120,5,7,7,6,0,0,24,96,128,240,136,136,112,4,
140
-  5,5,6,0,0,224,144,224,144,224,5,5,5,6,0,0,
141
-  248,136,128,128,128,5,6,6,6,0,255,120,40,72,136,248,
142
-  136,5,5,5,6,0,0,112,136,248,128,112,5,5,5,6,
143
-  0,0,168,168,112,168,168,5,5,5,6,0,0,240,8,48,
144
-  8,240,5,5,5,6,0,0,136,152,168,200,136,5,7,7,
145
-  6,0,0,80,32,136,152,168,200,136,4,5,5,6,0,0,
146
-  144,160,192,160,144,5,5,5,6,0,0,248,40,40,168,72,
147
-  5,5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,
148
-  0,136,136,248,136,136,5,5,5,6,0,0,112,136,136,136,
149
-  112,5,5,5,6,0,0,248,136,136,136,136,5,6,6,6,
150
-  0,255,240,136,136,240,128,128,5,5,5,6,0,0,112,128,
151
-  128,136,112,5,5,5,6,0,0,248,32,32,32,32,5,6,
152
-  6,6,0,255,136,136,136,120,8,112,5,6,6,6,0,0,
153
-  32,112,168,168,112,32,5,5,5,6,0,0,136,80,32,80,
154
-  136,5,6,6,6,0,255,136,136,136,136,248,8,5,5,5,
155
-  6,0,0,136,136,248,8,8,5,5,5,6,0,0,168,168,
156
-  168,168,248,5,6,6,6,0,255,168,168,168,168,248,8,5,
157
-  5,5,6,0,0,192,64,112,72,112,5,5,5,6,0,0,
158
-  136,136,200,168,200,3,5,5,6,1,0,128,128,192,160,192,
159
-  5,5,5,6,0,0,112,136,56,136,112,5,5,5,6,0,
160
-  0,144,168,232,168,144,5,5,5,6,0,0,120,136,120,40,
161
-  72,5,8,8,6,0,0,64,32,0,112,136,248,128,112,5,
162
-  7,7,6,0,0,80,0,112,136,248,128,112,5,9,9,6,
163
-  0,255,64,224,64,64,120,72,72,72,16,5,8,8,6,0,
164
-  0,16,32,0,248,136,128,128,128,5,5,5,6,0,0,112,
165
-  136,96,136,112,5,5,5,6,0,0,112,128,112,8,240,1,
166
-  7,7,6,2,0,128,0,128,128,128,128,128,3,7,7,6,
167
-  1,0,160,0,64,64,64,64,64,3,8,8,6,1,255,32,
168
-  0,32,32,32,32,160,64,5,5,5,6,0,0,160,160,184,
169
-  168,184,5,5,5,6,0,0,160,160,248,168,184,5,6,6,
170
-  6,0,0,64,224,64,120,72,72,4,8,8,6,0,0,16,
171
-  32,0,144,160,192,160,144,5,8,8,6,0,0,64,32,0,
172
-  136,152,168,200,136,5,9,9,6,0,255,80,32,0,136,136,
173
-  136,120,8,112,5,6,6,6,0,255,136,136,136,136,248,32
174
-  };
14
+  0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7,
15
+  255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
40
+  7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
41
+  0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
42
+  136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
43
+  128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
44
+  7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
45
+  0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
46
+  128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
47
+  16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
48
+  5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
49
+  6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
50
+  136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
51
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
52
+  128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
53
+  7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
54
+  0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
55
+  32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
56
+  136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
57
+  7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
58
+  0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
59
+  136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
60
+  64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
61
+  5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1,
62
+  0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80,
63
+  136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64,
64
+  5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0,
65
+  0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128,
66
+  128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120,
67
+  5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0,
68
+  0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136,
69
+  136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136,
70
+  136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8,
71
+  8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6,
72
+  0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192,
73
+  64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168,
74
+  168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6,
75
+  0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136,
76
+  240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5,
77
+  5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0,
78
+  112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64,
79
+  72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5,
80
+  6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136,
81
+  168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6,
82
+  6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0,
83
+  248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64,
84
+  64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3,
85
+  7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6,
86
+  0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
87
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
88
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
89
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
90
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
91
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
92
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
93
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
94
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
95
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
96
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
97
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
98
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 8, 8, 6, 0, 0,
99
+  64, 248, 128, 128, 240, 128, 128, 248, 5, 8, 8, 6, 0, 0, 80, 248,
100
+  128, 128, 240, 128, 128, 248, 5, 7, 7, 6, 0, 0, 224, 64, 64, 112,
101
+  72, 72, 112, 5, 8, 8, 6, 0, 0, 16, 32, 248, 136, 128, 128, 128,
102
+  128, 5, 7, 7, 6, 0, 0, 48, 72, 128, 224, 128, 72, 48, 5, 7,
103
+  7, 6, 0, 0, 112, 136, 128, 112, 8, 136, 112, 3, 7, 7, 6, 1,
104
+  0, 224, 64, 64, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 160, 0,
105
+  224, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
106
+  16, 144, 96, 5, 7, 7, 6, 0, 0, 160, 160, 160, 184, 168, 168, 184,
107
+  5, 7, 7, 6, 0, 0, 160, 160, 160, 248, 168, 168, 184, 4, 7, 7,
108
+  6, 0, 0, 224, 64, 112, 80, 80, 80, 80, 5, 8, 8, 6, 0, 0,
109
+  16, 32, 136, 144, 160, 224, 144, 136, 5, 8, 8, 6, 0, 0, 64, 32,
110
+  136, 152, 168, 200, 136, 136, 5, 9, 9, 6, 0, 255, 80, 32, 136, 136,
111
+  136, 80, 32, 32, 32, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136,
112
+  136, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136,
113
+  5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 136, 136, 240, 5, 7, 7,
114
+  6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0,
115
+  248, 136, 128, 128, 128, 128, 128, 5, 8, 8, 6, 0, 255, 120, 40, 40,
116
+  40, 72, 136, 248, 136, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
117
+  128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5,
118
+  7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6,
119
+  0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80,
120
+  32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0, 0, 136, 144, 160,
121
+  192, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168,
122
+  72, 5, 7, 7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7,
123
+  7, 6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6, 0,
124
+  0, 112, 136, 136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 136,
125
+  136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
126
+  128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 128, 128, 128, 136, 112, 5,
127
+  7, 7, 6, 0, 0, 248, 32, 32, 32, 32, 32, 32, 5, 7, 7, 6,
128
+  0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 7, 7, 6, 0, 0, 32,
129
+  112, 168, 168, 168, 112, 32, 5, 7, 7, 6, 0, 0, 136, 136, 80, 32,
130
+  80, 136, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136, 136, 248,
131
+  8, 5, 7, 7, 6, 0, 0, 136, 136, 136, 152, 104, 8, 8, 5, 7,
132
+  7, 6, 0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 8, 8, 6, 0,
133
+  255, 168, 168, 168, 168, 168, 168, 248, 8, 5, 7, 7, 6, 0, 0, 192,
134
+  64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200,
135
+  168, 168, 200, 5, 7, 7, 6, 0, 0, 128, 128, 128, 240, 136, 136, 240,
136
+  5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112, 5, 7, 7,
137
+  6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6, 0, 0,
138
+  120, 136, 136, 120, 40, 72, 136, 5, 5, 5, 6, 0, 0, 112, 8, 120,
139
+  136, 120, 5, 7, 7, 6, 0, 0, 24, 96, 128, 240, 136, 136, 112, 4,
140
+  5, 5, 6, 0, 0, 224, 144, 224, 144, 224, 5, 5, 5, 6, 0, 0,
141
+  248, 136, 128, 128, 128, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248,
142
+  136, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6,
143
+  0, 0, 168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48,
144
+  8, 240, 5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7,
145
+  6, 0, 0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0,
146
+  144, 160, 192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72,
147
+  5, 5, 5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0,
148
+  0, 136, 136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 112, 136, 136, 136,
149
+  112, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5, 6, 6, 6,
150
+  0, 255, 240, 136, 136, 240, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128,
151
+  128, 136, 112, 5, 5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 6,
152
+  6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 0,
153
+  32, 112, 168, 168, 112, 32, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80,
154
+  136, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 8, 5, 5, 5,
155
+  6, 0, 0, 136, 136, 248, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168,
156
+  168, 168, 248, 5, 6, 6, 6, 0, 255, 168, 168, 168, 168, 248, 8, 5,
157
+  5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0, 0,
158
+  136, 136, 200, 168, 200, 3, 5, 5, 6, 1, 0, 128, 128, 192, 160, 192,
159
+  5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6, 0,
160
+  0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120, 40,
161
+  72, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128, 112, 5,
162
+  7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 9, 9, 6,
163
+  0, 255, 64, 224, 64, 64, 120, 72, 72, 72, 16, 5, 8, 8, 6, 0,
164
+  0, 16, 32, 0, 248, 136, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112,
165
+  136, 96, 136, 112, 5, 5, 5, 6, 0, 0, 112, 128, 112, 8, 240, 1,
166
+  7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 7, 7, 6,
167
+  1, 0, 160, 0, 64, 64, 64, 64, 64, 3, 8, 8, 6, 1, 255, 32,
168
+  0, 32, 32, 32, 32, 160, 64, 5, 5, 5, 6, 0, 0, 160, 160, 184,
169
+  168, 184, 5, 5, 5, 6, 0, 0, 160, 160, 248, 168, 184, 5, 6, 6,
170
+  6, 0, 0, 64, 224, 64, 120, 72, 72, 4, 8, 8, 6, 0, 0, 16,
171
+  32, 0, 144, 160, 192, 160, 144, 5, 8, 8, 6, 0, 0, 64, 32, 0,
172
+  136, 152, 168, 200, 136, 5, 9, 9, 6, 0, 255, 80, 32, 0, 136, 136,
173
+  136, 120, 8, 112, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 32
174
+};

+ 258
- 257
Marlin/dogm_font_data_ISO10646_CN.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = {
13
 const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = {
14
-  0,12,11,0,254,7,1,146,3,33,32,255,255,10,255,7,
15
-  255,0,0,0,6,0,10,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,0,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168,
39
-  168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,
40
-  7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,
41
-  0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240,
42
-  136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240,
43
-  128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,
44
-  5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,
45
-  6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,
46
-  128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,
47
-  16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,
48
-  136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,
49
-  7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,
50
-  0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,
51
-  136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,
52
-  128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,
53
-  7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,
54
-  0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,
55
-  32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,
56
-  136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,
57
-  5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,
58
-  6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,
59
-  136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,
60
-  32,64,128,248,3,7,7,6,0,0,224,128,128,128,128,128,
61
-  224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,
62
-  0,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,
63
-  80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,
64
-  64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,
65
-  0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,
66
-  128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,
67
-  120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,
68
-  0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,
69
-  136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,
70
-  136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,
71
-  8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,
72
-  6,1,0,128,128,144,160,192,160,144,3,7,7,6,1,0,
73
-  192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,
74
-  168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,
75
-  6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,
76
-  136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,
77
-  5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,
78
-  0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64,
79
-  64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5,
80
-  5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,
81
-  136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,
82
-  6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,
83
-  0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,
84
-  64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,
85
-  3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,
86
-  6,0,3,104,144,0,0,0,6,0,10,0,0,0,12,0,
87
-  10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
88
-  12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
89
-  0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
90
-  10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
91
-  12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
92
-  0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
93
-  10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
94
-  12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0,
95
-  0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0,
96
-  10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0,
97
-  12,0,10,0,0,0,12,0,10,11,11,22,12,0,255,255,
98
-  224,2,0,2,0,4,0,13,0,20,128,36,64,196,32,4,
99
-  0,4,0,4,0,11,11,22,12,0,255,249,0,138,0,171,
100
-  224,172,64,170,64,170,64,170,64,170,128,33,0,82,128,140,
101
-  96,11,11,22,12,0,255,36,0,36,0,63,128,68,0,132,
102
-  0,4,0,255,224,10,0,17,0,32,128,192,96,11,11,22,
103
-  12,0,255,36,0,36,0,63,192,68,0,4,0,255,224,9,
104
-  0,9,0,17,32,33,32,64,224,11,11,22,12,0,255,32,
105
-  0,61,224,81,32,145,32,17,32,255,32,17,32,41,32,37,
106
-  224,69,32,128,0,11,11,22,12,0,255,32,128,127,192,8,
107
-  64,255,224,17,0,32,128,95,64,128,32,63,128,0,0,127,
108
-  192,11,11,22,12,0,255,34,64,71,224,148,128,228,128,47,
109
-  224,68,128,244,128,7,224,52,128,196,128,7,224,11,11,22,
110
-  12,0,255,4,128,143,224,73,0,25,0,47,192,9,0,9,
111
-  0,47,192,73,0,137,0,15,224,11,11,22,12,0,255,16,
112
-  0,63,128,81,0,14,0,49,128,192,96,63,128,36,128,63,
113
-  128,36,128,63,128,11,11,22,12,0,255,34,128,250,64,7,
114
-  224,250,128,138,128,138,128,250,128,34,128,178,128,170,160,100,
115
-  224,11,11,22,12,0,255,34,32,71,64,146,128,239,224,34,
116
-  0,71,192,236,64,7,192,52,64,199,192,4,64,11,11,22,
117
-  12,0,255,8,0,15,192,8,0,8,0,255,224,8,0,14,
118
-  0,9,128,8,64,8,0,8,0,10,11,22,12,0,255,255,
119
-  128,0,128,0,128,128,128,128,128,255,128,128,0,128,0,128,
120
-  64,128,64,127,192,11,11,22,12,0,255,71,192,65,0,239,
121
-  224,65,0,69,0,105,96,201,32,77,96,73,32,79,224,200,
122
-  32,11,11,22,12,0,255,8,0,4,0,4,0,10,0,10,
123
-  0,10,0,17,0,17,0,32,128,64,64,128,32,11,11,22,
124
-  12,0,255,34,64,34,0,247,224,34,0,35,224,53,32,229,
125
-  32,37,64,40,128,41,64,114,32,11,10,20,12,0,0,68,
126
-  64,68,64,68,64,127,192,4,0,4,0,132,32,132,32,132,
127
-  32,255,224,11,11,22,12,0,255,4,0,0,0,127,192,4,
128
-  0,4,0,4,0,127,192,4,0,4,0,4,0,255,224,11,
129
-  11,22,12,0,255,255,224,17,0,1,192,254,0,72,128,37,
130
-  0,4,0,255,224,21,0,36,128,196,96,11,11,22,12,0,
131
-  255,17,0,127,192,68,64,127,192,68,64,127,192,4,0,255,
132
-  224,4,0,4,0,4,0,9,11,22,12,0,255,16,0,255,
133
-  128,128,128,128,128,255,128,128,128,128,128,255,128,128,128,128,
134
-  128,255,128,11,11,22,12,0,255,113,0,1,0,3,224,249,
135
-  32,33,32,65,32,81,32,137,32,250,32,2,32,4,192,11,
136
-  11,22,12,0,255,127,192,17,0,17,0,17,0,17,0,255,
137
-  224,17,0,17,0,33,0,33,0,65,0,11,11,22,12,0,
138
-  255,33,0,34,0,244,64,87,224,80,32,87,192,148,64,84,
139
-  64,36,64,87,192,148,64,11,11,22,12,0,255,17,0,10,
140
-  0,127,192,4,0,4,0,255,224,4,0,10,0,17,0,32,
141
-  128,192,96,10,11,22,12,0,255,95,192,0,64,132,64,132,
142
-  64,191,64,132,64,140,64,148,64,164,64,140,64,129,192,11,
143
-  11,22,12,0,255,36,0,39,192,36,0,36,0,255,224,0,
144
-  0,20,64,36,128,71,0,12,0,112,0,11,11,22,12,0,
145
-  255,36,128,4,128,15,192,228,128,36,128,63,224,36,128,36,
146
-  128,40,128,80,0,143,224,11,11,22,12,0,255,8,0,8,
147
-  0,255,128,136,128,136,128,255,128,136,128,136,128,255,160,136,
148
-  32,7,224,11,11,22,12,0,255,39,128,36,128,244,128,36,
149
-  128,116,128,108,128,164,128,36,128,36,160,40,160,48,96,10,
150
-  11,22,12,0,255,255,192,128,64,128,64,158,64,146,64,146,
151
-  64,158,64,128,64,128,64,255,192,128,64,11,11,22,12,0,
152
-  255,127,192,68,0,95,192,80,64,95,192,80,64,95,192,66,
153
-  0,74,128,82,64,166,32,11,11,22,12,0,255,4,0,7,
154
-  224,4,0,127,192,64,64,64,64,64,64,127,192,0,0,82,
155
-  64,137,32,11,11,22,12,0,255,71,128,36,128,4,128,4,
156
-  128,232,96,32,0,47,192,36,64,34,128,49,0,38,192,11,
157
-  11,22,12,0,255,127,192,74,64,127,192,4,0,255,224,4,
158
-  0,63,128,32,128,36,128,36,128,255,224,11,11,22,12,0,
159
-  255,34,0,79,224,72,32,79,224,200,0,79,224,74,160,90,
160
-  160,111,224,74,160,72,96,11,11,22,12,0,255,243,192,36,
161
-  64,42,128,241,0,34,128,101,224,114,32,165,64,32,128,35,
162
-  0,44,0,11,11,22,12,0,255,4,0,255,224,128,32,0,
163
-  0,255,224,4,0,36,0,39,192,36,0,84,0,143,224,11,
164
-  11,22,12,0,255,115,224,16,128,81,0,35,224,250,32,42,
165
-  160,34,160,34,160,32,128,33,64,98,32,11,11,22,12,0,
166
-  255,34,0,247,128,34,128,54,128,226,160,37,160,36,96,104,
167
-  32,0,0,82,64,137,32,11,11,22,12,0,255,115,192,66,
168
-  0,66,0,123,224,74,64,74,64,122,64,74,64,66,64,68,
169
-  64,136,64,11,11,22,12,0,255,8,0,255,224,8,0,31,
170
-  192,48,64,95,192,144,64,31,192,16,64,16,64,16,192,11,
171
-  11,22,12,0,255,2,0,127,224,66,0,66,0,95,192,66,
172
-  0,71,0,74,128,82,64,98,32,130,0,11,11,22,12,0,
173
-  255,243,192,150,64,145,128,166,96,161,0,151,192,145,0,149,
174
-  0,231,224,129,0,129,0,11,11,22,12,0,255,15,128,136,
175
-  128,79,128,8,128,143,128,64,0,31,192,53,64,85,64,149,
176
-  64,63,224,11,11,22,12,0,255,39,224,32,128,248,128,32,
177
-  128,32,128,56,128,224,128,32,128,32,128,32,128,97,128,11,
178
-  11,22,12,0,255,31,224,145,0,87,192,20,64,23,192,148,
179
-  64,87,192,17,0,85,64,153,32,35,0,11,11,22,12,0,
180
-  255,32,128,39,224,242,64,33,128,34,64,52,32,226,64,34,
181
-  64,34,64,34,64,100,64,11,11,22,12,0,255,65,0,65,
182
-  0,79,224,233,32,73,32,73,32,111,224,201,32,73,32,73,
183
-  32,207,224,11,11,22,12,0,255,33,0,241,0,79,224,169,
184
-  32,249,32,47,224,57,32,233,32,41,32,47,224,40,32,11,
185
-  11,22,12,0,255,143,224,73,32,9,32,203,160,73,32,79,
186
-  224,72,32,75,160,74,160,107,160,80,224,11,11,22,12,0,
187
-  255,127,192,4,0,68,64,36,64,36,128,4,0,255,224,4,
188
-  0,4,0,4,0,4,0,11,11,22,12,0,255,130,0,66,
189
-  0,31,224,194,0,95,192,82,64,95,192,71,0,74,128,82,
190
-  64,191,224,11,11,22,12,0,255,4,0,127,224,72,128,127,
191
-  224,72,128,79,128,64,0,95,192,72,64,71,128,152,96,11,
192
-  11,22,12,0,255,1,0,239,224,161,0,164,64,175,224,164,
193
-  64,175,224,169,32,233,32,2,128,12,96,11,11,22,12,0,
194
-  255,20,192,246,160,188,96,167,128,168,128,191,224,169,32,239,
195
-  224,9,32,15,224,9,32,11,11,22,12,0,255,127,128,64,
196
-  128,66,128,98,128,84,128,72,128,72,128,84,160,98,160,64,
197
-  96,128,32,11,11,22,12,0,255,4,0,127,224,64,32,127,
198
-  224,64,0,125,224,84,32,76,160,84,96,100,160,141,96,11,
199
-  11,22,12,0,255,130,0,95,224,4,0,8,64,159,224,64,
200
-  32,10,128,10,128,74,160,146,160,34,96,11,11,22,12,0,
201
-  255,65,0,79,224,232,32,66,128,68,64,104,32,199,192,65,
202
-  0,65,0,65,0,207,224,11,11,22,12,0,255,80,32,125,
203
-  32,145,32,255,32,17,32,125,32,85,32,85,32,84,32,92,
204
-  32,16,224,11,11,22,12,0,255,63,128,32,128,63,128,32,
205
-  128,255,224,72,0,123,192,73,64,121,64,72,128,251,96,11,
206
-  11,22,12,0,255,4,0,4,0,4,0,36,128,36,64,68,
207
-  64,68,32,132,32,4,0,4,0,28,0,11,11,22,12,0,
208
-  255,4,0,4,0,4,0,255,224,4,0,10,0,10,0,17,
209
-  0,17,0,32,128,192,96,9,10,20,10,0,0,136,128,73,
210
-  0,8,0,255,128,0,128,0,128,127,128,0,128,0,128,255,
211
-  128,11,11,22,12,0,255,33,0,18,0,255,224,0,0,120,
212
-  128,74,128,122,128,74,128,122,128,72,128,89,128,11,11,22,
213
-  12,0,255,39,192,0,0,0,0,239,224,33,0,34,0,36,
214
-  64,47,224,32,32,80,0,143,224,11,11,22,12,0,255,32,
215
-  128,39,0,249,0,33,192,119,0,33,0,249,224,39,0,113,
216
-  32,169,32,32,224,11,11,22,12,0,255,16,64,16,64,253,
217
-  224,16,64,56,192,53,64,82,64,148,64,16,64,16,64,16,
218
-  192,11,11,22,12,0,255,0,64,248,64,11,224,8,64,136,
219
-  64,82,64,81,64,33,64,80,64,72,64,137,192,10,11,22,
220
-  12,0,255,132,0,132,64,132,128,245,0,134,0,132,0,132,
221
-  0,148,0,164,64,196,64,131,192,11,11,22,12,0,255,17,
222
-  32,125,0,17,0,255,224,41,0,253,64,73,64,124,128,8,
223
-  160,253,96,10,32,11,11,22,12,0,255,23,192,36,64,36,
224
-  64,103,192,161,0,47,224,33,0,35,128,37,64,41,32,33,
225
-  0,11,11,22,12,0,255,8,0,255,224,16,0,39,192,32,
226
-  128,97,0,175,224,33,0,33,0,33,0,35,0,11,11,22,
227
-  12,0,255,36,0,47,224,180,0,164,128,164,160,170,192,42,
228
-  128,40,128,41,64,50,64,36,32,11,11,22,12,0,255,127,
229
-  224,128,0,63,192,32,64,63,192,16,0,31,192,16,64,40,
230
-  128,71,0,56,224,11,11,22,12,0,255,127,224,64,0,64,
231
-  0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,128,
232
-  0,11,11,22,12,0,255,255,224,4,0,127,192,68,64,127,
233
-  192,68,64,127,192,68,0,36,0,24,0,231,224,11,11,22,
234
-  12,0,255,17,224,253,0,69,0,41,224,253,64,17,64,125,
235
-  64,17,64,85,64,146,64,52,64,11,11,22,12,0,255,33,
236
-  0,95,224,64,0,207,192,64,0,79,192,64,0,79,192,72,
237
-  64,79,192,72,64,11,11,22,12,0,255,4,0,127,192,64,
238
-  64,127,192,64,64,127,192,64,64,127,192,4,64,82,32,191,
239
-  160,11,11,22,12,0,255,127,192,68,64,127,192,68,64,127,
240
-  192,4,0,27,0,224,224,17,0,17,0,97,0,11,11,22,
241
-  12,0,255,255,224,4,0,8,0,127,224,73,32,79,32,73,
242
-  32,79,32,73,32,73,32,127,224,11,11,22,12,0,255,253,
243
-  224,86,64,121,64,56,128,85,64,146,32,255,224,4,0,39,
244
-  192,36,0,255,224,11,11,22,12,0,255,251,128,82,0,123,
245
-  224,18,64,250,64,20,64,63,128,32,128,63,128,32,128,63,
246
-  128,11,11,22,12,0,255,31,224,32,0,39,192,100,64,167,
247
-  192,32,0,47,224,40,32,39,192,33,0,35,0,11,11,22,
248
-  12,0,255,243,224,130,32,130,32,250,32,130,32,130,32,138,
249
-  32,178,32,194,224,2,0,2,0,11,11,22,12,0,255,36,
250
-  128,70,160,149,192,228,128,39,224,68,128,245,192,6,160,52,
251
-  128,196,128,7,224,11,11,22,12,0,255,39,192,65,0,135,
252
-  224,224,32,34,128,69,128,242,128,15,224,48,128,193,64,2,
253
-  32,11,11,22,12,0,255,2,0,2,0,34,0,35,192,34,
254
-  0,34,0,34,0,34,0,34,0,34,0,255,224,9,11,22,
255
-  12,0,255,8,0,8,0,255,128,136,128,136,128,136,128,255,
256
-  128,136,128,136,128,136,128,255,128,11,11,22,12,0,255,33,
257
-  0,83,160,65,0,247,224,81,0,83,192,86,64,83,192,90,
258
-  64,83,192,66,64,11,11,22,12,0,255,127,192,4,0,4,
259
-  0,4,0,255,224,10,0,10,0,18,0,34,32,66,32,129,
260
-  224,11,11,22,12,0,255,17,0,33,0,47,224,97,0,163,
261
-  128,35,128,37,64,37,64,41,32,33,0,33,0,11,11,22,
262
-  12,0,255,247,224,148,32,244,32,151,224,148,128,244,128,151,
263
-  224,148,128,244,160,150,96,4,32,11,11,22,12,0,255,123,
264
-  224,148,128,4,0,127,192,4,0,255,224,1,0,255,224,33,
265
-  0,17,0,7,0,11,11,22,12,0,255,33,0,71,192,145,
266
-  0,47,224,96,128,175,224,32,128,36,128,34,128,32,128,35,
267
-  128,11,11,22,12,0,255,39,192,36,64,247,192,46,224,42,
268
-  160,62,224,225,0,47,224,35,128,37,64,105,32,11,11,22,
269
-  12,0,255,20,0,39,224,42,0,98,0,163,192,34,0,34,
270
-  0,35,224,34,0,34,0,34,0};
14
+  0, 12, 11, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 10, 255, 7,
15
+  255, 0, 0, 0, 6, 0, 10, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 0,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5,
40
+  7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6,
41
+  0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240,
42
+  136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240,
43
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128,
44
+  5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7,
45
+  6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0,
46
+  128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16,
47
+  16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144,
48
+  136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7,
49
+  7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0,
50
+  0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136,
51
+  136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128,
52
+  128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5,
53
+  7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6,
54
+  0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248,
55
+  32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136,
56
+  136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32,
57
+  5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7,
58
+  6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0,
59
+  136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16,
60
+  32, 64, 128, 248, 3, 7, 7, 6, 0, 0, 224, 128, 128, 128, 128, 128,
61
+  224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6,
62
+  0, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32,
63
+  80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128,
64
+  64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6,
65
+  0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112,
66
+  128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136,
67
+  120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6,
68
+  0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112,
69
+  136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136,
70
+  136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3,
71
+  8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7,
72
+  6, 1, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0,
73
+  192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168,
74
+  168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5,
75
+  6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136,
76
+  136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8,
77
+  5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0,
78
+  0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64,
79
+  64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5,
80
+  5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136,
81
+  136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5,
82
+  6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0,
83
+  0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128,
84
+  64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128,
85
+  3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2,
86
+  6, 0, 3, 104, 144, 0, 0, 0, 6, 0, 10, 0, 0, 0, 12, 0,
87
+  10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
88
+  12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
89
+  0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
90
+  10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
91
+  12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
92
+  0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
93
+  10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
94
+  12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0,
95
+  0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0,
96
+  10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0,
97
+  12, 0, 10, 0, 0, 0, 12, 0, 10, 11, 11, 22, 12, 0, 255, 255,
98
+  224, 2, 0, 2, 0, 4, 0, 13, 0, 20, 128, 36, 64, 196, 32, 4,
99
+  0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 249, 0, 138, 0, 171,
100
+  224, 172, 64, 170, 64, 170, 64, 170, 64, 170, 128, 33, 0, 82, 128, 140,
101
+  96, 11, 11, 22, 12, 0, 255, 36, 0, 36, 0, 63, 128, 68, 0, 132,
102
+  0, 4, 0, 255, 224, 10, 0, 17, 0, 32, 128, 192, 96, 11, 11, 22,
103
+  12, 0, 255, 36, 0, 36, 0, 63, 192, 68, 0, 4, 0, 255, 224, 9,
104
+  0, 9, 0, 17, 32, 33, 32, 64, 224, 11, 11, 22, 12, 0, 255, 32,
105
+  0, 61, 224, 81, 32, 145, 32, 17, 32, 255, 32, 17, 32, 41, 32, 37,
106
+  224, 69, 32, 128, 0, 11, 11, 22, 12, 0, 255, 32, 128, 127, 192, 8,
107
+  64, 255, 224, 17, 0, 32, 128, 95, 64, 128, 32, 63, 128, 0, 0, 127,
108
+  192, 11, 11, 22, 12, 0, 255, 34, 64, 71, 224, 148, 128, 228, 128, 47,
109
+  224, 68, 128, 244, 128, 7, 224, 52, 128, 196, 128, 7, 224, 11, 11, 22,
110
+  12, 0, 255, 4, 128, 143, 224, 73, 0, 25, 0, 47, 192, 9, 0, 9,
111
+  0, 47, 192, 73, 0, 137, 0, 15, 224, 11, 11, 22, 12, 0, 255, 16,
112
+  0, 63, 128, 81, 0, 14, 0, 49, 128, 192, 96, 63, 128, 36, 128, 63,
113
+  128, 36, 128, 63, 128, 11, 11, 22, 12, 0, 255, 34, 128, 250, 64, 7,
114
+  224, 250, 128, 138, 128, 138, 128, 250, 128, 34, 128, 178, 128, 170, 160, 100,
115
+  224, 11, 11, 22, 12, 0, 255, 34, 32, 71, 64, 146, 128, 239, 224, 34,
116
+  0, 71, 192, 236, 64, 7, 192, 52, 64, 199, 192, 4, 64, 11, 11, 22,
117
+  12, 0, 255, 8, 0, 15, 192, 8, 0, 8, 0, 255, 224, 8, 0, 14,
118
+  0, 9, 128, 8, 64, 8, 0, 8, 0, 10, 11, 22, 12, 0, 255, 255,
119
+  128, 0, 128, 0, 128, 128, 128, 128, 128, 255, 128, 128, 0, 128, 0, 128,
120
+  64, 128, 64, 127, 192, 11, 11, 22, 12, 0, 255, 71, 192, 65, 0, 239,
121
+  224, 65, 0, 69, 0, 105, 96, 201, 32, 77, 96, 73, 32, 79, 224, 200,
122
+  32, 11, 11, 22, 12, 0, 255, 8, 0, 4, 0, 4, 0, 10, 0, 10,
123
+  0, 10, 0, 17, 0, 17, 0, 32, 128, 64, 64, 128, 32, 11, 11, 22,
124
+  12, 0, 255, 34, 64, 34, 0, 247, 224, 34, 0, 35, 224, 53, 32, 229,
125
+  32, 37, 64, 40, 128, 41, 64, 114, 32, 11, 10, 20, 12, 0, 0, 68,
126
+  64, 68, 64, 68, 64, 127, 192, 4, 0, 4, 0, 132, 32, 132, 32, 132,
127
+  32, 255, 224, 11, 11, 22, 12, 0, 255, 4, 0, 0, 0, 127, 192, 4,
128
+  0, 4, 0, 4, 0, 127, 192, 4, 0, 4, 0, 4, 0, 255, 224, 11,
129
+  11, 22, 12, 0, 255, 255, 224, 17, 0, 1, 192, 254, 0, 72, 128, 37,
130
+  0, 4, 0, 255, 224, 21, 0, 36, 128, 196, 96, 11, 11, 22, 12, 0,
131
+  255, 17, 0, 127, 192, 68, 64, 127, 192, 68, 64, 127, 192, 4, 0, 255,
132
+  224, 4, 0, 4, 0, 4, 0, 9, 11, 22, 12, 0, 255, 16, 0, 255,
133
+  128, 128, 128, 128, 128, 255, 128, 128, 128, 128, 128, 255, 128, 128, 128, 128,
134
+  128, 255, 128, 11, 11, 22, 12, 0, 255, 113, 0, 1, 0, 3, 224, 249,
135
+  32, 33, 32, 65, 32, 81, 32, 137, 32, 250, 32, 2, 32, 4, 192, 11,
136
+  11, 22, 12, 0, 255, 127, 192, 17, 0, 17, 0, 17, 0, 17, 0, 255,
137
+  224, 17, 0, 17, 0, 33, 0, 33, 0, 65, 0, 11, 11, 22, 12, 0,
138
+  255, 33, 0, 34, 0, 244, 64, 87, 224, 80, 32, 87, 192, 148, 64, 84,
139
+  64, 36, 64, 87, 192, 148, 64, 11, 11, 22, 12, 0, 255, 17, 0, 10,
140
+  0, 127, 192, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 17, 0, 32,
141
+  128, 192, 96, 10, 11, 22, 12, 0, 255, 95, 192, 0, 64, 132, 64, 132,
142
+  64, 191, 64, 132, 64, 140, 64, 148, 64, 164, 64, 140, 64, 129, 192, 11,
143
+  11, 22, 12, 0, 255, 36, 0, 39, 192, 36, 0, 36, 0, 255, 224, 0,
144
+  0, 20, 64, 36, 128, 71, 0, 12, 0, 112, 0, 11, 11, 22, 12, 0,
145
+  255, 36, 128, 4, 128, 15, 192, 228, 128, 36, 128, 63, 224, 36, 128, 36,
146
+  128, 40, 128, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 8, 0, 8,
147
+  0, 255, 128, 136, 128, 136, 128, 255, 128, 136, 128, 136, 128, 255, 160, 136,
148
+  32, 7, 224, 11, 11, 22, 12, 0, 255, 39, 128, 36, 128, 244, 128, 36,
149
+  128, 116, 128, 108, 128, 164, 128, 36, 128, 36, 160, 40, 160, 48, 96, 10,
150
+  11, 22, 12, 0, 255, 255, 192, 128, 64, 128, 64, 158, 64, 146, 64, 146,
151
+  64, 158, 64, 128, 64, 128, 64, 255, 192, 128, 64, 11, 11, 22, 12, 0,
152
+  255, 127, 192, 68, 0, 95, 192, 80, 64, 95, 192, 80, 64, 95, 192, 66,
153
+  0, 74, 128, 82, 64, 166, 32, 11, 11, 22, 12, 0, 255, 4, 0, 7,
154
+  224, 4, 0, 127, 192, 64, 64, 64, 64, 64, 64, 127, 192, 0, 0, 82,
155
+  64, 137, 32, 11, 11, 22, 12, 0, 255, 71, 128, 36, 128, 4, 128, 4,
156
+  128, 232, 96, 32, 0, 47, 192, 36, 64, 34, 128, 49, 0, 38, 192, 11,
157
+  11, 22, 12, 0, 255, 127, 192, 74, 64, 127, 192, 4, 0, 255, 224, 4,
158
+  0, 63, 128, 32, 128, 36, 128, 36, 128, 255, 224, 11, 11, 22, 12, 0,
159
+  255, 34, 0, 79, 224, 72, 32, 79, 224, 200, 0, 79, 224, 74, 160, 90,
160
+  160, 111, 224, 74, 160, 72, 96, 11, 11, 22, 12, 0, 255, 243, 192, 36,
161
+  64, 42, 128, 241, 0, 34, 128, 101, 224, 114, 32, 165, 64, 32, 128, 35,
162
+  0, 44, 0, 11, 11, 22, 12, 0, 255, 4, 0, 255, 224, 128, 32, 0,
163
+  0, 255, 224, 4, 0, 36, 0, 39, 192, 36, 0, 84, 0, 143, 224, 11,
164
+  11, 22, 12, 0, 255, 115, 224, 16, 128, 81, 0, 35, 224, 250, 32, 42,
165
+  160, 34, 160, 34, 160, 32, 128, 33, 64, 98, 32, 11, 11, 22, 12, 0,
166
+  255, 34, 0, 247, 128, 34, 128, 54, 128, 226, 160, 37, 160, 36, 96, 104,
167
+  32, 0, 0, 82, 64, 137, 32, 11, 11, 22, 12, 0, 255, 115, 192, 66,
168
+  0, 66, 0, 123, 224, 74, 64, 74, 64, 122, 64, 74, 64, 66, 64, 68,
169
+  64, 136, 64, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 8, 0, 31,
170
+  192, 48, 64, 95, 192, 144, 64, 31, 192, 16, 64, 16, 64, 16, 192, 11,
171
+  11, 22, 12, 0, 255, 2, 0, 127, 224, 66, 0, 66, 0, 95, 192, 66,
172
+  0, 71, 0, 74, 128, 82, 64, 98, 32, 130, 0, 11, 11, 22, 12, 0,
173
+  255, 243, 192, 150, 64, 145, 128, 166, 96, 161, 0, 151, 192, 145, 0, 149,
174
+  0, 231, 224, 129, 0, 129, 0, 11, 11, 22, 12, 0, 255, 15, 128, 136,
175
+  128, 79, 128, 8, 128, 143, 128, 64, 0, 31, 192, 53, 64, 85, 64, 149,
176
+  64, 63, 224, 11, 11, 22, 12, 0, 255, 39, 224, 32, 128, 248, 128, 32,
177
+  128, 32, 128, 56, 128, 224, 128, 32, 128, 32, 128, 32, 128, 97, 128, 11,
178
+  11, 22, 12, 0, 255, 31, 224, 145, 0, 87, 192, 20, 64, 23, 192, 148,
179
+  64, 87, 192, 17, 0, 85, 64, 153, 32, 35, 0, 11, 11, 22, 12, 0,
180
+  255, 32, 128, 39, 224, 242, 64, 33, 128, 34, 64, 52, 32, 226, 64, 34,
181
+  64, 34, 64, 34, 64, 100, 64, 11, 11, 22, 12, 0, 255, 65, 0, 65,
182
+  0, 79, 224, 233, 32, 73, 32, 73, 32, 111, 224, 201, 32, 73, 32, 73,
183
+  32, 207, 224, 11, 11, 22, 12, 0, 255, 33, 0, 241, 0, 79, 224, 169,
184
+  32, 249, 32, 47, 224, 57, 32, 233, 32, 41, 32, 47, 224, 40, 32, 11,
185
+  11, 22, 12, 0, 255, 143, 224, 73, 32, 9, 32, 203, 160, 73, 32, 79,
186
+  224, 72, 32, 75, 160, 74, 160, 107, 160, 80, 224, 11, 11, 22, 12, 0,
187
+  255, 127, 192, 4, 0, 68, 64, 36, 64, 36, 128, 4, 0, 255, 224, 4,
188
+  0, 4, 0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 130, 0, 66,
189
+  0, 31, 224, 194, 0, 95, 192, 82, 64, 95, 192, 71, 0, 74, 128, 82,
190
+  64, 191, 224, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 72, 128, 127,
191
+  224, 72, 128, 79, 128, 64, 0, 95, 192, 72, 64, 71, 128, 152, 96, 11,
192
+  11, 22, 12, 0, 255, 1, 0, 239, 224, 161, 0, 164, 64, 175, 224, 164,
193
+  64, 175, 224, 169, 32, 233, 32, 2, 128, 12, 96, 11, 11, 22, 12, 0,
194
+  255, 20, 192, 246, 160, 188, 96, 167, 128, 168, 128, 191, 224, 169, 32, 239,
195
+  224, 9, 32, 15, 224, 9, 32, 11, 11, 22, 12, 0, 255, 127, 128, 64,
196
+  128, 66, 128, 98, 128, 84, 128, 72, 128, 72, 128, 84, 160, 98, 160, 64,
197
+  96, 128, 32, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 64, 32, 127,
198
+  224, 64, 0, 125, 224, 84, 32, 76, 160, 84, 96, 100, 160, 141, 96, 11,
199
+  11, 22, 12, 0, 255, 130, 0, 95, 224, 4, 0, 8, 64, 159, 224, 64,
200
+  32, 10, 128, 10, 128, 74, 160, 146, 160, 34, 96, 11, 11, 22, 12, 0,
201
+  255, 65, 0, 79, 224, 232, 32, 66, 128, 68, 64, 104, 32, 199, 192, 65,
202
+  0, 65, 0, 65, 0, 207, 224, 11, 11, 22, 12, 0, 255, 80, 32, 125,
203
+  32, 145, 32, 255, 32, 17, 32, 125, 32, 85, 32, 85, 32, 84, 32, 92,
204
+  32, 16, 224, 11, 11, 22, 12, 0, 255, 63, 128, 32, 128, 63, 128, 32,
205
+  128, 255, 224, 72, 0, 123, 192, 73, 64, 121, 64, 72, 128, 251, 96, 11,
206
+  11, 22, 12, 0, 255, 4, 0, 4, 0, 4, 0, 36, 128, 36, 64, 68,
207
+  64, 68, 32, 132, 32, 4, 0, 4, 0, 28, 0, 11, 11, 22, 12, 0,
208
+  255, 4, 0, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 10, 0, 17,
209
+  0, 17, 0, 32, 128, 192, 96, 9, 10, 20, 10, 0, 0, 136, 128, 73,
210
+  0, 8, 0, 255, 128, 0, 128, 0, 128, 127, 128, 0, 128, 0, 128, 255,
211
+  128, 11, 11, 22, 12, 0, 255, 33, 0, 18, 0, 255, 224, 0, 0, 120,
212
+  128, 74, 128, 122, 128, 74, 128, 122, 128, 72, 128, 89, 128, 11, 11, 22,
213
+  12, 0, 255, 39, 192, 0, 0, 0, 0, 239, 224, 33, 0, 34, 0, 36,
214
+  64, 47, 224, 32, 32, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 32,
215
+  128, 39, 0, 249, 0, 33, 192, 119, 0, 33, 0, 249, 224, 39, 0, 113,
216
+  32, 169, 32, 32, 224, 11, 11, 22, 12, 0, 255, 16, 64, 16, 64, 253,
217
+  224, 16, 64, 56, 192, 53, 64, 82, 64, 148, 64, 16, 64, 16, 64, 16,
218
+  192, 11, 11, 22, 12, 0, 255, 0, 64, 248, 64, 11, 224, 8, 64, 136,
219
+  64, 82, 64, 81, 64, 33, 64, 80, 64, 72, 64, 137, 192, 10, 11, 22,
220
+  12, 0, 255, 132, 0, 132, 64, 132, 128, 245, 0, 134, 0, 132, 0, 132,
221
+  0, 148, 0, 164, 64, 196, 64, 131, 192, 11, 11, 22, 12, 0, 255, 17,
222
+  32, 125, 0, 17, 0, 255, 224, 41, 0, 253, 64, 73, 64, 124, 128, 8,
223
+  160, 253, 96, 10, 32, 11, 11, 22, 12, 0, 255, 23, 192, 36, 64, 36,
224
+  64, 103, 192, 161, 0, 47, 224, 33, 0, 35, 128, 37, 64, 41, 32, 33,
225
+  0, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 16, 0, 39, 192, 32,
226
+  128, 97, 0, 175, 224, 33, 0, 33, 0, 33, 0, 35, 0, 11, 11, 22,
227
+  12, 0, 255, 36, 0, 47, 224, 180, 0, 164, 128, 164, 160, 170, 192, 42,
228
+  128, 40, 128, 41, 64, 50, 64, 36, 32, 11, 11, 22, 12, 0, 255, 127,
229
+  224, 128, 0, 63, 192, 32, 64, 63, 192, 16, 0, 31, 192, 16, 64, 40,
230
+  128, 71, 0, 56, 224, 11, 11, 22, 12, 0, 255, 127, 224, 64, 0, 64,
231
+  0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 128,
232
+  0, 11, 11, 22, 12, 0, 255, 255, 224, 4, 0, 127, 192, 68, 64, 127,
233
+  192, 68, 64, 127, 192, 68, 0, 36, 0, 24, 0, 231, 224, 11, 11, 22,
234
+  12, 0, 255, 17, 224, 253, 0, 69, 0, 41, 224, 253, 64, 17, 64, 125,
235
+  64, 17, 64, 85, 64, 146, 64, 52, 64, 11, 11, 22, 12, 0, 255, 33,
236
+  0, 95, 224, 64, 0, 207, 192, 64, 0, 79, 192, 64, 0, 79, 192, 72,
237
+  64, 79, 192, 72, 64, 11, 11, 22, 12, 0, 255, 4, 0, 127, 192, 64,
238
+  64, 127, 192, 64, 64, 127, 192, 64, 64, 127, 192, 4, 64, 82, 32, 191,
239
+  160, 11, 11, 22, 12, 0, 255, 127, 192, 68, 64, 127, 192, 68, 64, 127,
240
+  192, 4, 0, 27, 0, 224, 224, 17, 0, 17, 0, 97, 0, 11, 11, 22,
241
+  12, 0, 255, 255, 224, 4, 0, 8, 0, 127, 224, 73, 32, 79, 32, 73,
242
+  32, 79, 32, 73, 32, 73, 32, 127, 224, 11, 11, 22, 12, 0, 255, 253,
243
+  224, 86, 64, 121, 64, 56, 128, 85, 64, 146, 32, 255, 224, 4, 0, 39,
244
+  192, 36, 0, 255, 224, 11, 11, 22, 12, 0, 255, 251, 128, 82, 0, 123,
245
+  224, 18, 64, 250, 64, 20, 64, 63, 128, 32, 128, 63, 128, 32, 128, 63,
246
+  128, 11, 11, 22, 12, 0, 255, 31, 224, 32, 0, 39, 192, 100, 64, 167,
247
+  192, 32, 0, 47, 224, 40, 32, 39, 192, 33, 0, 35, 0, 11, 11, 22,
248
+  12, 0, 255, 243, 224, 130, 32, 130, 32, 250, 32, 130, 32, 130, 32, 138,
249
+  32, 178, 32, 194, 224, 2, 0, 2, 0, 11, 11, 22, 12, 0, 255, 36,
250
+  128, 70, 160, 149, 192, 228, 128, 39, 224, 68, 128, 245, 192, 6, 160, 52,
251
+  128, 196, 128, 7, 224, 11, 11, 22, 12, 0, 255, 39, 192, 65, 0, 135,
252
+  224, 224, 32, 34, 128, 69, 128, 242, 128, 15, 224, 48, 128, 193, 64, 2,
253
+  32, 11, 11, 22, 12, 0, 255, 2, 0, 2, 0, 34, 0, 35, 192, 34,
254
+  0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 255, 224, 9, 11, 22,
255
+  12, 0, 255, 8, 0, 8, 0, 255, 128, 136, 128, 136, 128, 136, 128, 255,
256
+  128, 136, 128, 136, 128, 136, 128, 255, 128, 11, 11, 22, 12, 0, 255, 33,
257
+  0, 83, 160, 65, 0, 247, 224, 81, 0, 83, 192, 86, 64, 83, 192, 90,
258
+  64, 83, 192, 66, 64, 11, 11, 22, 12, 0, 255, 127, 192, 4, 0, 4,
259
+  0, 4, 0, 255, 224, 10, 0, 10, 0, 18, 0, 34, 32, 66, 32, 129,
260
+  224, 11, 11, 22, 12, 0, 255, 17, 0, 33, 0, 47, 224, 97, 0, 163,
261
+  128, 35, 128, 37, 64, 37, 64, 41, 32, 33, 0, 33, 0, 11, 11, 22,
262
+  12, 0, 255, 247, 224, 148, 32, 244, 32, 151, 224, 148, 128, 244, 128, 151,
263
+  224, 148, 128, 244, 160, 150, 96, 4, 32, 11, 11, 22, 12, 0, 255, 123,
264
+  224, 148, 128, 4, 0, 127, 192, 4, 0, 255, 224, 1, 0, 255, 224, 33,
265
+  0, 17, 0, 7, 0, 11, 11, 22, 12, 0, 255, 33, 0, 71, 192, 145,
266
+  0, 47, 224, 96, 128, 175, 224, 32, 128, 36, 128, 34, 128, 32, 128, 35,
267
+  128, 11, 11, 22, 12, 0, 255, 39, 192, 36, 64, 247, 192, 46, 224, 42,
268
+  160, 62, 224, 225, 0, 47, 224, 35, 128, 37, 64, 105, 32, 11, 11, 22,
269
+  12, 0, 255, 20, 0, 39, 224, 42, 0, 98, 0, 163, 192, 34, 0, 34,
270
+  0, 35, 224, 34, 0, 34, 0, 34, 0
271
+};

+ 161
- 160
Marlin/dogm_font_data_ISO10646_Kana.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t ISO10646_Kana_5x7[2549] U8G_SECTION(".progmem.ISO10646_Kana_5x7") = {
13
 const u8g_fntpgm_uint8_t ISO10646_Kana_5x7[2549] U8G_SECTION(".progmem.ISO10646_Kana_5x7") = {
14
-  0,6,9,0,254,7,1,145,3,32,32,255,255,8,255,7,
15
-  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
-  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
-  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
-  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
-  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
-  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
-  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
-  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
-  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
-  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
-  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
-  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
-  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
-  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
-  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
-  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
-  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
-  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
-  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
-  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
-  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
-  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
-  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
-  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
-  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
-  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
-  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
-  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
-  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
-  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
-  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
-  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
-  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
-  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
-  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
-  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
-  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
-  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
-  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
-  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
-  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
-  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
-  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
-  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
-  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
-  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
-  5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
62
-  0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
63
-  136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
64
-  5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
65
-  0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
66
-  128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
67
-  5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
68
-  0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
69
-  136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
70
-  136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
71
-  8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
72
-  0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
73
-  64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
74
-  168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
75
-  0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
76
-  240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
77
-  5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
78
-  112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
79
-  72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
80
-  6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
81
-  168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
82
-  6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
83
-  248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
84
-  64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
85
-  7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
86
-  0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
87
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
88
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
89
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
90
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
91
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
92
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
93
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
94
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
95
-  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
96
-  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
97
-  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
98
-  0,6,0,0,0,0,0,6,0,0,5,3,3,6,0,2,
99
-  248,0,248,5,6,6,6,0,0,248,8,40,48,32,64,5,
100
-  7,7,6,0,0,248,8,40,48,32,32,64,4,5,5,6,
101
-  0,0,16,32,96,160,32,5,7,7,6,0,0,8,16,32,
102
-  96,160,32,32,5,5,5,6,0,0,32,248,136,8,48,5,
103
-  7,7,6,0,0,32,248,136,136,8,16,32,5,4,4,6,
104
-  0,0,248,32,32,248,5,6,6,6,0,0,248,32,32,32,
105
-  32,248,5,5,5,6,0,0,16,248,48,80,144,5,7,7,
106
-  6,0,0,16,248,16,48,80,144,16,5,5,5,6,0,0,
107
-  64,248,72,80,64,5,7,7,6,0,0,40,0,64,248,72,
108
-  80,64,5,7,7,6,0,0,32,248,32,248,32,32,32,5,
109
-  8,8,6,0,0,40,0,32,248,32,248,32,32,4,6,6,
110
-  6,0,0,64,112,144,16,16,32,5,8,8,6,0,0,40,
111
-  0,64,112,144,16,16,32,5,6,6,6,0,0,64,120,144,
112
-  16,16,32,5,8,8,6,0,0,40,0,64,120,144,16,16,
113
-  32,5,5,5,6,0,0,248,8,8,8,248,5,7,7,6,
114
-  0,0,40,0,248,8,8,8,248,5,7,7,6,0,255,80,
115
-  248,80,80,16,32,64,5,9,9,6,0,255,40,0,80,248,
116
-  80,80,16,32,64,5,6,6,6,0,0,192,8,200,8,16,
117
-  224,5,8,8,6,0,0,40,0,192,8,200,8,16,224,5,
118
-  6,6,6,0,0,248,8,16,32,80,136,5,8,8,6,0,
119
-  0,40,0,248,8,16,32,80,136,5,6,6,6,0,0,64,
120
-  248,72,80,64,120,5,8,8,6,0,0,40,0,64,248,72,
121
-  80,64,120,4,4,4,6,0,1,16,208,16,224,5,7,7,
122
-  6,0,0,40,0,8,200,8,16,224,5,7,7,6,0,255,
123
-  32,120,136,40,16,40,64,5,9,9,6,0,255,40,0,32,
124
-  120,136,40,16,40,64,5,6,6,6,0,0,240,32,248,32,
125
-  64,128,5,8,8,6,0,0,40,0,240,32,248,32,64,128,
126
-  4,5,5,6,0,1,192,16,208,16,224,5,6,6,6,0,
127
-  0,192,8,200,8,16,224,5,8,8,6,0,0,40,0,192,
128
-  8,200,8,16,224,5,6,6,6,0,0,112,0,248,32,32,
129
-  64,5,8,8,6,0,0,40,0,112,0,248,32,32,64,3,
130
-  7,7,6,1,0,128,128,128,192,160,128,128,4,8,8,6,
131
-  1,0,80,0,128,128,192,160,128,128,5,7,7,6,0,0,
132
-  32,32,248,32,32,64,128,5,6,6,6,0,0,112,0,0,
133
-  0,0,248,5,6,6,6,0,0,248,8,80,32,80,128,5,
134
-  7,7,6,0,255,32,248,8,16,32,112,168,3,7,7,6,
135
-  1,0,32,32,32,32,32,64,128,5,5,5,6,0,0,16,
136
-  136,136,136,136,5,7,7,6,0,0,40,0,16,136,136,136,
137
-  136,5,8,8,6,0,0,24,24,0,16,136,136,136,136,5,
138
-  7,7,6,0,0,128,128,248,128,128,128,120,5,8,8,6,
139
-  0,0,40,128,128,248,128,128,128,120,5,8,8,6,0,0,
140
-  24,152,128,248,128,128,128,120,5,6,6,6,0,0,248,8,
141
-  8,8,16,96,5,8,8,6,0,0,40,0,248,8,8,8,
142
-  16,96,5,8,8,6,0,0,24,24,248,8,8,8,16,96,
143
-  5,5,5,6,0,1,64,160,16,8,8,5,7,7,6,0,
144
-  1,40,0,64,160,16,8,8,5,7,7,6,0,1,24,24,
145
-  64,160,16,8,8,5,6,6,6,0,0,32,248,32,32,168,
146
-  168,5,8,8,6,0,0,40,0,32,248,32,32,168,168,5,
147
-  8,8,6,0,0,24,24,32,248,32,32,168,168,5,6,6,
148
-  6,0,0,248,8,8,80,32,16,4,6,6,6,1,0,224,
149
-  0,224,0,224,16,5,6,6,6,0,0,32,64,128,144,248,
150
-  8,5,6,6,6,0,0,8,8,80,32,80,128,5,6,6,
151
-  6,0,0,120,32,248,32,32,56,5,7,7,6,0,0,64,
152
-  64,248,72,80,64,64,5,7,7,6,0,0,64,248,72,80,
153
-  64,64,64,5,5,5,6,0,0,112,16,16,16,248,5,7,
154
-  7,6,0,0,112,16,16,16,16,16,248,4,5,5,6,1,
155
-  0,240,16,240,16,240,5,7,7,6,0,0,248,8,8,248,
156
-  8,8,248,5,6,6,6,0,0,112,0,248,8,16,32,3,
157
-  6,6,6,1,0,160,160,160,160,32,64,5,6,6,6,0,
158
-  0,80,80,80,80,88,144,4,6,6,6,1,0,128,128,128,
159
-  144,160,192,5,6,6,6,0,0,248,136,136,136,248,136,5,
160
-  5,5,6,0,0,248,136,8,16,96,5,6,6,6,0,0,
161
-  248,136,8,8,16,96,5,6,6,6,0,0,16,248,80,80,
162
-  248,16,5,6,6,6,0,0,248,8,80,96,64,248,5,6,
163
-  6,6,0,0,248,8,248,8,16,32,5,6,6,6,0,0,
164
-  128,64,8,8,16,224,5,8,8,6,0,0,40,0,32,248,
165
-  136,8,24,32,5,6,6,6,0,0,64,248,72,72,136,144,
166
-  4,5,5,6,1,0,128,240,160,32,32,5,8,8,6,0,
167
-  0,40,0,248,136,8,8,16,96,5,8,8,6,0,0,40,
168
-  0,16,248,80,80,248,16,5,7,7,6,0,0,40,0,248,
169
-  16,32,32,248,5,8,8,6,0,0,40,0,248,8,248,8,
170
-  16,32,2,2,2,6,2,2,192,192,5,1,1,6,0,3,
171
-  248,5,5,5,6,0,1,128,64,32,16,8,5,6,6,6,
172
-  0,1,40,128,64,32,16,8,5,7,7,6,0,0,248,8,
173
-  8,8,8,8,8};
14
+  0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7,
15
+  255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128,
16
+  128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6,
17
+  0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32,
18
+  120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32,
19
+  64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104,
20
+  2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32,
21
+  64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32,
22
+  32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5,
23
+  5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192,
24
+  64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192,
25
+  192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6,
26
+  0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64,
27
+  192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112,
28
+  128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240,
29
+  5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7,
30
+  6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0,
31
+  48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16,
32
+  32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136,
33
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5,
34
+  5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192,
35
+  192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64,
36
+  32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1,
37
+  0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136,
38
+  8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168,
39
+  112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7,
40
+  7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0,
41
+  0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144,
42
+  136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128,
43
+  128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5,
44
+  7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6,
45
+  0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128,
46
+  128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16,
47
+  16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136,
48
+  5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7,
49
+  6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0,
50
+  136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136,
51
+  136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128,
52
+  128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7,
53
+  7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0,
54
+  0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32,
55
+  32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136,
56
+  136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5,
57
+  7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6,
58
+  0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136,
59
+  136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32,
60
+  64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224,
61
+  5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1,
62
+  0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80,
63
+  136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64,
64
+  5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0,
65
+  0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128,
66
+  128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120,
67
+  5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0,
68
+  0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136,
69
+  136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136,
70
+  136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8,
71
+  8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6,
72
+  0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192,
73
+  64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168,
74
+  168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6,
75
+  0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136,
76
+  240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5,
77
+  5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0,
78
+  112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64,
79
+  72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5,
80
+  6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136,
81
+  168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6,
82
+  6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0,
83
+  248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64,
84
+  64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3,
85
+  7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6,
86
+  0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
87
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
88
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
89
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
90
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
91
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
92
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
93
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
94
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
95
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0,
96
+  0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6,
97
+  0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
98
+  0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 3, 3, 6, 0, 2,
99
+  248, 0, 248, 5, 6, 6, 6, 0, 0, 248, 8, 40, 48, 32, 64, 5,
100
+  7, 7, 6, 0, 0, 248, 8, 40, 48, 32, 32, 64, 4, 5, 5, 6,
101
+  0, 0, 16, 32, 96, 160, 32, 5, 7, 7, 6, 0, 0, 8, 16, 32,
102
+  96, 160, 32, 32, 5, 5, 5, 6, 0, 0, 32, 248, 136, 8, 48, 5,
103
+  7, 7, 6, 0, 0, 32, 248, 136, 136, 8, 16, 32, 5, 4, 4, 6,
104
+  0, 0, 248, 32, 32, 248, 5, 6, 6, 6, 0, 0, 248, 32, 32, 32,
105
+  32, 248, 5, 5, 5, 6, 0, 0, 16, 248, 48, 80, 144, 5, 7, 7,
106
+  6, 0, 0, 16, 248, 16, 48, 80, 144, 16, 5, 5, 5, 6, 0, 0,
107
+  64, 248, 72, 80, 64, 5, 7, 7, 6, 0, 0, 40, 0, 64, 248, 72,
108
+  80, 64, 5, 7, 7, 6, 0, 0, 32, 248, 32, 248, 32, 32, 32, 5,
109
+  8, 8, 6, 0, 0, 40, 0, 32, 248, 32, 248, 32, 32, 4, 6, 6,
110
+  6, 0, 0, 64, 112, 144, 16, 16, 32, 5, 8, 8, 6, 0, 0, 40,
111
+  0, 64, 112, 144, 16, 16, 32, 5, 6, 6, 6, 0, 0, 64, 120, 144,
112
+  16, 16, 32, 5, 8, 8, 6, 0, 0, 40, 0, 64, 120, 144, 16, 16,
113
+  32, 5, 5, 5, 6, 0, 0, 248, 8, 8, 8, 248, 5, 7, 7, 6,
114
+  0, 0, 40, 0, 248, 8, 8, 8, 248, 5, 7, 7, 6, 0, 255, 80,
115
+  248, 80, 80, 16, 32, 64, 5, 9, 9, 6, 0, 255, 40, 0, 80, 248,
116
+  80, 80, 16, 32, 64, 5, 6, 6, 6, 0, 0, 192, 8, 200, 8, 16,
117
+  224, 5, 8, 8, 6, 0, 0, 40, 0, 192, 8, 200, 8, 16, 224, 5,
118
+  6, 6, 6, 0, 0, 248, 8, 16, 32, 80, 136, 5, 8, 8, 6, 0,
119
+  0, 40, 0, 248, 8, 16, 32, 80, 136, 5, 6, 6, 6, 0, 0, 64,
120
+  248, 72, 80, 64, 120, 5, 8, 8, 6, 0, 0, 40, 0, 64, 248, 72,
121
+  80, 64, 120, 4, 4, 4, 6, 0, 1, 16, 208, 16, 224, 5, 7, 7,
122
+  6, 0, 0, 40, 0, 8, 200, 8, 16, 224, 5, 7, 7, 6, 0, 255,
123
+  32, 120, 136, 40, 16, 40, 64, 5, 9, 9, 6, 0, 255, 40, 0, 32,
124
+  120, 136, 40, 16, 40, 64, 5, 6, 6, 6, 0, 0, 240, 32, 248, 32,
125
+  64, 128, 5, 8, 8, 6, 0, 0, 40, 0, 240, 32, 248, 32, 64, 128,
126
+  4, 5, 5, 6, 0, 1, 192, 16, 208, 16, 224, 5, 6, 6, 6, 0,
127
+  0, 192, 8, 200, 8, 16, 224, 5, 8, 8, 6, 0, 0, 40, 0, 192,
128
+  8, 200, 8, 16, 224, 5, 6, 6, 6, 0, 0, 112, 0, 248, 32, 32,
129
+  64, 5, 8, 8, 6, 0, 0, 40, 0, 112, 0, 248, 32, 32, 64, 3,
130
+  7, 7, 6, 1, 0, 128, 128, 128, 192, 160, 128, 128, 4, 8, 8, 6,
131
+  1, 0, 80, 0, 128, 128, 192, 160, 128, 128, 5, 7, 7, 6, 0, 0,
132
+  32, 32, 248, 32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 112, 0, 0,
133
+  0, 0, 248, 5, 6, 6, 6, 0, 0, 248, 8, 80, 32, 80, 128, 5,
134
+  7, 7, 6, 0, 255, 32, 248, 8, 16, 32, 112, 168, 3, 7, 7, 6,
135
+  1, 0, 32, 32, 32, 32, 32, 64, 128, 5, 5, 5, 6, 0, 0, 16,
136
+  136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 40, 0, 16, 136, 136, 136,
137
+  136, 5, 8, 8, 6, 0, 0, 24, 24, 0, 16, 136, 136, 136, 136, 5,
138
+  7, 7, 6, 0, 0, 128, 128, 248, 128, 128, 128, 120, 5, 8, 8, 6,
139
+  0, 0, 40, 128, 128, 248, 128, 128, 128, 120, 5, 8, 8, 6, 0, 0,
140
+  24, 152, 128, 248, 128, 128, 128, 120, 5, 6, 6, 6, 0, 0, 248, 8,
141
+  8, 8, 16, 96, 5, 8, 8, 6, 0, 0, 40, 0, 248, 8, 8, 8,
142
+  16, 96, 5, 8, 8, 6, 0, 0, 24, 24, 248, 8, 8, 8, 16, 96,
143
+  5, 5, 5, 6, 0, 1, 64, 160, 16, 8, 8, 5, 7, 7, 6, 0,
144
+  1, 40, 0, 64, 160, 16, 8, 8, 5, 7, 7, 6, 0, 1, 24, 24,
145
+  64, 160, 16, 8, 8, 5, 6, 6, 6, 0, 0, 32, 248, 32, 32, 168,
146
+  168, 5, 8, 8, 6, 0, 0, 40, 0, 32, 248, 32, 32, 168, 168, 5,
147
+  8, 8, 6, 0, 0, 24, 24, 32, 248, 32, 32, 168, 168, 5, 6, 6,
148
+  6, 0, 0, 248, 8, 8, 80, 32, 16, 4, 6, 6, 6, 1, 0, 224,
149
+  0, 224, 0, 224, 16, 5, 6, 6, 6, 0, 0, 32, 64, 128, 144, 248,
150
+  8, 5, 6, 6, 6, 0, 0, 8, 8, 80, 32, 80, 128, 5, 6, 6,
151
+  6, 0, 0, 120, 32, 248, 32, 32, 56, 5, 7, 7, 6, 0, 0, 64,
152
+  64, 248, 72, 80, 64, 64, 5, 7, 7, 6, 0, 0, 64, 248, 72, 80,
153
+  64, 64, 64, 5, 5, 5, 6, 0, 0, 112, 16, 16, 16, 248, 5, 7,
154
+  7, 6, 0, 0, 112, 16, 16, 16, 16, 16, 248, 4, 5, 5, 6, 1,
155
+  0, 240, 16, 240, 16, 240, 5, 7, 7, 6, 0, 0, 248, 8, 8, 248,
156
+  8, 8, 248, 5, 6, 6, 6, 0, 0, 112, 0, 248, 8, 16, 32, 3,
157
+  6, 6, 6, 1, 0, 160, 160, 160, 160, 32, 64, 5, 6, 6, 6, 0,
158
+  0, 80, 80, 80, 80, 88, 144, 4, 6, 6, 6, 1, 0, 128, 128, 128,
159
+  144, 160, 192, 5, 6, 6, 6, 0, 0, 248, 136, 136, 136, 248, 136, 5,
160
+  5, 5, 6, 0, 0, 248, 136, 8, 16, 96, 5, 6, 6, 6, 0, 0,
161
+  248, 136, 8, 8, 16, 96, 5, 6, 6, 6, 0, 0, 16, 248, 80, 80,
162
+  248, 16, 5, 6, 6, 6, 0, 0, 248, 8, 80, 96, 64, 248, 5, 6,
163
+  6, 6, 0, 0, 248, 8, 248, 8, 16, 32, 5, 6, 6, 6, 0, 0,
164
+  128, 64, 8, 8, 16, 224, 5, 8, 8, 6, 0, 0, 40, 0, 32, 248,
165
+  136, 8, 24, 32, 5, 6, 6, 6, 0, 0, 64, 248, 72, 72, 136, 144,
166
+  4, 5, 5, 6, 1, 0, 128, 240, 160, 32, 32, 5, 8, 8, 6, 0,
167
+  0, 40, 0, 248, 136, 8, 8, 16, 96, 5, 8, 8, 6, 0, 0, 40,
168
+  0, 16, 248, 80, 80, 248, 16, 5, 7, 7, 6, 0, 0, 40, 0, 248,
169
+  16, 32, 32, 248, 5, 8, 8, 6, 0, 0, 40, 0, 248, 8, 248, 8,
170
+  16, 32, 2, 2, 2, 6, 2, 2, 192, 192, 5, 1, 1, 6, 0, 3,
171
+  248, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 5, 6, 6, 6,
172
+  0, 1, 40, 128, 64, 32, 16, 8, 5, 7, 7, 6, 0, 0, 248, 8,
173
+  8, 8, 8, 8, 8
174
+};

+ 10
- 9
Marlin/dogm_font_data_Marlin_symbols.h Переглянути файл

11
 */
11
 */
12
 #include <U8glib.h>
12
 #include <U8glib.h>
13
 const u8g_fntpgm_uint8_t Marlin_symbols[140] U8G_SECTION(".progmem.Marlin_symbols") = {
13
 const u8g_fntpgm_uint8_t Marlin_symbols[140] U8G_SECTION(".progmem.Marlin_symbols") = {
14
-  0,6,9,0,254,0,0,0,0,0,1,9,0,8,254,0,
15
-  0,5,8,8,6,0,0,64,240,200,136,136,152,120,16,5,
16
-  8,8,6,0,0,192,248,136,136,136,136,136,248,5,5,5,
17
-  6,0,1,32,48,248,48,32,5,8,8,6,0,0,32,112,
18
-  248,32,32,32,32,224,5,9,9,6,0,255,32,112,168,168,
19
-  184,136,136,112,32,5,9,9,6,0,255,224,128,192,176,168,
20
-  40,48,40,40,5,9,9,6,0,255,248,168,136,136,136,136,
21
-  136,168,248,5,10,10,6,0,254,32,80,80,80,80,136,168,
22
-  168,136,112,3,3,3,6,0,3,64,160,64};
14
+  0, 6, 9, 0, 254, 0, 0, 0, 0, 0, 1, 9, 0, 8, 254, 0,
15
+  0, 5, 8, 8, 6, 0, 0, 64, 240, 200, 136, 136, 152, 120, 16, 5,
16
+  8, 8, 6, 0, 0, 192, 248, 136, 136, 136, 136, 136, 248, 5, 5, 5,
17
+  6, 0, 1, 32, 48, 248, 48, 32, 5, 8, 8, 6, 0, 0, 32, 112,
18
+  248, 32, 32, 32, 32, 224, 5, 9, 9, 6, 0, 255, 32, 112, 168, 168,
19
+  184, 136, 136, 112, 32, 5, 9, 9, 6, 0, 255, 224, 128, 192, 176, 168,
20
+  40, 48, 40, 40, 5, 9, 9, 6, 0, 255, 248, 168, 136, 136, 136, 136,
21
+  136, 168, 248, 5, 10, 10, 6, 0, 254, 32, 80, 80, 80, 80, 136, 168,
22
+  168, 136, 112, 3, 3, 3, 6, 0, 3, 64, 160, 64
23
+};

+ 36
- 36
Marlin/dogm_lcd_implementation.h Переглянути файл

36
 #include "Configuration.h"
36
 #include "Configuration.h"
37
 
37
 
38
 #if DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_NON) && ENABLED(USE_BIG_EDIT_FONT)
38
 #if DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_NON) && ENABLED(USE_BIG_EDIT_FONT)
39
-   #undef USE_BIG_EDIT_FONT
39
+  #undef USE_BIG_EDIT_FONT
40
 #endif
40
 #endif
41
 
41
 
42
 
42
 
203
   #endif
203
   #endif
204
 
204
 
205
   #if ENABLED(LCD_PIN_RESET)
205
   #if ENABLED(LCD_PIN_RESET)
206
-    pinMode(LCD_PIN_RESET, OUTPUT);           
206
+    pinMode(LCD_PIN_RESET, OUTPUT);
207
     digitalWrite(LCD_PIN_RESET, HIGH);
207
     digitalWrite(LCD_PIN_RESET, HIGH);
208
   #endif
208
   #endif
209
   #if DISABLED(MINIPANEL) // setContrast not working for Mini Panel
209
   #if DISABLED(MINIPANEL) // setContrast not working for Mini Panel
210
-    u8g.setContrast(lcd_contrast);	
210
+    u8g.setContrast(lcd_contrast);
211
   #endif
211
   #endif
212
   // FIXME: remove this workaround
212
   // FIXME: remove this workaround
213
   // Uncomment this if you have the first generation (V1.10) of STBs board
213
   // Uncomment this if you have the first generation (V1.10) of STBs board
230
       int offy = DOG_CHAR_HEIGHT;
230
       int offy = DOG_CHAR_HEIGHT;
231
     #endif
231
     #endif
232
 
232
 
233
-    int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1)*DOG_CHAR_WIDTH) / 2;
233
+    int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1) * DOG_CHAR_WIDTH) / 2;
234
 
234
 
235
     u8g.firstPage();
235
     u8g.firstPage();
236
     do {
236
     do {
240
         #ifndef STRING_SPLASH_LINE2
240
         #ifndef STRING_SPLASH_LINE2
241
           u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1);
241
           u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1);
242
         #else
242
         #else
243
-          int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1)*DOG_CHAR_WIDTH) / 2;
244
-          u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT*3/2, STRING_SPLASH_LINE1);
245
-          u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT*1/2, STRING_SPLASH_LINE2);
243
+          int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1) * DOG_CHAR_WIDTH) / 2;
244
+          u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT * 3 / 2, STRING_SPLASH_LINE1);
245
+          u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT * 1 / 2, STRING_SPLASH_LINE2);
246
         #endif
246
         #endif
247
       }
247
       }
248
     } while (u8g.nextPage());
248
     } while (u8g.nextPage());
261
   int y = 17 + (isBed ? 1 : 0);
261
   int y = 17 + (isBed ? 1 : 0);
262
 
262
 
263
   lcd_setFont(FONT_STATUSMENU);
263
   lcd_setFont(FONT_STATUSMENU);
264
-  u8g.setPrintPos(x,7);
264
+  u8g.setPrintPos(x, 7);
265
   lcd_print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5)));
265
   lcd_print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5)));
266
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
266
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
267
-  u8g.setPrintPos(x,28);
267
+  u8g.setPrintPos(x, 28);
268
   lcd_print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5));
268
   lcd_print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5));
269
 
269
 
270
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
270
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
273
   }
273
   }
274
   else {
274
   else {
275
     u8g.setColorIndex(0); // white on black
275
     u8g.setColorIndex(0); // white on black
276
-    u8g.drawBox(x+7,y,2,2);
276
+    u8g.drawBox(x + 7, y, 2, 2);
277
     u8g.setColorIndex(1); // black on white
277
     u8g.setColorIndex(1); // black on white
278
   }
278
   }
279
 }
279
 }
283
 
283
 
284
   // Symbols menu graphics, animated fan
284
   // Symbols menu graphics, animated fan
285
   u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT, (blink % 2) && fanSpeed ? status_screen0_bmp : status_screen1_bmp);
285
   u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT, (blink % 2) && fanSpeed ? status_screen0_bmp : status_screen1_bmp);
286
- 
286
+
287
   #if ENABLED(SDSUPPORT)
287
   #if ENABLED(SDSUPPORT)
288
     // SD Card Symbol
288
     // SD Card Symbol
289
     u8g.drawBox(42, 42 - TALL_FONT_CORRECTION, 8, 7);
289
     u8g.drawBox(42, 42 - TALL_FONT_CORRECTION, 8, 7);
296
 
296
 
297
     // SD Card Progress bar and clock
297
     // SD Card Progress bar and clock
298
     lcd_setFont(FONT_STATUSMENU);
298
     lcd_setFont(FONT_STATUSMENU);
299
- 
299
+
300
     if (IS_SD_PRINTING) {
300
     if (IS_SD_PRINTING) {
301
       // Progress bar solid part
301
       // Progress bar solid part
302
       u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2 - TALL_FONT_CORRECTION);
302
       u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2 - TALL_FONT_CORRECTION);
315
   #endif
315
   #endif
316
 
316
 
317
   // Extruders
317
   // Extruders
318
-  for (int i=0; i<EXTRUDERS; i++) _draw_heater_status(6 + i * 25, i);
318
+  for (int i = 0; i < EXTRUDERS; i++) _draw_heater_status(6 + i * 25, i);
319
 
319
 
320
   // Heatbed
320
   // Heatbed
321
   if (EXTRUDERS < 4) _draw_heater_status(81, -1);
321
   if (EXTRUDERS < 4) _draw_heater_status(81, -1);
322
 
322
 
323
   // Fan
323
   // Fan
324
   lcd_setFont(FONT_STATUSMENU);
324
   lcd_setFont(FONT_STATUSMENU);
325
-  u8g.setPrintPos(104,27);
325
+  u8g.setPrintPos(104, 27);
326
   #if HAS_FAN
326
   #if HAS_FAN
327
     int per = ((fanSpeed + 1) * 100) / 256;
327
     int per = ((fanSpeed + 1) * 100) / 256;
328
     if (per) {
328
     if (per) {
340
   lcd_setFont(FONT_STATUSMENU);
340
   lcd_setFont(FONT_STATUSMENU);
341
 
341
 
342
   #if ENABLED(USE_SMALL_INFOFONT)
342
   #if ENABLED(USE_SMALL_INFOFONT)
343
-    u8g.drawBox(0,30,LCD_PIXEL_WIDTH,10);
343
+    u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 10);
344
   #else
344
   #else
345
-    u8g.drawBox(0,30,LCD_PIXEL_WIDTH,9);
345
+    u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 9);
346
   #endif
346
   #endif
347
   u8g.setColorIndex(0); // white on black
347
   u8g.setColorIndex(0); // white on black
348
-  u8g.setPrintPos(2,XYZ_BASELINE);
348
+  u8g.setPrintPos(2, XYZ_BASELINE);
349
   lcd_print('X');
349
   lcd_print('X');
350
-  u8g.drawPixel(8,XYZ_BASELINE - 5);
351
-  u8g.drawPixel(8,XYZ_BASELINE - 3);
352
-  u8g.setPrintPos(10,XYZ_BASELINE);
350
+  u8g.drawPixel(8, XYZ_BASELINE - 5);
351
+  u8g.drawPixel(8, XYZ_BASELINE - 3);
352
+  u8g.setPrintPos(10, XYZ_BASELINE);
353
   if (axis_known_position[X_AXIS])
353
   if (axis_known_position[X_AXIS])
354
     lcd_print(ftostr31ns(current_position[X_AXIS]));
354
     lcd_print(ftostr31ns(current_position[X_AXIS]));
355
   else
355
   else
356
     lcd_printPGM(PSTR("---"));
356
     lcd_printPGM(PSTR("---"));
357
-  u8g.setPrintPos(43,XYZ_BASELINE);
357
+  u8g.setPrintPos(43, XYZ_BASELINE);
358
   lcd_print('Y');
358
   lcd_print('Y');
359
-  u8g.drawPixel(49,XYZ_BASELINE - 5);
360
-  u8g.drawPixel(49,XYZ_BASELINE - 3);
361
-  u8g.setPrintPos(51,XYZ_BASELINE);
359
+  u8g.drawPixel(49, XYZ_BASELINE - 5);
360
+  u8g.drawPixel(49, XYZ_BASELINE - 3);
361
+  u8g.setPrintPos(51, XYZ_BASELINE);
362
   if (axis_known_position[Y_AXIS])
362
   if (axis_known_position[Y_AXIS])
363
     lcd_print(ftostr31ns(current_position[Y_AXIS]));
363
     lcd_print(ftostr31ns(current_position[Y_AXIS]));
364
   else
364
   else
365
     lcd_printPGM(PSTR("---"));
365
     lcd_printPGM(PSTR("---"));
366
-  u8g.setPrintPos(83,XYZ_BASELINE);
366
+  u8g.setPrintPos(83, XYZ_BASELINE);
367
   lcd_print('Z');
367
   lcd_print('Z');
368
-  u8g.drawPixel(89,XYZ_BASELINE - 5);
369
-  u8g.drawPixel(89,XYZ_BASELINE - 3);
370
-  u8g.setPrintPos(91,XYZ_BASELINE);
368
+  u8g.drawPixel(89, XYZ_BASELINE - 5);
369
+  u8g.drawPixel(89, XYZ_BASELINE - 3);
370
+  u8g.setPrintPos(91, XYZ_BASELINE);
371
   if (axis_known_position[Z_AXIS])
371
   if (axis_known_position[Z_AXIS])
372
     lcd_print(ftostr32sp(current_position[Z_AXIS]));
372
     lcd_print(ftostr32sp(current_position[Z_AXIS]));
373
   else
373
   else
374
     lcd_printPGM(PSTR("---.--"));
374
     lcd_printPGM(PSTR("---.--"));
375
   u8g.setColorIndex(1); // black on white
375
   u8g.setColorIndex(1); // black on white
376
- 
376
+
377
   // Feedrate
377
   // Feedrate
378
   lcd_setFont(FONT_MENU);
378
   lcd_setFont(FONT_MENU);
379
-  u8g.setPrintPos(3,49);
379
+  u8g.setPrintPos(3, 49);
380
   lcd_print(LCD_STR_FEEDRATE[0]);
380
   lcd_print(LCD_STR_FEEDRATE[0]);
381
   lcd_setFont(FONT_STATUSMENU);
381
   lcd_setFont(FONT_STATUSMENU);
382
-  u8g.setPrintPos(12,49);
382
+  u8g.setPrintPos(12, 49);
383
   lcd_print(itostr3(feedrate_multiplier));
383
   lcd_print(itostr3(feedrate_multiplier));
384
   lcd_print('%');
384
   lcd_print('%');
385
 
385
 
386
   // Status line
386
   // Status line
387
   lcd_setFont(FONT_STATUSMENU);
387
   lcd_setFont(FONT_STATUSMENU);
388
   #if ENABLED(USE_SMALL_INFOFONT)
388
   #if ENABLED(USE_SMALL_INFOFONT)
389
-    u8g.setPrintPos(0,62);
389
+    u8g.setPrintPos(0, 62);
390
   #else
390
   #else
391
-    u8g.setPrintPos(0,63);
391
+    u8g.setPrintPos(0, 63);
392
   #endif
392
   #endif
393
   #if DISABLED(FILAMENT_LCD_DISPLAY)
393
   #if DISABLED(FILAMENT_LCD_DISPLAY)
394
     lcd_print(lcd_status_message);
394
     lcd_print(lcd_status_message);
429
     pstr++;
429
     pstr++;
430
   }
430
   }
431
   while (n--) lcd_print(' ');
431
   while (n--) lcd_print(' ');
432
-    u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
432
+  u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
433
   lcd_print(post_char);
433
   lcd_print(post_char);
434
   lcd_print(' ');
434
   lcd_print(' ');
435
 }
435
 }
448
   lcd_print(':');
448
   lcd_print(':');
449
   while (n--) lcd_print(' ');
449
   while (n--) lcd_print(' ');
450
   u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH * vallen, (row + 1) * DOG_CHAR_HEIGHT);
450
   u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH * vallen, (row + 1) * DOG_CHAR_HEIGHT);
451
-  if (pgm) { lcd_printPGM(data); } else { lcd_print((char *)data); }
451
+  if (pgm)  lcd_printPGM(data);  else  lcd_print((char*)data);
452
 }
452
 }
453
 
453
 
454
 #define lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, data) _drawmenu_setting_edit_generic(sel, row, pstr, data, false)
454
 #define lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, data) _drawmenu_setting_edit_generic(sel, row, pstr, data, false)
506
 
506
 
507
 #if ENABLED(SDSUPPORT)
507
 #if ENABLED(SDSUPPORT)
508
 
508
 
509
-  static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir) {
509
+  static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const char* filename, char* const longFilename, bool isDir) {
510
     char c;
510
     char c;
511
     uint8_t n = LCD_WIDTH - 1;
511
     uint8_t n = LCD_WIDTH - 1;
512
 
512
 

+ 3918
- 3918
Marlin/fastio.h
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 2
- 2
Marlin/fonts/README.fonts Переглянути файл

1
-The fonts are created with Fony.exe (http://hukka.ncn.fi/?fony) because Fontforge didn't do what I want (probably lack off experience). 
1
+The fonts are created with Fony.exe (http://hukka.ncn.fi/?fony) because Fontforge didn't do what I want (probably lack of experience).
2
 In Fony export the fonts to bdf-format. Maybe another one can edit them with Fontforge.
2
 In Fony export the fonts to bdf-format. Maybe another one can edit them with Fontforge.
3
 Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to produce the .h files.
3
 Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to produce the .h files.
4
 The .h files must be edited to replace '#include "u8g.h"' with '#include <utility/u8g.h>', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory.
4
 The .h files must be edited to replace '#include "u8g.h"' with '#include <utility/u8g.h>', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory.
6
 How to integrate a new font:
6
 How to integrate a new font:
7
 Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. For up to 11 pixel set TALL_FONT_CORRECTION 1 when loading the font.
7
 Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. For up to 11 pixel set TALL_FONT_CORRECTION 1 when loading the font.
8
 To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel, for the first 128 symbols.
8
 To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel, for the first 128 symbols.
9
-For the second half of the font we now support up to 11x11 pixel. 
9
+For the second half of the font we now support up to 11x11 pixel.
10
 
10
 
11
  * Get 'Fony.exe'
11
  * Get 'Fony.exe'
12
  * Copy one of the existing *.fon files and work with this.
12
  * Copy one of the existing *.fon files and work with this.

+ 3
- 3
Marlin/language.h Переглянути файл

81
   #error BUILD_VERSION Information must be specified
81
   #error BUILD_VERSION Information must be specified
82
 #endif
82
 #endif
83
 
83
 
84
-#ifndef MACHINE_UUID
85
-   #define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
84
+#ifndef UUID
85
+  #define UUID "00000000-0000-0000-0000-000000000000"
86
 #endif
86
 #endif
87
 
87
 
88
 
88
 
122
 #define MSG_INVALID_EXTRUDER                "Invalid extruder"
122
 #define MSG_INVALID_EXTRUDER                "Invalid extruder"
123
 #define MSG_INVALID_SOLENOID                "Invalid solenoid"
123
 #define MSG_INVALID_SOLENOID                "Invalid solenoid"
124
 #define MSG_ERR_NO_THERMISTORS              "No thermistors - no temperature"
124
 #define MSG_ERR_NO_THERMISTORS              "No thermistors - no temperature"
125
-#define MSG_M115_REPORT                     "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n"
125
+#define MSG_M115_REPORT                     "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" UUID "\n"
126
 #define MSG_COUNT_X                         " Count X: "
126
 #define MSG_COUNT_X                         " Count X: "
127
 #define MSG_ERR_KILLED                      "Printer halted. kill() called!"
127
 #define MSG_ERR_KILLED                      "Printer halted. kill() called!"
128
 #define MSG_ERR_STOPPED                     "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
128
 #define MSG_ERR_STOPPED                     "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"

+ 5
- 5
Marlin/language_an.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutes"
125
 #define MSG_END_MINUTE                      "minutes"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_AN_H
135
 #endif // LANGUAGE_AN_H

+ 5
- 5
Marlin/language_bg.h Переглянути файл

126
 #define MSG_END_MINUTE                      "минути"
126
 #define MSG_END_MINUTE                      "минути"
127
 
127
 
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
129
-    #define MSG_DELTA_CALIBRATE             "Делта Калибровка"
130
-    #define MSG_DELTA_CALIBRATE_X           "Калибровка X"
131
-    #define MSG_DELTA_CALIBRATE_Y           "Калибровка Y"
132
-    #define MSG_DELTA_CALIBRATE_Z           "Калибровка Z"
133
-    #define MSG_DELTA_CALIBRATE_CENTER      "Калибровка Център"
129
+  #define MSG_DELTA_CALIBRATE               "Делта Калибровка"
130
+  #define MSG_DELTA_CALIBRATE_X             "Калибровка X"
131
+  #define MSG_DELTA_CALIBRATE_Y             "Калибровка Y"
132
+  #define MSG_DELTA_CALIBRATE_Z             "Калибровка Z"
133
+  #define MSG_DELTA_CALIBRATE_CENTER        "Калибровка Център"
134
 #endif // DELTA_CALIBRATION_MENU
134
 #endif // DELTA_CALIBRATION_MENU
135
 
135
 
136
 #endif // LANGUAGE_BG_H
136
 #endif // LANGUAGE_BG_H

+ 5
- 5
Marlin/language_ca.h Переглянути файл

126
 #define MSG_END_MINUTE                      "minutes"
126
 #define MSG_END_MINUTE                      "minutes"
127
 
127
 
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
129
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
130
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
131
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
132
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
133
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
129
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
130
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
131
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
132
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
133
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
134
 #endif // DELTA_CALIBRATION_MENU
134
 #endif // DELTA_CALIBRATION_MENU
135
 
135
 
136
 #endif // LANGUAGE_CA_H
136
 #endif // LANGUAGE_CA_H

+ 127
- 127
Marlin/language_cn.h Переглянути файл

8
 #ifndef LANGUAGE_CN_H
8
 #ifndef LANGUAGE_CN_H
9
 #define LANGUAGE_CN_H
9
 #define LANGUAGE_CN_H
10
 
10
 
11
-  #define MAPPER_NON         // For direct asci codes
12
-  #define DISPLAY_CHARSET_ISO10646_CN
11
+#define MAPPER_NON         // For direct asci codes
12
+#define DISPLAY_CHARSET_ISO10646_CN
13
 
13
 
14
-  #define WELCOME_MSG                         "\xa4\xa5\xa6\xa7"
15
-  #define MSG_SD_INSERTED                     "\xa8\xa9\xaa\xab"
16
-  #define MSG_SD_REMOVED                      "\xa8\xa9\xac\xad"
17
-  #define MSG_MAIN                            "\xae\xaf\xb0"
18
-  #define MSG_AUTOSTART                       "\xb1\xb2\xb3\xb4"
19
-  #define MSG_DISABLE_STEPPERS                "\xb5\xb6\xb7\xb8\xb9\xba"
20
-  #define MSG_AUTO_HOME                       "\xbb\xbc\xbd"
21
-  #define MSG_SET_HOME_OFFSETS                "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
22
-  #define MSG_SET_ORIGIN                      "\xbe\xbf\xbc\xbd"
23
-  #define MSG_PREHEAT_PLA                     "\xc3\xc4 PLA"
24
-  #define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
25
-  #define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " \xc5\xc6"
26
-  #define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " \xc4\xc7"
27
-  #define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " \xbe\xbf"
28
-  #define MSG_PREHEAT_ABS                     "\xc3\xc4 ABS"
29
-  #define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
30
-  #define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " \xc5\xc6"
31
-  #define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " \xbe\xc6"
32
-  #define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " \xbe\xbf"
33
-  #define MSG_COOLDOWN                        "\xc8\xc9"
34
-  #define MSG_SWITCH_PS_ON                    "\xb9\xcb\xca\xb3"
35
-  #define MSG_SWITCH_PS_OFF                   "\xb9\xcb\xb5\xb6"
36
-  #define MSG_EXTRUDE                         "\xcc\xad"
37
-  #define MSG_RETRACT                         "\xbb\xcd"
38
-  #define MSG_MOVE_AXIS                       "\xc1\xb2\xce"
39
-  #define MSG_LEVEL_BED                       "\xcf\xe0\xc4\xc7"
40
-  #define MSG_MOVE_X                          "\xc1\xb2 X"
41
-  #define MSG_MOVE_Y                          "\xc1\xb2 Y"
42
-  #define MSG_MOVE_Z                          "\xc1\xb2 Z"
43
-  #define MSG_MOVE_E                          "\xcc\xad\xba"
44
-  #define MSG_MOVE_01MM                       "\xc1\xb2 0.1mm"
45
-  #define MSG_MOVE_1MM                        "\xc1\xb2 1mm"
46
-  #define MSG_MOVE_10MM                       "\xc1\xb2 10mm"
47
-  #define MSG_SPEED                           "\xd1\xd2"
48
-  #define MSG_NOZZLE                          "\xd3\xd4"
49
-  #define MSG_BED                             "\xc4\xc7"
50
-  #define MSG_FAN_SPEED                       "\xd5\xd6\xd1\xd2"
51
-  #define MSG_FLOW                            "\xcc\xad\xd1\xd2"
52
-  #define MSG_CONTROL                         "\xd8\xd9"
53
-  #define MSG_MIN                             LCD_STR_THERMOMETER " \xda\xdb"
54
-  #define MSG_MAX                             LCD_STR_THERMOMETER " \xda\xdc"
55
-  #define MSG_FACTOR                          LCD_STR_THERMOMETER " \xdd\xde"
56
-  #define MSG_AUTOTEMP                        "\xb1\xb2\xd8\xc9"
57
-  #define MSG_ON                              "\xb3 "  // intentional space to shift wide symbol to the left
58
-  #define MSG_OFF                             "\xb5 "  // intentional space to shift wide symbol to the left
59
-  #define MSG_PID_P                           "PID-P"
60
-  #define MSG_PID_I                           "PID-I"
61
-  #define MSG_PID_D                           "PID-D"
62
-  #define MSG_PID_C                           "PID-C"
63
-  #define MSG_ACC                             "Accel"
64
-  #define MSG_VXY_JERK                        "Vxy-jerk"
65
-  #define MSG_VZ_JERK                         "Vz-jerk"
66
-  #define MSG_VE_JERK                         "Ve-jerk"
67
-  #define MSG_VMAX                            "Vmax "
68
-  #define MSG_X                               "x"
69
-  #define MSG_Y                               "y"
70
-  #define MSG_Z                               "z"
71
-  #define MSG_E                               "e"
72
-  #define MSG_VMIN                            "Vmin"
73
-  #define MSG_VTRAV_MIN                       "VTrav min"
74
-  #define MSG_AMAX                            "Amax "
75
-  #define MSG_A_RETRACT                       "A-retract"
76
-  #define MSG_A_TRAVEL                        "A-travel"
77
-  #define MSG_XSTEPS                          "Xsteps/mm"
78
-  #define MSG_YSTEPS                          "Ysteps/mm"
79
-  #define MSG_ZSTEPS                          "Zsteps/mm"
80
-  #define MSG_ESTEPS                          "Esteps/mm"
81
-  #define MSG_TEMPERATURE                     "\xc9\xd2"
82
-  #define MSG_MOTION                          "\xdf\xb2"
83
-  #define MSG_VOLUMETRIC                      "Filament"
84
-  #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
85
-  #define MSG_FILAMENT_DIAM                   "Fil. Dia."
86
-  #define MSG_CONTRAST                        "LCD contrast"
87
-  #define MSG_STORE_EPROM                     "Store memory"
88
-  #define MSG_LOAD_EPROM                      "Load memory"
89
-  #define MSG_RESTORE_FAILSAFE                "Restore failsafe"
90
-  #define MSG_REFRESH                         "Refresh"
91
-  #define MSG_WATCH                           "\xec\xed\xee\xef"
92
-  #define MSG_PREPARE                         "\xa4\xa5"
93
-  #define MSG_TUNE                            "\xcf\xf0"
94
-  #define MSG_PAUSE_PRINT                     "\xf1\xf2\xca\xf3"
95
-  #define MSG_RESUME_PRINT                    "\xf4\xf5\xca\xf3"
96
-  #define MSG_STOP_PRINT                      "\xf2\xf6\xca\xf3"
97
-  #define MSG_CARD_MENU                       "\xaf\xb0"
98
-  #define MSG_NO_CARD                         "\xf9\xa8"
99
-  #define MSG_DWELL                           "Sleep..."
100
-  #define MSG_USERWAIT                        "Wait for user..."
101
-  #define MSG_RESUMING                        "Resuming print"
102
-  #define MSG_PRINT_ABORTED                   "Print aborted"
103
-  #define MSG_NO_MOVE                         "No move."
104
-  #define MSG_KILLED                          "KILLED. "
105
-  #define MSG_STOPPED                         "STOPPED. "
106
-  #define MSG_CONTROL_RETRACT                 "Retract mm"
107
-  #define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
108
-  #define MSG_CONTROL_RETRACTF                "Retract  V"
109
-  #define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
110
-  #define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
111
-  #define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
112
-  #define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
113
-  #define MSG_AUTORETRACT                     "AutoRetr."
114
-  #define MSG_FILAMENTCHANGE                  "Change filament"
115
-  #define MSG_INIT_SDCARD                     "Init. SD card"
116
-  #define MSG_CNG_SDCARD                      "Change SD card"
117
-  #define MSG_ZPROBE_OUT                      "Z probe out. bed"
118
-  #define MSG_POSITION_UNKNOWN                "Home X/Y before Z"
119
-  #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
120
-  #define MSG_BABYSTEP_X                      "Babystep X"
121
-  #define MSG_BABYSTEP_Y                      "Babystep Y"
122
-  #define MSG_BABYSTEP_Z                      "Babystep Z"
123
-  #define MSG_ENDSTOP_ABORT                   "Endstop abort"
124
-  #define MSG_HEATING_FAILED_LCD              "Heating failed"
125
-  #define MSG_ERR_REDUNDANT_TEMP              "Err: REDUNDANT TEMP ERROR"
126
-  #define MSG_THERMAL_RUNAWAY                 "THERMAL RUNAWAY"
127
-  #define MSG_ERR_MAXTEMP                     "Err: MAXTEMP"
128
-  #define MSG_ERR_MINTEMP                     "Err: MINTEMP"
129
-  #define MSG_ERR_MAXTEMP_BED                 "Err: MAXTEMP BED"
130
-  #define MSG_END_HOUR                        "hours"
131
-  #define MSG_END_MINUTE                      "minutes"
14
+#define WELCOME_MSG                         "\xa4\xa5\xa6\xa7"
15
+#define MSG_SD_INSERTED                     "\xa8\xa9\xaa\xab"
16
+#define MSG_SD_REMOVED                      "\xa8\xa9\xac\xad"
17
+#define MSG_MAIN                            "\xae\xaf\xb0"
18
+#define MSG_AUTOSTART                       "\xb1\xb2\xb3\xb4"
19
+#define MSG_DISABLE_STEPPERS                "\xb5\xb6\xb7\xb8\xb9\xba"
20
+#define MSG_AUTO_HOME                       "\xbb\xbc\xbd"
21
+#define MSG_SET_HOME_OFFSETS                "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
22
+#define MSG_SET_ORIGIN                      "\xbe\xbf\xbc\xbd"
23
+#define MSG_PREHEAT_PLA                     "\xc3\xc4 PLA"
24
+#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
25
+#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " \xc5\xc6"
26
+#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " \xc4\xc7"
27
+#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " \xbe\xbf"
28
+#define MSG_PREHEAT_ABS                     "\xc3\xc4 ABS"
29
+#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
30
+#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " \xc5\xc6"
31
+#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " \xbe\xc6"
32
+#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " \xbe\xbf"
33
+#define MSG_COOLDOWN                        "\xc8\xc9"
34
+#define MSG_SWITCH_PS_ON                    "\xb9\xcb\xca\xb3"
35
+#define MSG_SWITCH_PS_OFF                   "\xb9\xcb\xb5\xb6"
36
+#define MSG_EXTRUDE                         "\xcc\xad"
37
+#define MSG_RETRACT                         "\xbb\xcd"
38
+#define MSG_MOVE_AXIS                       "\xc1\xb2\xce"
39
+#define MSG_LEVEL_BED                       "\xcf\xe0\xc4\xc7"
40
+#define MSG_MOVE_X                          "\xc1\xb2 X"
41
+#define MSG_MOVE_Y                          "\xc1\xb2 Y"
42
+#define MSG_MOVE_Z                          "\xc1\xb2 Z"
43
+#define MSG_MOVE_E                          "\xcc\xad\xba"
44
+#define MSG_MOVE_01MM                       "\xc1\xb2 0.1mm"
45
+#define MSG_MOVE_1MM                        "\xc1\xb2 1mm"
46
+#define MSG_MOVE_10MM                       "\xc1\xb2 10mm"
47
+#define MSG_SPEED                           "\xd1\xd2"
48
+#define MSG_NOZZLE                          "\xd3\xd4"
49
+#define MSG_BED                             "\xc4\xc7"
50
+#define MSG_FAN_SPEED                       "\xd5\xd6\xd1\xd2"
51
+#define MSG_FLOW                            "\xcc\xad\xd1\xd2"
52
+#define MSG_CONTROL                         "\xd8\xd9"
53
+#define MSG_MIN                             LCD_STR_THERMOMETER " \xda\xdb"
54
+#define MSG_MAX                             LCD_STR_THERMOMETER " \xda\xdc"
55
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " \xdd\xde"
56
+#define MSG_AUTOTEMP                        "\xb1\xb2\xd8\xc9"
57
+#define MSG_ON                              "\xb3 "  // intentional space to shift wide symbol to the left
58
+#define MSG_OFF                             "\xb5 "  // intentional space to shift wide symbol to the left
59
+#define MSG_PID_P                           "PID-P"
60
+#define MSG_PID_I                           "PID-I"
61
+#define MSG_PID_D                           "PID-D"
62
+#define MSG_PID_C                           "PID-C"
63
+#define MSG_ACC                             "Accel"
64
+#define MSG_VXY_JERK                        "Vxy-jerk"
65
+#define MSG_VZ_JERK                         "Vz-jerk"
66
+#define MSG_VE_JERK                         "Ve-jerk"
67
+#define MSG_VMAX                            "Vmax "
68
+#define MSG_X                               "x"
69
+#define MSG_Y                               "y"
70
+#define MSG_Z                               "z"
71
+#define MSG_E                               "e"
72
+#define MSG_VMIN                            "Vmin"
73
+#define MSG_VTRAV_MIN                       "VTrav min"
74
+#define MSG_AMAX                            "Amax "
75
+#define MSG_A_RETRACT                       "A-retract"
76
+#define MSG_A_TRAVEL                        "A-travel"
77
+#define MSG_XSTEPS                          "Xsteps/mm"
78
+#define MSG_YSTEPS                          "Ysteps/mm"
79
+#define MSG_ZSTEPS                          "Zsteps/mm"
80
+#define MSG_ESTEPS                          "Esteps/mm"
81
+#define MSG_TEMPERATURE                     "\xc9\xd2"
82
+#define MSG_MOTION                          "\xdf\xb2"
83
+#define MSG_VOLUMETRIC                      "Filament"
84
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
85
+#define MSG_FILAMENT_DIAM                   "Fil. Dia."
86
+#define MSG_CONTRAST                        "LCD contrast"
87
+#define MSG_STORE_EPROM                     "Store memory"
88
+#define MSG_LOAD_EPROM                      "Load memory"
89
+#define MSG_RESTORE_FAILSAFE                "Restore failsafe"
90
+#define MSG_REFRESH                         "Refresh"
91
+#define MSG_WATCH                           "\xec\xed\xee\xef"
92
+#define MSG_PREPARE                         "\xa4\xa5"
93
+#define MSG_TUNE                            "\xcf\xf0"
94
+#define MSG_PAUSE_PRINT                     "\xf1\xf2\xca\xf3"
95
+#define MSG_RESUME_PRINT                    "\xf4\xf5\xca\xf3"
96
+#define MSG_STOP_PRINT                      "\xf2\xf6\xca\xf3"
97
+#define MSG_CARD_MENU                       "\xaf\xb0"
98
+#define MSG_NO_CARD                         "\xf9\xa8"
99
+#define MSG_DWELL                           "Sleep..."
100
+#define MSG_USERWAIT                        "Wait for user..."
101
+#define MSG_RESUMING                        "Resuming print"
102
+#define MSG_PRINT_ABORTED                   "Print aborted"
103
+#define MSG_NO_MOVE                         "No move."
104
+#define MSG_KILLED                          "KILLED. "
105
+#define MSG_STOPPED                         "STOPPED. "
106
+#define MSG_CONTROL_RETRACT                 "Retract mm"
107
+#define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
108
+#define MSG_CONTROL_RETRACTF                "Retract  V"
109
+#define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
110
+#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
111
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
112
+#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
113
+#define MSG_AUTORETRACT                     "AutoRetr."
114
+#define MSG_FILAMENTCHANGE                  "Change filament"
115
+#define MSG_INIT_SDCARD                     "Init. SD card"
116
+#define MSG_CNG_SDCARD                      "Change SD card"
117
+#define MSG_ZPROBE_OUT                      "Z probe out. bed"
118
+#define MSG_POSITION_UNKNOWN                "Home X/Y before Z"
119
+#define MSG_ZPROBE_ZOFFSET                  "Z Offset"
120
+#define MSG_BABYSTEP_X                      "Babystep X"
121
+#define MSG_BABYSTEP_Y                      "Babystep Y"
122
+#define MSG_BABYSTEP_Z                      "Babystep Z"
123
+#define MSG_ENDSTOP_ABORT                   "Endstop abort"
124
+#define MSG_HEATING_FAILED_LCD              "Heating failed"
125
+#define MSG_ERR_REDUNDANT_TEMP              "Err: REDUNDANT TEMP ERROR"
126
+#define MSG_THERMAL_RUNAWAY                 "THERMAL RUNAWAY"
127
+#define MSG_ERR_MAXTEMP                     "Err: MAXTEMP"
128
+#define MSG_ERR_MINTEMP                     "Err: MINTEMP"
129
+#define MSG_ERR_MAXTEMP_BED                 "Err: MAXTEMP BED"
130
+#define MSG_END_HOUR                        "hours"
131
+#define MSG_END_MINUTE                      "minutes"
132
 
132
 
133
-  #if ENABLED(DELTA_CALIBRATION_MENU)
134
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
135
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
136
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
137
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
138
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
139
-  #endif // DELTA_CALIBRATION_MENU
133
+#if ENABLED(DELTA_CALIBRATION_MENU)
134
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
135
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
136
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
137
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
138
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
139
+#endif // DELTA_CALIBRATION_MENU
140
 
140
 
141
 #endif // LANGUAGE_CN_H
141
 #endif // LANGUAGE_CN_H
142
 
142
 

+ 5
- 5
Marlin/language_da.h Переглянути файл

131
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
131
 #define MSG_ENDSTOP_ABORT                   "Endstop abort"
132
 
132
 
133
 #ifdef DELTA_CALIBRATION_MENU
133
 #ifdef DELTA_CALIBRATION_MENU
134
-    #define MSG_DELTA_CALIBRATE             "Delta Kalibrering"
135
-    #define MSG_DELTA_CALIBRATE_X           "Kalibrer X"
136
-    #define MSG_DELTA_CALIBRATE_Y           "Kalibrer Y"
137
-    #define MSG_DELTA_CALIBRATE_Z           "Kalibrer Z"
138
-    #define MSG_DELTA_CALIBRATE_CENTER      "Kalibrerings Center"
134
+  #define MSG_DELTA_CALIBRATE               "Delta Kalibrering"
135
+  #define MSG_DELTA_CALIBRATE_X             "Kalibrer X"
136
+  #define MSG_DELTA_CALIBRATE_Y             "Kalibrer Y"
137
+  #define MSG_DELTA_CALIBRATE_Z             "Kalibrer Z"
138
+  #define MSG_DELTA_CALIBRATE_CENTER        "Kalibrerings Center"
139
 #endif // DELTA_CALIBRATION_MENU
139
 #endif // DELTA_CALIBRATION_MENU
140
 
140
 
141
 #endif // LANGUAGE_DA_H
141
 #endif // LANGUAGE_DA_H

+ 5
- 5
Marlin/language_de.h Переглянути файл

128
 #define MSG_BED_DONE                        "Bett aufgeheizt"
128
 #define MSG_BED_DONE                        "Bett aufgeheizt"
129
 
129
 
130
 #if ENABLED(DELTA_CALIBRATION_MENU)
130
 #if ENABLED(DELTA_CALIBRATION_MENU)
131
-    #define MSG_DELTA_CALIBRATE             "Delta kalibrieren"
132
-    #define MSG_DELTA_CALIBRATE_X           "Kalibriere X"
133
-    #define MSG_DELTA_CALIBRATE_Y           "Kalibriere Y"
134
-    #define MSG_DELTA_CALIBRATE_Z           "Kalibriere Z"
135
-    #define MSG_DELTA_CALIBRATE_CENTER      "Kalibriere Mitte"
131
+  #define MSG_DELTA_CALIBRATE               "Delta kalibrieren"
132
+  #define MSG_DELTA_CALIBRATE_X             "Kalibriere X"
133
+  #define MSG_DELTA_CALIBRATE_Y             "Kalibriere Y"
134
+  #define MSG_DELTA_CALIBRATE_Z             "Kalibriere Z"
135
+  #define MSG_DELTA_CALIBRATE_CENTER        "Kalibriere Mitte"
136
 #endif // DELTA_CALIBRATION_MENU
136
 #endif // DELTA_CALIBRATION_MENU
137
 
137
 
138
 #endif // LANGUAGE_DE_H
138
 #endif // LANGUAGE_DE_H

+ 158
- 161
Marlin/language_en.h Переглянути файл

19
 
19
 
20
 
20
 
21
 #ifndef WELCOME_MSG
21
 #ifndef WELCOME_MSG
22
-#define WELCOME_MSG                         MACHINE_NAME " ready."
22
+  #define WELCOME_MSG                         MACHINE_NAME " ready."
23
 #endif
23
 #endif
24
 #ifndef MSG_SD_INSERTED
24
 #ifndef MSG_SD_INSERTED
25
-#define MSG_SD_INSERTED                     "Card inserted"
25
+  #define MSG_SD_INSERTED                     "Card inserted"
26
 #endif
26
 #endif
27
 #ifndef MSG_SD_REMOVED
27
 #ifndef MSG_SD_REMOVED
28
-#define MSG_SD_REMOVED                      "Card removed"
28
+  #define MSG_SD_REMOVED                      "Card removed"
29
 #endif
29
 #endif
30
 #ifndef MSG_MAIN
30
 #ifndef MSG_MAIN
31
-#define MSG_MAIN                            "Main"
31
+  #define MSG_MAIN                            "Main"
32
 #endif
32
 #endif
33
 #ifndef MSG_AUTOSTART
33
 #ifndef MSG_AUTOSTART
34
-#define MSG_AUTOSTART                       "Autostart"
34
+  #define MSG_AUTOSTART                       "Autostart"
35
 #endif
35
 #endif
36
 #ifndef MSG_DISABLE_STEPPERS
36
 #ifndef MSG_DISABLE_STEPPERS
37
-#define MSG_DISABLE_STEPPERS                "Disable steppers"
37
+  #define MSG_DISABLE_STEPPERS                "Disable steppers"
38
 #endif
38
 #endif
39
 #ifndef MSG_AUTO_HOME
39
 #ifndef MSG_AUTO_HOME
40
-#define MSG_AUTO_HOME                       "Auto home"
40
+  #define MSG_AUTO_HOME                       "Auto home"
41
 #endif
41
 #endif
42
 #ifndef MSG_SET_HOME_OFFSETS
42
 #ifndef MSG_SET_HOME_OFFSETS
43
-#define MSG_SET_HOME_OFFSETS                "Set home offsets"
43
+  #define MSG_SET_HOME_OFFSETS                "Set home offsets"
44
 #endif
44
 #endif
45
 #ifndef MSG_SET_ORIGIN
45
 #ifndef MSG_SET_ORIGIN
46
-#define MSG_SET_ORIGIN                      "Set origin"
46
+  #define MSG_SET_ORIGIN                      "Set origin"
47
 #endif
47
 #endif
48
 #ifndef MSG_PREHEAT_PLA
48
 #ifndef MSG_PREHEAT_PLA
49
-#define MSG_PREHEAT_PLA                     "Preheat PLA"
49
+  #define MSG_PREHEAT_PLA                     "Preheat PLA"
50
 #endif
50
 #endif
51
 #ifndef MSG_PREHEAT_PLA_N
51
 #ifndef MSG_PREHEAT_PLA_N
52
-#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
52
+  #define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
53
 #endif
53
 #endif
54
 #ifndef MSG_PREHEAT_PLA_ALL
54
 #ifndef MSG_PREHEAT_PLA_ALL
55
-#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " All"
55
+  #define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " All"
56
 #endif
56
 #endif
57
 #ifndef MSG_PREHEAT_PLA_BEDONLY
57
 #ifndef MSG_PREHEAT_PLA_BEDONLY
58
-#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " Bed"
58
+  #define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " Bed"
59
 #endif
59
 #endif
60
 #ifndef MSG_PREHEAT_PLA_SETTINGS
60
 #ifndef MSG_PREHEAT_PLA_SETTINGS
61
-#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " conf"
61
+  #define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " conf"
62
 #endif
62
 #endif
63
 #ifndef MSG_PREHEAT_ABS
63
 #ifndef MSG_PREHEAT_ABS
64
-#define MSG_PREHEAT_ABS                     "Preheat ABS"
64
+  #define MSG_PREHEAT_ABS                     "Preheat ABS"
65
 #endif
65
 #endif
66
 #ifndef MSG_PREHEAT_ABS_N
66
 #ifndef MSG_PREHEAT_ABS_N
67
-#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
67
+  #define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
68
 #endif
68
 #endif
69
 #ifndef MSG_PREHEAT_ABS_ALL
69
 #ifndef MSG_PREHEAT_ABS_ALL
70
-#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " All"
70
+  #define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " All"
71
 #endif
71
 #endif
72
 #ifndef MSG_PREHEAT_ABS_BEDONLY
72
 #ifndef MSG_PREHEAT_ABS_BEDONLY
73
-#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Bed"
73
+  #define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " Bed"
74
 #endif
74
 #endif
75
 #ifndef MSG_PREHEAT_ABS_SETTINGS
75
 #ifndef MSG_PREHEAT_ABS_SETTINGS
76
-#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " conf"
76
+  #define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " conf"
77
 #endif
77
 #endif
78
 #ifndef MSG_H1
78
 #ifndef MSG_H1
79
-#define MSG_H1                              "1"
79
+  #define MSG_H1                              "1"
80
 #endif
80
 #endif
81
 #ifndef MSG_H2
81
 #ifndef MSG_H2
82
-#define MSG_H2                              "2"
82
+  #define MSG_H2                              "2"
83
 #endif
83
 #endif
84
 #ifndef MSG_H3
84
 #ifndef MSG_H3
85
-#define MSG_H3                              "3"
85
+  #define MSG_H3                              "3"
86
 #endif
86
 #endif
87
 #ifndef MSG_H4
87
 #ifndef MSG_H4
88
-#define MSG_H4                              "4"
88
+  #define MSG_H4                              "4"
89
 #endif
89
 #endif
90
 #ifndef MSG_COOLDOWN
90
 #ifndef MSG_COOLDOWN
91
-#define MSG_COOLDOWN                        "Cooldown"
91
+  #define MSG_COOLDOWN                        "Cooldown"
92
 #endif
92
 #endif
93
 #ifndef MSG_SWITCH_PS_ON
93
 #ifndef MSG_SWITCH_PS_ON
94
-#define MSG_SWITCH_PS_ON                    "Switch power on"
94
+  #define MSG_SWITCH_PS_ON                    "Switch power on"
95
 #endif
95
 #endif
96
 #ifndef MSG_SWITCH_PS_OFF
96
 #ifndef MSG_SWITCH_PS_OFF
97
-#define MSG_SWITCH_PS_OFF                   "Switch power off"
97
+  #define MSG_SWITCH_PS_OFF                   "Switch power off"
98
 #endif
98
 #endif
99
 #ifndef MSG_EXTRUDE
99
 #ifndef MSG_EXTRUDE
100
-#define MSG_EXTRUDE                         "Extrude"
100
+  #define MSG_EXTRUDE                         "Extrude"
101
 #endif
101
 #endif
102
 #ifndef MSG_RETRACT
102
 #ifndef MSG_RETRACT
103
-#define MSG_RETRACT                         "Retract"
103
+  #define MSG_RETRACT                         "Retract"
104
 #endif
104
 #endif
105
 #ifndef MSG_MOVE_AXIS
105
 #ifndef MSG_MOVE_AXIS
106
-#define MSG_MOVE_AXIS                       "Move axis"
106
+  #define MSG_MOVE_AXIS                       "Move axis"
107
 #endif
107
 #endif
108
 #ifndef MSG_LEVEL_BED
108
 #ifndef MSG_LEVEL_BED
109
-#define MSG_LEVEL_BED                       "Level bed"
109
+  #define MSG_LEVEL_BED                       "Level bed"
110
 #endif
110
 #endif
111
 #ifndef MSG_MOVE_X
111
 #ifndef MSG_MOVE_X
112
-#define MSG_MOVE_X                          "Move X"
112
+  #define MSG_MOVE_X                          "Move X"
113
 #endif
113
 #endif
114
 #ifndef MSG_MOVE_Y
114
 #ifndef MSG_MOVE_Y
115
-#define MSG_MOVE_Y                          "Move Y"
115
+  #define MSG_MOVE_Y                          "Move Y"
116
 #endif
116
 #endif
117
 #ifndef MSG_MOVE_Z
117
 #ifndef MSG_MOVE_Z
118
-#define MSG_MOVE_Z                          "Move Z"
118
+  #define MSG_MOVE_Z                          "Move Z"
119
 #endif
119
 #endif
120
 #ifndef MSG_MOVE_E
120
 #ifndef MSG_MOVE_E
121
-#define MSG_MOVE_E                          "Extruder"
121
+  #define MSG_MOVE_E                          "Extruder"
122
 #endif
122
 #endif
123
 #ifndef MSG_MOVE_E1
123
 #ifndef MSG_MOVE_E1
124
-#define MSG_MOVE_E1                         "1"
124
+  #define MSG_MOVE_E1                         "1"
125
 #endif
125
 #endif
126
 #ifndef MSG_MOVE_E2
126
 #ifndef MSG_MOVE_E2
127
-#define MSG_MOVE_E2                         "2"
127
+  #define MSG_MOVE_E2                         "2"
128
 #endif
128
 #endif
129
 #ifndef MSG_MOVE_E3
129
 #ifndef MSG_MOVE_E3
130
-#define MSG_MOVE_E3                         "3"
130
+  #define MSG_MOVE_E3                         "3"
131
 #endif
131
 #endif
132
 #ifndef MSG_MOVE_E4
132
 #ifndef MSG_MOVE_E4
133
-#define MSG_MOVE_E4                         "4"
133
+  #define MSG_MOVE_E4                         "4"
134
 #endif
134
 #endif
135
 #ifndef MSG_MOVE_01MM
135
 #ifndef MSG_MOVE_01MM
136
-#define MSG_MOVE_01MM                       "Move 0.1mm"
136
+  #define MSG_MOVE_01MM                       "Move 0.1mm"
137
 #endif
137
 #endif
138
 #ifndef MSG_MOVE_1MM
138
 #ifndef MSG_MOVE_1MM
139
-#define MSG_MOVE_1MM                        "Move 1mm"
139
+  #define MSG_MOVE_1MM                        "Move 1mm"
140
 #endif
140
 #endif
141
 #ifndef MSG_MOVE_10MM
141
 #ifndef MSG_MOVE_10MM
142
-#define MSG_MOVE_10MM                       "Move 10mm"
142
+  #define MSG_MOVE_10MM                       "Move 10mm"
143
 #endif
143
 #endif
144
 #ifndef MSG_SPEED
144
 #ifndef MSG_SPEED
145
-#define MSG_SPEED                           "Speed"
145
+  #define MSG_SPEED                           "Speed"
146
 #endif
146
 #endif
147
 #ifndef MSG_NOZZLE
147
 #ifndef MSG_NOZZLE
148
-#define MSG_NOZZLE                          "Nozzle"
148
+  #define MSG_NOZZLE                          "Nozzle"
149
 #endif
149
 #endif
150
 #ifndef MSG_N1
150
 #ifndef MSG_N1
151
-#define MSG_N1                              " 1"
151
+  #define MSG_N1                              " 1"
152
 #endif
152
 #endif
153
 #ifndef MSG_N2
153
 #ifndef MSG_N2
154
-#define MSG_N2                              " 2"
154
+  #define MSG_N2                              " 2"
155
 #endif
155
 #endif
156
 #ifndef MSG_N3
156
 #ifndef MSG_N3
157
-#define MSG_N3                              " 3"
157
+  #define MSG_N3                              " 3"
158
 #endif
158
 #endif
159
 #ifndef MSG_N4
159
 #ifndef MSG_N4
160
-#define MSG_N4                              " 4"
160
+  #define MSG_N4                              " 4"
161
 #endif
161
 #endif
162
 #ifndef MSG_BED
162
 #ifndef MSG_BED
163
-#define MSG_BED                             "Bed"
163
+  #define MSG_BED                             "Bed"
164
 #endif
164
 #endif
165
 #ifndef MSG_FAN_SPEED
165
 #ifndef MSG_FAN_SPEED
166
-#define MSG_FAN_SPEED                       "Fan speed"
166
+  #define MSG_FAN_SPEED                       "Fan speed"
167
 #endif
167
 #endif
168
 #ifndef MSG_FLOW
168
 #ifndef MSG_FLOW
169
-#define MSG_FLOW                            "Flow"
169
+  #define MSG_FLOW                            "Flow"
170
 #endif
170
 #endif
171
 #ifndef MSG_CONTROL
171
 #ifndef MSG_CONTROL
172
-#define MSG_CONTROL                         "Control"
172
+  #define MSG_CONTROL                         "Control"
173
 #endif
173
 #endif
174
 #ifndef MSG_MIN
174
 #ifndef MSG_MIN
175
-#define MSG_MIN                             " " LCD_STR_THERMOMETER " Min"
175
+  #define MSG_MIN                             " " LCD_STR_THERMOMETER " Min"
176
 #endif
176
 #endif
177
 #ifndef MSG_MAX
177
 #ifndef MSG_MAX
178
-#define MSG_MAX                             " " LCD_STR_THERMOMETER " Max"
178
+  #define MSG_MAX                             " " LCD_STR_THERMOMETER " Max"
179
 #endif
179
 #endif
180
 #ifndef MSG_FACTOR
180
 #ifndef MSG_FACTOR
181
-#define MSG_FACTOR                          " " LCD_STR_THERMOMETER " Fact"
181
+  #define MSG_FACTOR                          " " LCD_STR_THERMOMETER " Fact"
182
 #endif
182
 #endif
183
 #ifndef MSG_AUTOTEMP
183
 #ifndef MSG_AUTOTEMP
184
-#define MSG_AUTOTEMP                        "Autotemp"
184
+  #define MSG_AUTOTEMP                        "Autotemp"
185
 #endif
185
 #endif
186
 #ifndef MSG_ON
186
 #ifndef MSG_ON
187
-#define MSG_ON                              "On "
187
+  #define MSG_ON                              "On "
188
 #endif
188
 #endif
189
 #ifndef MSG_OFF
189
 #ifndef MSG_OFF
190
-#define MSG_OFF                             "Off"
190
+  #define MSG_OFF                             "Off"
191
 #endif
191
 #endif
192
 #ifndef MSG_PID_P
192
 #ifndef MSG_PID_P
193
-#define MSG_PID_P                           "PID-P"
193
+  #define MSG_PID_P                           "PID-P"
194
 #endif
194
 #endif
195
 #ifndef MSG_PID_I
195
 #ifndef MSG_PID_I
196
-#define MSG_PID_I                           "PID-I"
196
+  #define MSG_PID_I                           "PID-I"
197
 #endif
197
 #endif
198
 #ifndef MSG_PID_D
198
 #ifndef MSG_PID_D
199
-#define MSG_PID_D                           "PID-D"
199
+  #define MSG_PID_D                           "PID-D"
200
 #endif
200
 #endif
201
 #ifndef MSG_PID_C
201
 #ifndef MSG_PID_C
202
-#define MSG_PID_C                           "PID-C"
202
+  #define MSG_PID_C                           "PID-C"
203
 #endif
203
 #endif
204
 #ifndef MSG_E1
204
 #ifndef MSG_E1
205
-#define MSG_E1                              " E1"
205
+  #define MSG_E1                              " E1"
206
 #endif
206
 #endif
207
 #ifndef MSG_E2
207
 #ifndef MSG_E2
208
-#define MSG_E2                              " E2"
208
+  #define MSG_E2                              " E2"
209
 #endif
209
 #endif
210
 #ifndef MSG_E3
210
 #ifndef MSG_E3
211
-#define MSG_E3                              " E3"
211
+  #define MSG_E3                              " E3"
212
 #endif
212
 #endif
213
 #ifndef MSG_E4
213
 #ifndef MSG_E4
214
-#define MSG_E4                              " E4"
214
+  #define MSG_E4                              " E4"
215
 #endif
215
 #endif
216
 #ifndef MSG_ACC
216
 #ifndef MSG_ACC
217
-#define MSG_ACC                             "Accel"
217
+  #define MSG_ACC                             "Accel"
218
 #endif
218
 #endif
219
 #ifndef MSG_VXY_JERK
219
 #ifndef MSG_VXY_JERK
220
-#define MSG_VXY_JERK                        "Vxy-jerk"
220
+  #define MSG_VXY_JERK                        "Vxy-jerk"
221
 #endif
221
 #endif
222
 #ifndef MSG_VZ_JERK
222
 #ifndef MSG_VZ_JERK
223
-#define MSG_VZ_JERK                         "Vz-jerk"
223
+  #define MSG_VZ_JERK                         "Vz-jerk"
224
 #endif
224
 #endif
225
 #ifndef MSG_VE_JERK
225
 #ifndef MSG_VE_JERK
226
-#define MSG_VE_JERK                         "Ve-jerk"
226
+  #define MSG_VE_JERK                         "Ve-jerk"
227
 #endif
227
 #endif
228
 #ifndef MSG_VMAX
228
 #ifndef MSG_VMAX
229
-#define MSG_VMAX                            "Vmax "
229
+  #define MSG_VMAX                            "Vmax "
230
 #endif
230
 #endif
231
 #ifndef MSG_X
231
 #ifndef MSG_X
232
-#define MSG_X                               "x"
232
+  #define MSG_X                               "x"
233
 #endif
233
 #endif
234
 #ifndef MSG_Y
234
 #ifndef MSG_Y
235
-#define MSG_Y                               "y"
235
+  #define MSG_Y                               "y"
236
 #endif
236
 #endif
237
 #ifndef MSG_Z
237
 #ifndef MSG_Z
238
-#define MSG_Z                               "z"
238
+  #define MSG_Z                               "z"
239
 #endif
239
 #endif
240
 #ifndef MSG_E
240
 #ifndef MSG_E
241
-#define MSG_E                               "e"
241
+  #define MSG_E                               "e"
242
 #endif
242
 #endif
243
 #ifndef MSG_VMIN
243
 #ifndef MSG_VMIN
244
-#define MSG_VMIN                            "Vmin"
244
+  #define MSG_VMIN                            "Vmin"
245
 #endif
245
 #endif
246
 #ifndef MSG_VTRAV_MIN
246
 #ifndef MSG_VTRAV_MIN
247
-#define MSG_VTRAV_MIN                       "VTrav min"
247
+  #define MSG_VTRAV_MIN                       "VTrav min"
248
 #endif
248
 #endif
249
 #ifndef MSG_AMAX
249
 #ifndef MSG_AMAX
250
-#define MSG_AMAX                            "Amax "
250
+  #define MSG_AMAX                            "Amax "
251
 #endif
251
 #endif
252
 #ifndef MSG_A_RETRACT
252
 #ifndef MSG_A_RETRACT
253
-#define MSG_A_RETRACT                       "A-retract"
253
+  #define MSG_A_RETRACT                       "A-retract"
254
 #endif
254
 #endif
255
 #ifndef MSG_A_TRAVEL
255
 #ifndef MSG_A_TRAVEL
256
-#define MSG_A_TRAVEL                        "A-travel"
256
+  #define MSG_A_TRAVEL                        "A-travel"
257
 #endif
257
 #endif
258
 #ifndef MSG_XSTEPS
258
 #ifndef MSG_XSTEPS
259
-#define MSG_XSTEPS                          "Xsteps/mm"
259
+  #define MSG_XSTEPS                          "Xsteps/mm"
260
 #endif
260
 #endif
261
 #ifndef MSG_YSTEPS
261
 #ifndef MSG_YSTEPS
262
-#define MSG_YSTEPS                          "Ysteps/mm"
262
+  #define MSG_YSTEPS                          "Ysteps/mm"
263
 #endif
263
 #endif
264
 #ifndef MSG_ZSTEPS
264
 #ifndef MSG_ZSTEPS
265
-#define MSG_ZSTEPS                          "Zsteps/mm"
265
+  #define MSG_ZSTEPS                          "Zsteps/mm"
266
 #endif
266
 #endif
267
 #ifndef MSG_ESTEPS
267
 #ifndef MSG_ESTEPS
268
-#define MSG_ESTEPS                          "Esteps/mm"
268
+  #define MSG_ESTEPS                          "Esteps/mm"
269
 #endif
269
 #endif
270
 #ifndef MSG_TEMPERATURE
270
 #ifndef MSG_TEMPERATURE
271
-#define MSG_TEMPERATURE                     "Temperature"
271
+  #define MSG_TEMPERATURE                     "Temperature"
272
 #endif
272
 #endif
273
 #ifndef MSG_MOTION
273
 #ifndef MSG_MOTION
274
-#define MSG_MOTION                          "Motion"
274
+  #define MSG_MOTION                          "Motion"
275
 #endif
275
 #endif
276
 #ifndef MSG_VOLUMETRIC
276
 #ifndef MSG_VOLUMETRIC
277
-#define MSG_VOLUMETRIC                      "Filament"
277
+  #define MSG_VOLUMETRIC                      "Filament"
278
 #endif
278
 #endif
279
 #ifndef MSG_VOLUMETRIC_ENABLED
279
 #ifndef MSG_VOLUMETRIC_ENABLED
280
-#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
280
+  #define MSG_VOLUMETRIC_ENABLED              "E in mm3"
281
 #endif
281
 #endif
282
 #ifndef MSG_FILAMENT_DIAM
282
 #ifndef MSG_FILAMENT_DIAM
283
-#define MSG_FILAMENT_DIAM                   "Fil. Dia."
283
+  #define MSG_FILAMENT_DIAM                   "Fil. Dia."
284
 #endif
284
 #endif
285
 #ifndef MSG_DIAM_E1
285
 #ifndef MSG_DIAM_E1
286
-#define MSG_DIAM_E1                         " 1"
286
+  #define MSG_DIAM_E1                         " 1"
287
 #endif
287
 #endif
288
 #ifndef MSG_DIAM_E2
288
 #ifndef MSG_DIAM_E2
289
-#define MSG_DIAM_E2                         " 2"
289
+  #define MSG_DIAM_E2                         " 2"
290
 #endif
290
 #endif
291
 #ifndef MSG_DIAM_E3
291
 #ifndef MSG_DIAM_E3
292
-#define MSG_DIAM_E3                         " 3"
292
+  #define MSG_DIAM_E3                         " 3"
293
 #endif
293
 #endif
294
 #ifndef MSG_DIAM_E4
294
 #ifndef MSG_DIAM_E4
295
-#define MSG_DIAM_E4                         " 4"
295
+  #define MSG_DIAM_E4                         " 4"
296
 #endif
296
 #endif
297
 #ifndef MSG_CONTRAST
297
 #ifndef MSG_CONTRAST
298
-#define MSG_CONTRAST                        "LCD contrast"
298
+  #define MSG_CONTRAST                        "LCD contrast"
299
 #endif
299
 #endif
300
 #ifndef MSG_STORE_EPROM
300
 #ifndef MSG_STORE_EPROM
301
-#define MSG_STORE_EPROM                     "Store memory"
301
+  #define MSG_STORE_EPROM                     "Store memory"
302
 #endif
302
 #endif
303
 #ifndef MSG_LOAD_EPROM
303
 #ifndef MSG_LOAD_EPROM
304
-#define MSG_LOAD_EPROM                      "Load memory"
304
+  #define MSG_LOAD_EPROM                      "Load memory"
305
 #endif
305
 #endif
306
 #ifndef MSG_RESTORE_FAILSAFE
306
 #ifndef MSG_RESTORE_FAILSAFE
307
-#define MSG_RESTORE_FAILSAFE                "Restore failsafe"
307
+  #define MSG_RESTORE_FAILSAFE                "Restore failsafe"
308
 #endif
308
 #endif
309
 #ifndef MSG_REFRESH
309
 #ifndef MSG_REFRESH
310
-#define MSG_REFRESH                         "Refresh"
310
+  #define MSG_REFRESH                         "Refresh"
311
 #endif
311
 #endif
312
 #ifndef MSG_WATCH
312
 #ifndef MSG_WATCH
313
-#define MSG_WATCH                           "Info screen"
313
+  #define MSG_WATCH                           "Info screen"
314
 #endif
314
 #endif
315
 #ifndef MSG_PREPARE
315
 #ifndef MSG_PREPARE
316
-#define MSG_PREPARE                         "Prepare"
316
+  #define MSG_PREPARE                         "Prepare"
317
 #endif
317
 #endif
318
 #ifndef MSG_TUNE
318
 #ifndef MSG_TUNE
319
-#define MSG_TUNE                            "Tune"
319
+  #define MSG_TUNE                            "Tune"
320
 #endif
320
 #endif
321
 #ifndef MSG_PAUSE_PRINT
321
 #ifndef MSG_PAUSE_PRINT
322
-#define MSG_PAUSE_PRINT                     "Pause print"
322
+  #define MSG_PAUSE_PRINT                     "Pause print"
323
 #endif
323
 #endif
324
 #ifndef MSG_RESUME_PRINT
324
 #ifndef MSG_RESUME_PRINT
325
-#define MSG_RESUME_PRINT                    "Resume print"
325
+  #define MSG_RESUME_PRINT                    "Resume print"
326
 #endif
326
 #endif
327
 #ifndef MSG_STOP_PRINT
327
 #ifndef MSG_STOP_PRINT
328
-#define MSG_STOP_PRINT                      "Stop print"
328
+  #define MSG_STOP_PRINT                      "Stop print"
329
 #endif
329
 #endif
330
 #ifndef MSG_CARD_MENU
330
 #ifndef MSG_CARD_MENU
331
-#define MSG_CARD_MENU                       "Print from SD"
331
+  #define MSG_CARD_MENU                       "Print from SD"
332
 #endif
332
 #endif
333
 #ifndef MSG_NO_CARD
333
 #ifndef MSG_NO_CARD
334
-#define MSG_NO_CARD                         "No SD card"
334
+  #define MSG_NO_CARD                         "No SD card"
335
 #endif
335
 #endif
336
 #ifndef MSG_DWELL
336
 #ifndef MSG_DWELL
337
-#define MSG_DWELL                           "Sleep..."
337
+  #define MSG_DWELL                           "Sleep..."
338
 #endif
338
 #endif
339
 #ifndef MSG_USERWAIT
339
 #ifndef MSG_USERWAIT
340
-#define MSG_USERWAIT                        "Wait for user..."
340
+  #define MSG_USERWAIT                        "Wait for user..."
341
 #endif
341
 #endif
342
 #ifndef MSG_RESUMING
342
 #ifndef MSG_RESUMING
343
-#define MSG_RESUMING                        "Resuming print"
343
+  #define MSG_RESUMING                        "Resuming print"
344
 #endif
344
 #endif
345
 #ifndef MSG_PRINT_ABORTED
345
 #ifndef MSG_PRINT_ABORTED
346
-#define MSG_PRINT_ABORTED                   "Print aborted"
346
+  #define MSG_PRINT_ABORTED                   "Print aborted"
347
 #endif
347
 #endif
348
 #ifndef MSG_NO_MOVE
348
 #ifndef MSG_NO_MOVE
349
-#define MSG_NO_MOVE                         "No move."
349
+  #define MSG_NO_MOVE                         "No move."
350
 #endif
350
 #endif
351
 #ifndef MSG_KILLED
351
 #ifndef MSG_KILLED
352
-#define MSG_KILLED                          "KILLED. "
352
+  #define MSG_KILLED                          "KILLED. "
353
 #endif
353
 #endif
354
 #ifndef MSG_STOPPED
354
 #ifndef MSG_STOPPED
355
-#define MSG_STOPPED                         "STOPPED. "
355
+  #define MSG_STOPPED                         "STOPPED. "
356
 #endif
356
 #endif
357
 #ifndef MSG_CONTROL_RETRACT
357
 #ifndef MSG_CONTROL_RETRACT
358
-#define MSG_CONTROL_RETRACT                 "Retract mm"
358
+  #define MSG_CONTROL_RETRACT                 "Retract mm"
359
 #endif
359
 #endif
360
 #ifndef MSG_CONTROL_RETRACT_SWAP
360
 #ifndef MSG_CONTROL_RETRACT_SWAP
361
-#define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
361
+  #define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
362
 #endif
362
 #endif
363
 #ifndef MSG_CONTROL_RETRACTF
363
 #ifndef MSG_CONTROL_RETRACTF
364
-#define MSG_CONTROL_RETRACTF                "Retract  V"
364
+  #define MSG_CONTROL_RETRACTF                "Retract  V"
365
 #endif
365
 #endif
366
 #ifndef MSG_CONTROL_RETRACT_ZLIFT
366
 #ifndef MSG_CONTROL_RETRACT_ZLIFT
367
-#define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
367
+  #define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
368
 #endif
368
 #endif
369
 #ifndef MSG_CONTROL_RETRACT_RECOVER
369
 #ifndef MSG_CONTROL_RETRACT_RECOVER
370
-#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
370
+  #define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
371
 #endif
371
 #endif
372
 #ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP
372
 #ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP
373
-#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
373
+  #define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
374
 #endif
374
 #endif
375
 #ifndef MSG_CONTROL_RETRACT_RECOVERF
375
 #ifndef MSG_CONTROL_RETRACT_RECOVERF
376
-#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
376
+  #define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
377
 #endif
377
 #endif
378
 #ifndef MSG_AUTORETRACT
378
 #ifndef MSG_AUTORETRACT
379
-#define MSG_AUTORETRACT                     "AutoRetr."
379
+  #define MSG_AUTORETRACT                     "AutoRetr."
380
 #endif
380
 #endif
381
 #ifndef MSG_FILAMENTCHANGE
381
 #ifndef MSG_FILAMENTCHANGE
382
-#define MSG_FILAMENTCHANGE                  "Change filament"
382
+  #define MSG_FILAMENTCHANGE                  "Change filament"
383
 #endif
383
 #endif
384
 #ifndef MSG_INIT_SDCARD
384
 #ifndef MSG_INIT_SDCARD
385
-#define MSG_INIT_SDCARD                     "Init. SD card"
385
+  #define MSG_INIT_SDCARD                     "Init. SD card"
386
 #endif
386
 #endif
387
 #ifndef MSG_CNG_SDCARD
387
 #ifndef MSG_CNG_SDCARD
388
-#define MSG_CNG_SDCARD                      "Change SD card"
388
+  #define MSG_CNG_SDCARD                      "Change SD card"
389
 #endif
389
 #endif
390
 #ifndef MSG_ZPROBE_OUT
390
 #ifndef MSG_ZPROBE_OUT
391
-#define MSG_ZPROBE_OUT                      "Z probe out. bed"
391
+  #define MSG_ZPROBE_OUT                      "Z probe out. bed"
392
 #endif
392
 #endif
393
 #ifndef MSG_POSITION_UNKNOWN
393
 #ifndef MSG_POSITION_UNKNOWN
394
-#define MSG_POSITION_UNKNOWN                "Home X/Y before Z"
394
+  #define MSG_POSITION_UNKNOWN                "Home X/Y before Z"
395
 #endif
395
 #endif
396
 #ifndef MSG_ZPROBE_ZOFFSET
396
 #ifndef MSG_ZPROBE_ZOFFSET
397
-#define MSG_ZPROBE_ZOFFSET                  "Z Offset"
397
+  #define MSG_ZPROBE_ZOFFSET                  "Z Offset"
398
 #endif
398
 #endif
399
 #ifndef MSG_BABYSTEP_X
399
 #ifndef MSG_BABYSTEP_X
400
-#define MSG_BABYSTEP_X                      "Babystep X"
400
+  #define MSG_BABYSTEP_X                      "Babystep X"
401
 #endif
401
 #endif
402
 #ifndef MSG_BABYSTEP_Y
402
 #ifndef MSG_BABYSTEP_Y
403
-#define MSG_BABYSTEP_Y                      "Babystep Y"
403
+  #define MSG_BABYSTEP_Y                      "Babystep Y"
404
 #endif
404
 #endif
405
 #ifndef MSG_BABYSTEP_Z
405
 #ifndef MSG_BABYSTEP_Z
406
-#define MSG_BABYSTEP_Z                      "Babystep Z"
406
+  #define MSG_BABYSTEP_Z                      "Babystep Z"
407
 #endif
407
 #endif
408
 #ifndef MSG_ENDSTOP_ABORT
408
 #ifndef MSG_ENDSTOP_ABORT
409
-#define MSG_ENDSTOP_ABORT                   "Endstop abort"
409
+  #define MSG_ENDSTOP_ABORT                   "Endstop abort"
410
 #endif
410
 #endif
411
 #ifndef MSG_HEATING_FAILED_LCD
411
 #ifndef MSG_HEATING_FAILED_LCD
412
-#define MSG_HEATING_FAILED_LCD              "Heating failed"
412
+  #define MSG_HEATING_FAILED_LCD              "Heating failed"
413
 #endif
413
 #endif
414
 #ifndef MSG_ERR_REDUNDANT_TEMP
414
 #ifndef MSG_ERR_REDUNDANT_TEMP
415
-#define MSG_ERR_REDUNDANT_TEMP              "Err: REDUNDANT TEMP ERROR"
415
+  #define MSG_ERR_REDUNDANT_TEMP              "Err: REDUNDANT TEMP ERROR"
416
 #endif
416
 #endif
417
 #ifndef MSG_THERMAL_RUNAWAY
417
 #ifndef MSG_THERMAL_RUNAWAY
418
-#define MSG_THERMAL_RUNAWAY                 "THERMAL RUNAWAY"
418
+  #define MSG_THERMAL_RUNAWAY                 "THERMAL RUNAWAY"
419
 #endif
419
 #endif
420
 #ifndef MSG_ERR_MAXTEMP
420
 #ifndef MSG_ERR_MAXTEMP
421
-#define MSG_ERR_MAXTEMP                     "Err: MAXTEMP"
421
+  #define MSG_ERR_MAXTEMP                     "Err: MAXTEMP"
422
 #endif
422
 #endif
423
 #ifndef MSG_ERR_MINTEMP
423
 #ifndef MSG_ERR_MINTEMP
424
-#define MSG_ERR_MINTEMP                     "Err: MINTEMP"
424
+  #define MSG_ERR_MINTEMP                     "Err: MINTEMP"
425
 #endif
425
 #endif
426
 #ifndef MSG_ERR_MAXTEMP_BED
426
 #ifndef MSG_ERR_MAXTEMP_BED
427
-#define MSG_ERR_MAXTEMP_BED                 "Err: MAXTEMP BED"
427
+  #define MSG_ERR_MAXTEMP_BED                 "Err: MAXTEMP BED"
428
 #endif
428
 #endif
429
 #ifndef MSG_ERR_MINTEMP_BED
429
 #ifndef MSG_ERR_MINTEMP_BED
430
-#define MSG_ERR_MINTEMP_BED                 "Err: MINTEMP BED"
430
+  #define MSG_ERR_MINTEMP_BED                 "Err: MINTEMP BED"
431
 #endif
431
 #endif
432
 #ifndef MSG_END_HOUR
432
 #ifndef MSG_END_HOUR
433
-#define MSG_END_HOUR                        "hours"
433
+  #define MSG_END_HOUR                        "hours"
434
 #endif
434
 #endif
435
 #ifndef MSG_END_MINUTE
435
 #ifndef MSG_END_MINUTE
436
-#define MSG_END_MINUTE                      "minutes"
436
+  #define MSG_END_MINUTE                      "minutes"
437
 #endif
437
 #endif
438
 #ifndef MSG_HEATING
438
 #ifndef MSG_HEATING
439
-#define MSG_HEATING                         "Heating..."
439
+  #define MSG_HEATING                         "Heating..."
440
 #endif
440
 #endif
441
 #ifndef MSG_HEATING_COMPLETE
441
 #ifndef MSG_HEATING_COMPLETE
442
-#define MSG_HEATING_COMPLETE                "Heating done."
442
+  #define MSG_HEATING_COMPLETE                "Heating done."
443
 #endif
443
 #endif
444
 #ifndef MSG_BED_HEATING
444
 #ifndef MSG_BED_HEATING
445
-#define MSG_BED_HEATING                     "Bed Heating."
445
+  #define MSG_BED_HEATING                     "Bed Heating."
446
 #endif
446
 #endif
447
 #ifndef MSG_BED_DONE
447
 #ifndef MSG_BED_DONE
448
-#define MSG_BED_DONE                        "Bed done."
448
+  #define MSG_BED_DONE                        "Bed done."
449
+#endif
450
+#ifndef MSG_DELTA_CALIBRATE
451
+  #define MSG_DELTA_CALIBRATE                 "Delta Calibration"
452
+#endif
453
+#ifndef MSG_DELTA_CALIBRATE_X
454
+  #define MSG_DELTA_CALIBRATE_X               "Calibrate X"
455
+#endif
456
+#ifndef MSG_DELTA_CALIBRATE_Y
457
+  #define MSG_DELTA_CALIBRATE_Y               "Calibrate Y"
458
+#endif
459
+#ifndef MSG_DELTA_CALIBRATE_Z
460
+  #define MSG_DELTA_CALIBRATE_Z               "Calibrate Z"
461
+#endif
462
+#ifndef MSG_DELTA_CALIBRATE_CENTER
463
+  #define MSG_DELTA_CALIBRATE_CENTER          "Calibrate Center"
449
 #endif
464
 #endif
450
-
451
-#if ENABLED(DELTA_CALIBRATION_MENU)
452
-  #ifndef MSG_DELTA_CALIBRATE
453
-  #define MSG_DELTA_CALIBRATE             "Delta Calibration"
454
-  #endif
455
-  #ifndef MSG_DELTA_CALIBRATE_X
456
-  #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
457
-  #endif
458
-  #ifndef MSG_DELTA_CALIBRATE_Y
459
-  #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
460
-  #endif
461
-  #ifndef MSG_DELTA_CALIBRATE_Z
462
-  #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
463
-  #endif
464
-  #ifndef MSG_DELTA_CALIBRATE_CENTER
465
-  #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
466
-  #endif
467
-#endif // DELTA_CALIBRATION_MENU
468
 
465
 
469
 #endif // LANGUAGE_EN_H
466
 #endif // LANGUAGE_EN_H

+ 5
- 5
Marlin/language_es.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutos"
125
 #define MSG_END_MINUTE                      "minutos"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Calibracion Delta"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibrar X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrar Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrar Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrar Centro"
128
+  #define MSG_DELTA_CALIBRATE               "Calibracion Delta"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibrar X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrar Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrar Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrar Centro"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_ES_H
135
 #endif // LANGUAGE_ES_H

+ 5
- 5
Marlin/language_eu.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutes"
125
 #define MSG_END_MINUTE                      "minutes"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_EU_H
135
 #endif // LANGUAGE_EU_H

+ 5
- 5
Marlin/language_fi.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutes"
125
 #define MSG_END_MINUTE                      "minutes"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Kalibrointi"
129
-    #define MSG_DELTA_CALIBRATE_X           "Kalibroi X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Kalibroi Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Kalibroi Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Kalibroi Center"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Kalibrointi"
129
+  #define MSG_DELTA_CALIBRATE_X             "Kalibroi X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Kalibroi Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Kalibroi Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Kalibroi Center"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_FI_H
135
 #endif // LANGUAGE_FI_H

+ 5
- 5
Marlin/language_fr.h Переглянути файл

127
 #define MSG_END_MINUTE                      "minutes"
127
 #define MSG_END_MINUTE                      "minutes"
128
 
128
 
129
 #if ENABLED(DELTA_CALIBRATION_MENU)
129
 #if ENABLED(DELTA_CALIBRATION_MENU)
130
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
131
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
132
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
133
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
134
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
130
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
131
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
132
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
133
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
134
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
135
 #endif // DELTA_CALIBRATION_MENU
135
 #endif // DELTA_CALIBRATION_MENU
136
 
136
 
137
 #endif // LANGUAGE_FR_H
137
 #endif // LANGUAGE_FR_H

+ 5
- 5
Marlin/language_it.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minuti"
125
 #define MSG_END_MINUTE                      "minuti"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Calibraz. Delta"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibra X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibra Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibra Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibra Center"
128
+  #define MSG_DELTA_CALIBRATE               "Calibraz. Delta"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibra X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibra Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibra Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibra Center"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_IT_H
135
 #endif // LANGUAGE_IT_H

+ 5
- 5
Marlin/language_kana.h Переглянути файл

136
 */
136
 */
137
 
137
 
138
 #if ENABLED(DELTA_CALIBRATION_MENU)
138
 #if ENABLED(DELTA_CALIBRATION_MENU)
139
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
140
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
141
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
142
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
143
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
139
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
140
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
141
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
142
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
143
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
144
 #endif // DELTA_CALIBRATION_MENU
144
 #endif // DELTA_CALIBRATION_MENU
145
 
145
 
146
 #endif // LANGUAGE_KANA_H
146
 #endif // LANGUAGE_KANA_H

+ 5
- 5
Marlin/language_kana_utf8.h Переглянути файл

131
 #define MSG_END_MINUTE                      "minutes"
131
 #define MSG_END_MINUTE                      "minutes"
132
 
132
 
133
 #if ENABLED(DELTA_CALIBRATION_MENU)
133
 #if ENABLED(DELTA_CALIBRATION_MENU)
134
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
135
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
136
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
137
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
138
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
134
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
135
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
136
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
137
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
138
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
139
 #endif // DELTA_CALIBRATION_MENU
139
 #endif // DELTA_CALIBRATION_MENU
140
 
140
 
141
 #endif // LANGUAGE_KANA_UTF_H
141
 #endif // LANGUAGE_KANA_UTF_H

+ 5
- 5
Marlin/language_nl.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutes"
125
 #define MSG_END_MINUTE                      "minutes"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Calibratie"
129
-    #define MSG_DELTA_CALIBRATE_X           "Kalibreer X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Kalibreer Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Kalibreer Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Kalibreer Midden"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Calibratie"
129
+  #define MSG_DELTA_CALIBRATE_X             "Kalibreer X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Kalibreer Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Kalibreer Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Kalibreer Midden"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_NL_H
135
 #endif // LANGUAGE_NL_H

+ 5
- 5
Marlin/language_pl.h Переглянути файл

126
 
126
 
127
 
127
 
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
129
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
130
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
131
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
132
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
133
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
129
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
130
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
131
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
132
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
133
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
134
 #endif // DELTA_CALIBRATION_MENU
134
 #endif // DELTA_CALIBRATION_MENU
135
 
135
 
136
 #endif // LANGUAGE_PL_H
136
 #endif // LANGUAGE_PL_H

+ 6
- 6
Marlin/language_pt-br.h Переглянути файл

13
 //#define SIMULATE_ROMFONT
13
 //#define SIMULATE_ROMFONT
14
 #define DISPLAY_CHARSET_ISO10646_1
14
 #define DISPLAY_CHARSET_ISO10646_1
15
 
15
 
16
-#define WELCOME_MSG							MACHINE_NAME " pronto."
16
+#define WELCOME_MSG                         MACHINE_NAME " pronto."
17
 #define MSG_SD_INSERTED                     "Cartao inserido"
17
 #define MSG_SD_INSERTED                     "Cartao inserido"
18
 #define MSG_SD_REMOVED                      "Cartao removido"
18
 #define MSG_SD_REMOVED                      "Cartao removido"
19
 #define MSG_MAIN                            " Menu principal"
19
 #define MSG_MAIN                            " Menu principal"
125
 #define MSG_END_MINUTE                      "minutos"
125
 #define MSG_END_MINUTE                      "minutos"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Calibration"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibrate X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrate Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrate Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrate Center"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_PT_BR_H
135
 #endif // LANGUAGE_PT_BR_H

+ 5
- 5
Marlin/language_pt.h Переглянути файл

125
 #define MSG_END_MINUTE                      "minutos"
125
 #define MSG_END_MINUTE                      "minutos"
126
 
126
 
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
127
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
-    #define MSG_DELTA_CALIBRATE             "Delta Calibracao"
129
-    #define MSG_DELTA_CALIBRATE_X           "Calibrar X"
130
-    #define MSG_DELTA_CALIBRATE_Y           "Calibrar Y"
131
-    #define MSG_DELTA_CALIBRATE_Z           "Calibrar Z"
132
-    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrar Centro"
128
+  #define MSG_DELTA_CALIBRATE               "Delta Calibracao"
129
+  #define MSG_DELTA_CALIBRATE_X             "Calibrar X"
130
+  #define MSG_DELTA_CALIBRATE_Y             "Calibrar Y"
131
+  #define MSG_DELTA_CALIBRATE_Z             "Calibrar Z"
132
+  #define MSG_DELTA_CALIBRATE_CENTER        "Calibrar Centro"
133
 #endif // DELTA_CALIBRATION_MENU
133
 #endif // DELTA_CALIBRATION_MENU
134
 
134
 
135
 #endif // LANGUAGE_PT_H
135
 #endif // LANGUAGE_PT_H

+ 5
- 5
Marlin/language_ru.h Переглянути файл

126
 #define MSG_END_MINUTE                      "минут"
126
 #define MSG_END_MINUTE                      "минут"
127
 
127
 
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
128
 #if ENABLED(DELTA_CALIBRATION_MENU)
129
-    #define MSG_DELTA_CALIBRATE             "Калибровка Delta"
130
-    #define MSG_DELTA_CALIBRATE_X           "Калибровать X"
131
-    #define MSG_DELTA_CALIBRATE_Y           "Калибровать Y"
132
-    #define MSG_DELTA_CALIBRATE_Z           "Калибровать Z"
133
-    #define MSG_DELTA_CALIBRATE_CENTER      "Калибровать Center"
129
+  #define MSG_DELTA_CALIBRATE               "Калибровка Delta"
130
+  #define MSG_DELTA_CALIBRATE_X             "Калибровать X"
131
+  #define MSG_DELTA_CALIBRATE_Y             "Калибровать Y"
132
+  #define MSG_DELTA_CALIBRATE_Z             "Калибровать Z"
133
+  #define MSG_DELTA_CALIBRATE_CENTER        "Калибровать Center"
134
 #endif // DELTA_CALIBRATION_MENU
134
 #endif // DELTA_CALIBRATION_MENU
135
 
135
 
136
 #endif // LANGUAGE_RU_H
136
 #endif // LANGUAGE_RU_H

+ 1
- 1
Marlin/mesh_bed_leveling.cpp Переглянути файл

5
   mesh_bed_leveling mbl;
5
   mesh_bed_leveling mbl;
6
 
6
 
7
   mesh_bed_leveling::mesh_bed_leveling() { reset(); }
7
   mesh_bed_leveling::mesh_bed_leveling() { reset(); }
8
-      
8
+
9
   void mesh_bed_leveling::reset() {
9
   void mesh_bed_leveling::reset() {
10
     active = 0;
10
     active = 0;
11
     for (int y = 0; y < MESH_NUM_Y_POINTS; y++)
11
     for (int y = 0; y < MESH_NUM_Y_POINTS; y++)

+ 13
- 13
Marlin/mesh_bed_leveling.h Переглянути файл

9
   public:
9
   public:
10
     uint8_t active;
10
     uint8_t active;
11
     float z_values[MESH_NUM_Y_POINTS][MESH_NUM_X_POINTS];
11
     float z_values[MESH_NUM_Y_POINTS][MESH_NUM_X_POINTS];
12
-    
12
+
13
     mesh_bed_leveling();
13
     mesh_bed_leveling();
14
-    
14
+
15
     void reset();
15
     void reset();
16
-    
16
+
17
     float get_x(int i) { return MESH_MIN_X + MESH_X_DIST * i; }
17
     float get_x(int i) { return MESH_MIN_X + MESH_X_DIST * i; }
18
     float get_y(int i) { return MESH_MIN_Y + MESH_Y_DIST * i; }
18
     float get_y(int i) { return MESH_MIN_Y + MESH_Y_DIST * i; }
19
     void set_z(int ix, int iy, float z) { z_values[iy][ix] = z; }
19
     void set_z(int ix, int iy, float z) { z_values[iy][ix] = z; }
20
-    
20
+
21
     int select_x_index(float x) {
21
     int select_x_index(float x) {
22
       int i = 1;
22
       int i = 1;
23
-      while (x > get_x(i) && i < MESH_NUM_X_POINTS-1) i++;
23
+      while (x > get_x(i) && i < MESH_NUM_X_POINTS - 1) i++;
24
       return i - 1;
24
       return i - 1;
25
     }
25
     }
26
-    
26
+
27
     int select_y_index(float y) {
27
     int select_y_index(float y) {
28
       int i = 1;
28
       int i = 1;
29
       while (y > get_y(i) && i < MESH_NUM_Y_POINTS - 1) i++;
29
       while (y > get_y(i) && i < MESH_NUM_Y_POINTS - 1) i++;
30
       return i - 1;
30
       return i - 1;
31
     }
31
     }
32
-    
32
+
33
     float calc_z0(float a0, float a1, float z1, float a2, float z2) {
33
     float calc_z0(float a0, float a1, float z1, float a2, float z2) {
34
-      float delta_z = (z2 - z1)/(a2 - a1);
34
+      float delta_z = (z2 - z1) / (a2 - a1);
35
       float delta_a = a0 - a1;
35
       float delta_a = a0 - a1;
36
       return z1 + delta_a * delta_z;
36
       return z1 + delta_a * delta_z;
37
     }
37
     }
38
-    
38
+
39
     float get_z(float x0, float y0) {
39
     float get_z(float x0, float y0) {
40
       int x_index = select_x_index(x0);
40
       int x_index = select_x_index(x0);
41
       int y_index = select_y_index(y0);
41
       int y_index = select_y_index(y0);
42
       float z1 = calc_z0(x0,
42
       float z1 = calc_z0(x0,
43
                          get_x(x_index), z_values[y_index][x_index],
43
                          get_x(x_index), z_values[y_index][x_index],
44
-                         get_x(x_index+1), z_values[y_index][x_index+1]);
44
+                         get_x(x_index + 1), z_values[y_index][x_index + 1]);
45
       float z2 = calc_z0(x0,
45
       float z2 = calc_z0(x0,
46
-                         get_x(x_index), z_values[y_index+1][x_index],
47
-                         get_x(x_index+1), z_values[y_index+1][x_index+1]);
46
+                         get_x(x_index), z_values[y_index + 1][x_index],
47
+                         get_x(x_index + 1), z_values[y_index + 1][x_index + 1]);
48
       float z0 = calc_z0(y0,
48
       float z0 = calc_z0(y0,
49
                          get_y(y_index), z1,
49
                          get_y(y_index), z1,
50
-                         get_y(y_index+1), z2);
50
+                         get_y(y_index + 1), z2);
51
       return z0;
51
       return z0;
52
     }
52
     }
53
   };
53
   };

+ 9
- 9
Marlin/pins.h Переглянути файл

207
 #endif
207
 #endif
208
 
208
 
209
 #if ENABLED(DISABLE_XMIN_ENDSTOP)
209
 #if ENABLED(DISABLE_XMIN_ENDSTOP)
210
-  #undef X_MIN_PIN 
210
+  #undef X_MIN_PIN
211
   #define X_MIN_PIN          -1
211
   #define X_MIN_PIN          -1
212
 #endif
212
 #endif
213
 
213
 
226
 #endif
226
 #endif
227
 
227
 
228
 #if ENABLED(DISABLE_ZMIN_ENDSTOP)
228
 #if ENABLED(DISABLE_ZMIN_ENDSTOP)
229
-  #undef Z_MIN_PIN 
229
+  #undef Z_MIN_PIN
230
   #define Z_MIN_PIN          -1
230
   #define Z_MIN_PIN          -1
231
 #endif
231
 #endif
232
 
232
 
243
 #endif
243
 #endif
244
 
244
 
245
 #define SENSITIVE_PINS { 0, 1, \
245
 #define SENSITIVE_PINS { 0, 1, \
246
-                        X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
247
-                        Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
248
-                        Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
249
-                        PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
250
-                        _E0_PINS _E1_PINS _E2_PINS _E3_PINS \
251
-                        analogInputToDigitalPin(TEMP_BED_PIN) \
252
-                       }
246
+    X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \
247
+    Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \
248
+    Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \
249
+    PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, \
250
+    _E0_PINS _E1_PINS _E2_PINS _E3_PINS \
251
+    analogInputToDigitalPin(TEMP_BED_PIN) \
252
+  }
253
 
253
 
254
 #define HAS_DIGIPOTSS (DIGIPOTSS_PIN >= 0)
254
 #define HAS_DIGIPOTSS (DIGIPOTSS_PIN >= 0)
255
 
255
 

+ 1
- 1
Marlin/pins_5DPRINT.h Переглянути файл

53
 #define SDSS               20
53
 #define SDSS               20
54
 
54
 
55
 #if DISABLED(SDSUPPORT)
55
 #if DISABLED(SDSUPPORT)
56
-// these pins are defined in the SD library if building with SD support
56
+  // these pins are defined in the SD library if building with SD support
57
   #define SCK_PIN           9
57
   #define SCK_PIN           9
58
   #define MISO_PIN         11
58
   #define MISO_PIN         11
59
   #define MOSI_PIN         10
59
   #define MOSI_PIN         10

+ 17
- 17
Marlin/pins_AZTEEG_X3_PRO.h Переглянути файл

15
 #define EXTRUDER_3_AUTO_FAN_PIN   5
15
 #define EXTRUDER_3_AUTO_FAN_PIN   5
16
 //
16
 //
17
 //This section is to swap the MIN and MAX pins because the X3 Pro comes with only
17
 //This section is to swap the MIN and MAX pins because the X3 Pro comes with only
18
-//MIN endstops soldered onto the board. Delta code wants the homing endstops to be 
18
+//MIN endstops soldered onto the board. Delta code wants the homing endstops to be
19
 //the MAX so I swapped them here.
19
 //the MAX so I swapped them here.
20
 //
20
 //
21
- #if ENABLED(DELTA)
21
+#if ENABLED(DELTA)
22
   #undef X_MIN_PIN
22
   #undef X_MIN_PIN
23
   #undef X_MAX_PIN
23
   #undef X_MAX_PIN
24
   #undef Y_MIN_PIN
24
   #undef Y_MIN_PIN
32
   #define Y_MAX_PIN        14
32
   #define Y_MAX_PIN        14
33
   #define Z_MIN_PIN        19
33
   #define Z_MIN_PIN        19
34
   #define Z_MAX_PIN        18
34
   #define Z_MAX_PIN        18
35
- #endif
35
+#endif
36
 //
36
 //
37
- #if ENABLED(Z_MIN_PROBE_ENDSTOP)
38
-//#undef Z_MIN_PIN
39
-//#define Z_MIN_PIN        15
37
+#if ENABLED(Z_MIN_PROBE_ENDSTOP)
38
+  //#undef Z_MIN_PIN
39
+  //#define Z_MIN_PIN        15
40
   // Define a pin to use as the signal pin on Arduino for the Z probe endstop.
40
   // Define a pin to use as the signal pin on Arduino for the Z probe endstop.
41
   #define Z_MIN_PROBE_PIN  19
41
   #define Z_MIN_PROBE_PIN  19
42
- #endif
42
+#endif
43
 //
43
 //
44
 #define E2_STEP_PIN        23
44
 #define E2_STEP_PIN        23
45
 #define E2_DIR_PIN         25
45
 #define E2_DIR_PIN         25
74
 
74
 
75
 //
75
 //
76
 //These Servo pins are for when they are defined. Tested for usage with bed leveling
76
 //These Servo pins are for when they are defined. Tested for usage with bed leveling
77
-//on a Delta with 1 servo. Running through the Z servo endstop in code. 
77
+//on a Delta with 1 servo. Running through the Z servo endstop in code.
78
 //Physical wire attachment was done on EXT1 on the GND, 5V, and D47 pins.
78
 //Physical wire attachment was done on EXT1 on the GND, 5V, and D47 pins.
79
 //
79
 //
80
 #define SERVO0_PIN         47
80
 #define SERVO0_PIN         47
81
 
81
 
82
 //LCD Pins//
82
 //LCD Pins//
83
 
83
 
84
- #if ENABLED(VIKI2) || ENABLED(miniVIKI)
84
+#if ENABLED(VIKI2) || ENABLED(miniVIKI)
85
   #define BEEPER_PIN       33
85
   #define BEEPER_PIN       33
86
- // Pins for DOGM SPI LCD Support
86
+  // Pins for DOGM SPI LCD Support
87
   #define DOGLCD_A0        44
87
   #define DOGLCD_A0        44
88
   #define DOGLCD_CS        45
88
   #define DOGLCD_CS        45
89
   #define LCD_SCREEN_ROT_180
89
   #define LCD_SCREEN_ROT_180
90
-  
91
- //The encoder and click button
90
+
91
+  //The encoder and click button
92
   #define BTN_EN1          22
92
   #define BTN_EN1          22
93
   #define BTN_EN2           7
93
   #define BTN_EN2           7
94
   #define BTN_ENC          39  //the click switch
94
   #define BTN_ENC          39  //the click switch
95
- 
95
+
96
   #define SDSS             53
96
   #define SDSS             53
97
   #define SD_DETECT_PIN 49
97
   #define SD_DETECT_PIN 49
98
-  
98
+
99
   #define KILL_PIN         31
99
   #define KILL_PIN         31
100
- #endif
100
+#endif
101
 
101
 
102
- #if ENABLED(TEMP_STAT_LEDS)
102
+#if ENABLED(TEMP_STAT_LEDS)
103
   #define STAT_LED_RED     32
103
   #define STAT_LED_RED     32
104
   #define STAT_LED_BLUE    35
104
   #define STAT_LED_BLUE    35
105
- #endif
105
+#endif

+ 1
- 1
Marlin/pins_BRAINWAVE_PRO.h Переглянути файл

57
 #define SD_DETECT_PIN      12
57
 #define SD_DETECT_PIN      12
58
 
58
 
59
 #if DISABLED(SDSUPPORT)
59
 #if DISABLED(SDSUPPORT)
60
-// these pins are defined in the SD library if building with SD support
60
+  // these pins are defined in the SD library if building with SD support
61
   #define SCK_PIN          21
61
   #define SCK_PIN          21
62
   #define MISO_PIN         23
62
   #define MISO_PIN         23
63
   #define MOSI_PIN         22
63
   #define MOSI_PIN         22

+ 2
- 2
Marlin/pins_GEN3_PLUS.h Переглянути файл

37
 #define E0_ENABLE_PIN      13
37
 #define E0_ENABLE_PIN      13
38
 
38
 
39
 #define TEMP_0_PIN          0   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)
39
 #define TEMP_0_PIN          0   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)
40
-#define TEMP_1_PIN         -1   
40
+#define TEMP_1_PIN         -1
41
 #define TEMP_2_PIN         -1
41
 #define TEMP_2_PIN         -1
42
-#define TEMP_BED_PIN        5   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)  
42
+#define TEMP_BED_PIN        5   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)
43
 #define SDPOWER            -1
43
 #define SDPOWER            -1
44
 #define SDSS               4
44
 #define SDSS               4
45
 #define HEATER_2_PIN       -1
45
 #define HEATER_2_PIN       -1

+ 1
- 1
Marlin/pins_GEN7_CUSTOM.h Переглянути файл

3
  *
3
  *
4
  * These Pins are assigned for the modified GEN7 Board from Alfons3.
4
  * These Pins are assigned for the modified GEN7 Board from Alfons3.
5
  * Please review the pins and adjust them for your needs.
5
  * Please review the pins and adjust them for your needs.
6
- */ 
6
+ */
7
 
7
 
8
 #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
8
 #if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__)
9
   #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu.
9
   #error Oops!  Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu.

+ 20
- 20
Marlin/pins_MEGACONTROLLER.h Переглянути файл

25
 #define Y_DIR_PIN 66 // A12
25
 #define Y_DIR_PIN 66 // A12
26
 #define Y_ENABLE_PIN 64//A10
26
 #define Y_ENABLE_PIN 64//A10
27
 #define Y_MIN_PIN 38
27
 #define Y_MIN_PIN 38
28
-#define Y_MAX_PIN 41 
28
+#define Y_MAX_PIN 41
29
 
29
 
30
 #define Z_STEP_PIN 68 // A14
30
 #define Z_STEP_PIN 68 // A14
31
 #define Z_DIR_PIN 69 // A15
31
 #define Z_DIR_PIN 69 // A15
81
 #endif
81
 #endif
82
 
82
 
83
 #if ENABLED(MINIPANEL)
83
 #if ENABLED(MINIPANEL)
84
-    #define BEEPER_PIN 46
85
-    // Pins for DOGM SPI LCD Support
86
-    #define DOGLCD_A0  47
87
-    #define DOGLCD_CS  45
88
-    #define LCD_PIN_BL 44  // backlight LED on PA3
89
-    
90
-    #define KILL_PIN 12
91
-    // GLCD features
92
-    //#define LCD_CONTRAST 190
93
-    // Uncomment screen orientation
94
-      //#define LCD_SCREEN_ROT_90
95
-      //#define LCD_SCREEN_ROT_180
96
-      //#define LCD_SCREEN_ROT_270
97
-    //The encoder and click button
98
-    #define BTN_EN1 48
99
-    #define BTN_EN2 11
100
-    #define BTN_ENC 10  //the click switch
101
-    //not connected to a pin
102
-    #define SD_DETECT_PIN 49
84
+  #define BEEPER_PIN 46
85
+  // Pins for DOGM SPI LCD Support
86
+  #define DOGLCD_A0  47
87
+  #define DOGLCD_CS  45
88
+  #define LCD_PIN_BL 44  // backlight LED on PA3
89
+
90
+  #define KILL_PIN 12
91
+  // GLCD features
92
+  //#define LCD_CONTRAST 190
93
+  // Uncomment screen orientation
94
+  //#define LCD_SCREEN_ROT_90
95
+  //#define LCD_SCREEN_ROT_180
96
+  //#define LCD_SCREEN_ROT_270
97
+  //The encoder and click button
98
+  #define BTN_EN1 48
99
+  #define BTN_EN2 11
100
+  #define BTN_ENC 10  //the click switch
101
+  //not connected to a pin
102
+  #define SD_DETECT_PIN 49
103
 #endif //Minipanel
103
 #endif //Minipanel
104
 
104
 

+ 6
- 6
Marlin/pins_MEGATRONICS_3.h Переглянути файл

23
 #define X_DIR_PIN          57
23
 #define X_DIR_PIN          57
24
 #define X_ENABLE_PIN       59
24
 #define X_ENABLE_PIN       59
25
 #define X_MIN_PIN          37
25
 #define X_MIN_PIN          37
26
-#define X_MAX_PIN          40 // put to -1 to disable  
26
+#define X_MAX_PIN          40 // put to -1 to disable
27
 
27
 
28
-#define Y_STEP_PIN         5 
29
-#define Y_DIR_PIN          17 
28
+#define Y_STEP_PIN         5
29
+#define Y_DIR_PIN          17
30
 #define Y_ENABLE_PIN       4
30
 #define Y_ENABLE_PIN       4
31
 #define Y_MIN_PIN          41
31
 #define Y_MIN_PIN          41
32
 #define Y_MAX_PIN          38 // put to -1 to disable
32
 #define Y_MAX_PIN          38 // put to -1 to disable
33
 
33
 
34
-#define Z_STEP_PIN         16 
34
+#define Z_STEP_PIN         16
35
 #define Z_DIR_PIN          11
35
 #define Z_DIR_PIN          11
36
-#define Z_ENABLE_PIN       3 
36
+#define Z_ENABLE_PIN       3
37
 #define Z_MIN_PIN          18
37
 #define Z_MIN_PIN          18
38
 #define Z_MAX_PIN          19 // put to -1 to disable
38
 #define Z_MAX_PIN          19 // put to -1 to disable
39
 
39
 
91
 #define BLEN_B 1
91
 #define BLEN_B 1
92
 #define BLEN_A 0
92
 #define BLEN_A 0
93
 
93
 
94
-#define SD_DETECT_PIN -1	// Megatronics doesn't use this
94
+#define SD_DETECT_PIN -1 // Megatronics doesn't use this

+ 1
- 1
Marlin/pins_MINIRAMBO.h Переглянути файл

19
 #undef E0_MS2_PIN
19
 #undef E0_MS2_PIN
20
 #undef E1_MS1_PIN
20
 #undef E1_MS1_PIN
21
 #undef E1_MS2_PIN
21
 #undef E1_MS2_PIN
22
- 
22
+
23
 #define X_STEP_PIN          37
23
 #define X_STEP_PIN          37
24
 #define X_DIR_PIN           48
24
 #define X_DIR_PIN           48
25
 #define X_MIN_PIN           12
25
 #define X_MIN_PIN           12

+ 19
- 19
Marlin/pins_PRINTRBOARD.h Переглянути файл

88
     #define SDSS   40 //use SD card on Panelolu2 (Teensyduino pin mapping)
88
     #define SDSS   40 //use SD card on Panelolu2 (Teensyduino pin mapping)
89
   #endif // LCD_I2C_PANELOLU2
89
   #endif // LCD_I2C_PANELOLU2
90
   //not connected to a pin
90
   //not connected to a pin
91
-  #define SD_DETECT_PIN -1    
91
+  #define SD_DETECT_PIN -1
92
 #endif // ULTRA_LCD && NEWPANEL
92
 #endif // ULTRA_LCD && NEWPANEL
93
 
93
 
94
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
94
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
95
- #define BEEPER_PIN 32 //FastIO
96
- // Pins for DOGM SPI LCD Support
97
- #define DOGLCD_A0  42 //Non-FastIO
98
- #define DOGLCD_CS  43 //Non-FastIO
99
- #define LCD_SCREEN_ROT_180
100
- 
101
- //The encoder and click button (FastIO Pins)
102
- #define BTN_EN1 26 
103
- #define BTN_EN2 27
104
- #define BTN_ENC 47  //the click switch
105
-
106
- #define SDSS 45
107
- #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test) 
108
-
109
- #if ENABLED(TEMP_STAT_LEDS)
110
-  #define STAT_LED_RED      12 //Non-FastIO
111
-  #define STAT_LED_BLUE     10 //Non-FastIO
112
- #endif  
95
+  #define BEEPER_PIN 32 //FastIO
96
+  // Pins for DOGM SPI LCD Support
97
+  #define DOGLCD_A0  42 //Non-FastIO
98
+  #define DOGLCD_CS  43 //Non-FastIO
99
+  #define LCD_SCREEN_ROT_180
100
+
101
+  //The encoder and click button (FastIO Pins)
102
+  #define BTN_EN1 26
103
+  #define BTN_EN2 27
104
+  #define BTN_ENC 47  //the click switch
105
+
106
+  #define SDSS 45
107
+  #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test)
108
+
109
+  #if ENABLED(TEMP_STAT_LEDS)
110
+    #define STAT_LED_RED      12 //Non-FastIO
111
+    #define STAT_LED_BLUE     10 //Non-FastIO
112
+  #endif
113
 #endif
113
 #endif

+ 17
- 17
Marlin/pins_RAMBO.h Переглянути файл

28
 #undef E0_MS2_PIN
28
 #undef E0_MS2_PIN
29
 #undef E1_MS1_PIN
29
 #undef E1_MS1_PIN
30
 #undef E1_MS2_PIN
30
 #undef E1_MS2_PIN
31
- 
31
+
32
 #define X_STEP_PIN 37
32
 #define X_STEP_PIN 37
33
 #define X_DIR_PIN 48
33
 #define X_DIR_PIN 48
34
 #define X_MIN_PIN 12
34
 #define X_MIN_PIN 12
89
 #define SDPOWER            -1
89
 #define SDPOWER            -1
90
 #define SDSS               53
90
 #define SDSS               53
91
 #define LED_PIN            13
91
 #define LED_PIN            13
92
-#define FAN_PIN            8  
92
+#define FAN_PIN            8
93
 
93
 
94
 /**********************************************************
94
 /**********************************************************
95
   Fan Pins
95
   Fan Pins
161
 #endif // ULTRA_LCD
161
 #endif // ULTRA_LCD
162
 
162
 
163
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
163
 #if ENABLED(VIKI2) || ENABLED(miniVIKI)
164
- #define BEEPER_PIN 44
165
- // Pins for DOGM SPI LCD Support
166
- #define DOGLCD_A0  70 
167
- #define DOGLCD_CS  71 
168
- #define LCD_SCREEN_ROT_180
169
-  
170
- //The encoder and click button 
171
- #define BTN_EN1 85 
172
- #define BTN_EN2 84
173
- #define BTN_ENC 83  //the click switch
174
-
175
- #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board   
164
+  #define BEEPER_PIN 44
165
+  // Pins for DOGM SPI LCD Support
166
+  #define DOGLCD_A0  70
167
+  #define DOGLCD_CS  71
168
+  #define LCD_SCREEN_ROT_180
169
+
170
+  //The encoder and click button
171
+  #define BTN_EN1 85
172
+  #define BTN_EN2 84
173
+  #define BTN_ENC 83  //the click switch
174
+
175
+  #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board
176
 
176
 
177
   #if ENABLED(TEMP_STAT_LEDS)
177
   #if ENABLED(TEMP_STAT_LEDS)
178
-   #define STAT_LED_RED      22
179
-   #define STAT_LED_BLUE     32 
178
+    #define STAT_LED_RED      22
179
+    #define STAT_LED_BLUE     32
180
   #endif
180
   #endif
181
 #endif // VIKI2/miniVIKI
181
 #endif // VIKI2/miniVIKI
182
 
182
 
183
 #if ENABLED(FILAMENT_SENSOR)
183
 #if ENABLED(FILAMENT_SENSOR)
184
-  //Filip added pin for Filament sensor analog input 
184
+  //Filip added pin for Filament sensor analog input
185
   #define FILWIDTH_PIN        3
185
   #define FILWIDTH_PIN        3
186
 #endif
186
 #endif

+ 20
- 20
Marlin/pins_RAMPS_13.h Переглянути файл

170
       #define DOGLCD_A0 27
170
       #define DOGLCD_A0 27
171
       #define LCD_PIN_BL 33
171
       #define LCD_PIN_BL 33
172
     #elif ENABLED(MINIPANEL)
172
     #elif ENABLED(MINIPANEL)
173
-       #define BEEPER_PIN 42
174
-       // Pins for DOGM SPI LCD Support
175
-       #define DOGLCD_A0  44
176
-       #define DOGLCD_CS  66
177
-       #define LCD_PIN_BL	65	// backlight LED on A11/D65
178
-       #define SDSS   53
179
-       
180
-       #define KILL_PIN 64
181
-       // GLCD features
182
-       //#define LCD_CONTRAST 190
183
-       // Uncomment screen orientation
184
-         //#define LCD_SCREEN_ROT_90
185
-         //#define LCD_SCREEN_ROT_180
186
-         //#define LCD_SCREEN_ROT_270
187
-       //The encoder and click button
188
-       #define BTN_EN1 40
189
-       #define BTN_EN2 63
190
-       #define BTN_ENC 59  //the click switch
191
-       //not connected to a pin
192
-       #define SD_DETECT_PIN 49
173
+      #define BEEPER_PIN 42
174
+      // Pins for DOGM SPI LCD Support
175
+      #define DOGLCD_A0  44
176
+      #define DOGLCD_CS  66
177
+      #define LCD_PIN_BL 65 // backlight LED on A11/D65
178
+      #define SDSS   53
179
+
180
+      #define KILL_PIN 64
181
+      // GLCD features
182
+      //#define LCD_CONTRAST 190
183
+      // Uncomment screen orientation
184
+      //#define LCD_SCREEN_ROT_90
185
+      //#define LCD_SCREEN_ROT_180
186
+      //#define LCD_SCREEN_ROT_270
187
+      //The encoder and click button
188
+      #define BTN_EN1 40
189
+      #define BTN_EN2 63
190
+      #define BTN_ENC 59  //the click switch
191
+      //not connected to a pin
192
+      #define SD_DETECT_PIN 49
193
 
193
 
194
     #else
194
     #else
195
 
195
 

+ 4
- 4
Marlin/pins_SANGUINOLOLU_11.h Переглянути файл

95
         #define LCD_PINS_D4     17 //SCK (CLK) clock
95
         #define LCD_PINS_D4     17 //SCK (CLK) clock
96
         #define BEEPER_PIN      27 // Pin 27 is taken by LED_PIN, but Melzi LED does nothing with Marlin so this can be used for BEEPER_PIN. You can use this pin with M42 instead of BEEPER_PIN.
96
         #define BEEPER_PIN      27 // Pin 27 is taken by LED_PIN, but Melzi LED does nothing with Marlin so this can be used for BEEPER_PIN. You can use this pin with M42 instead of BEEPER_PIN.
97
       #else         // Sanguinololu 1.3
97
       #else         // Sanguinololu 1.3
98
-        #define LCD_PINS_RS      4 
99
-        #define LCD_PINS_ENABLE 17 
100
-        #define LCD_PINS_D4     30 
98
+        #define LCD_PINS_RS      4
99
+        #define LCD_PINS_ENABLE 17
100
+        #define LCD_PINS_D4     30
101
         #define LCD_PINS_D5     29
101
         #define LCD_PINS_D5     29
102
         #define LCD_PINS_D6     28
102
         #define LCD_PINS_D6     28
103
         #define LCD_PINS_D7     27
103
         #define LCD_PINS_D7     27
110
       #define LCD_CONTRAST       1
110
       #define LCD_CONTRAST       1
111
 
111
 
112
     #endif
112
     #endif
113
-  
113
+
114
     // Uncomment screen orientation
114
     // Uncomment screen orientation
115
     #define LCD_SCREEN_ROT_0
115
     #define LCD_SCREEN_ROT_0
116
     //#define LCD_SCREEN_ROT_90
116
     //#define LCD_SCREEN_ROT_90

+ 1
- 1
Marlin/pins_SAV_MKI.h Переглянути файл

46
 #define TEMP_2_PIN         -1
46
 #define TEMP_2_PIN         -1
47
 
47
 
48
 #if DISABLED(SDSUPPORT)
48
 #if DISABLED(SDSUPPORT)
49
-   // these pins are defined in the SD library if building with SD support
49
+  // these pins are defined in the SD library if building with SD support
50
   #define SCK_PIN          9
50
   #define SCK_PIN          9
51
   #define MISO_PIN         11
51
   #define MISO_PIN         11
52
   #define MOSI_PIN         10
52
   #define MOSI_PIN         10

+ 19
- 19
Marlin/pins_TEENSY2.h Переглянути файл

11
  *
11
  *
12
  *                               USB
12
  *                               USB
13
  *           GND       GND |-----#####-----| +5V              ATX +5SB
13
  *           GND       GND |-----#####-----| +5V              ATX +5SB
14
- *     ATX PS_ON    PWM 27 |b7   #####   b6| 26    PWM*       Stepper Enable 
15
- *                  PWM  0 |d0           b5| 25    PWM*        
16
- *                  PWM  1 |d1           b4| 24    PWM        
14
+ *     ATX PS_ON    PWM 27 |b7   #####   b6| 26    PWM*       Stepper Enable
15
+ *                  PWM  0 |d0           b5| 25    PWM*
16
+ *                  PWM  1 |d1           b4| 24    PWM
17
  *         X_MIN         2 |d2           b3| 23               MISO_PIN
17
  *         X_MIN         2 |d2           b3| 23               MISO_PIN
18
  *         Y_MIN         3 |d3           b2| 22               MOSI_PIN
18
  *         Y_MIN         3 |d3           b2| 22               MOSI_PIN
19
- *         Z_MIN         4 |d4  * *      b1| 21               SCK_PIN       
20
- *                       5 |d5  e e      b0| 20               SDSS              
21
- *                LED    6 |d6  5 4      e7| 19               
22
- *                       7 |d7           e6| 18               
23
- *       LCD  RS         8 |e0             | GND              
24
- *       LCD  EN         9 |e1   a4 a0    R| AREF             
25
- *       LCD  D4        10 |c0   a5 a1   f0| 38 A0            ENC_1           
19
+ *         Z_MIN         4 |d4  * *      b1| 21               SCK_PIN
20
+ *                       5 |d5  e e      b0| 20               SDSS
21
+ *                LED    6 |d6  5 4      e7| 19
22
+ *                       7 |d7           e6| 18
23
+ *       LCD  RS         8 |e0             | GND
24
+ *       LCD  EN         9 |e1   a4 a0    R| AREF
25
+ *       LCD  D4        10 |c0   a5 a1   f0| 38 A0            ENC_1
26
  *       LCD  D5        11 |c1   a6 a2   f1| 39 A1            ENC_2
26
  *       LCD  D5        11 |c1   a6 a2   f1| 39 A1            ENC_2
27
  *       LCD  D6        12 |c2   a7 a3   f2| 40 A2            ENC_CLK
27
  *       LCD  D6        12 |c2   a7 a3   f2| 40 A2            ENC_CLK
28
- *       LCD  D6        13 |c3           f3| 41 A3            
29
- *      Bed Heat    PWM 14 |c4   V G R   f4| 42 A4            
30
- * Extruder Heat    PWM 15 |c5   c n S   f5| 43 A5            
28
+ *       LCD  D6        13 |c3           f3| 41 A3
29
+ *      Bed Heat    PWM 14 |c4   V G R   f4| 42 A4
30
+ * Extruder Heat    PWM 15 |c5   c n S   f5| 43 A5
31
  *           Fan    PWM 16 |c6   c d T   f6| 44 A6            Bed TC
31
  *           Fan    PWM 16 |c6   c d T   f6| 44 A6            Bed TC
32
- *                      17 |c7   * * *   f7| 45 A7            Extruder TC * 4.7k * +5        
33
- *                         -----------------                  
32
+ *                      17 |c7   * * *   f7| 45 A7            Extruder TC * 4.7k * +5
33
+ *                         -----------------
34
  *
34
  *
35
  *      Interior E4: 36, INT4
35
  *      Interior E4: 36, INT4
36
  *      Interior E5: 37, INT5
36
  *      Interior E5: 37, INT5
37
  *      Interior PA0-7: 28-35  -- Printrboard and Teensylu use these pins for step & direction:
37
  *      Interior PA0-7: 28-35  -- Printrboard and Teensylu use these pins for step & direction:
38
  *             T++ PA Signal  Marlin
38
  *             T++ PA Signal  Marlin
39
- *    
39
+ *
40
  *       Z STEP  32 a4  a0 28 X STEP
40
  *       Z STEP  32 a4  a0 28 X STEP
41
  *       Z DIR   33 a5  a1 29 X DIR
41
  *       Z DIR   33 a5  a1 29 X DIR
42
  *       E STEP  34 a6  a2 30 Y STEP
42
  *       E STEP  34 a6  a2 30 Y STEP
56
 
56
 
57
 #define X_STEP_PIN         28 //  0 Marlin
57
 #define X_STEP_PIN         28 //  0 Marlin
58
 #define X_DIR_PIN          29 //  1 Marlin
58
 #define X_DIR_PIN          29 //  1 Marlin
59
-#define X_ENABLE_PIN       26 
59
+#define X_ENABLE_PIN       26
60
 
60
 
61
 #define Y_STEP_PIN         30 //  2 Marlin
61
 #define Y_STEP_PIN         30 //  2 Marlin
62
 #define Y_DIR_PIN          31 //  3
62
 #define Y_DIR_PIN          31 //  3
86
 #define TEMP_2_PIN         -1
86
 #define TEMP_2_PIN         -1
87
 
87
 
88
 #define SDPOWER            -1
88
 #define SDPOWER            -1
89
-#define SD_DETECT_PIN      -1   
89
+#define SD_DETECT_PIN      -1
90
 #define SDSS               20 // 8
90
 #define SDSS               20 // 8
91
 #define LED_PIN             6
91
 #define LED_PIN             6
92
 #define PS_ON_PIN          27
92
 #define PS_ON_PIN          27
94
 #define ALARM_PIN          -1
94
 #define ALARM_PIN          -1
95
 
95
 
96
 #if DISABLED(SDSUPPORT)
96
 #if DISABLED(SDSUPPORT)
97
-// these pins are defined in the SD library if building with SD support
97
+  // these pins are defined in the SD library if building with SD support
98
   #define SCK_PIN         21 // 9
98
   #define SCK_PIN         21 // 9
99
   #define MISO_PIN        23 // 11
99
   #define MISO_PIN        23 // 11
100
   #define MOSI_PIN        22 // 10
100
   #define MOSI_PIN        22 // 10

+ 2
- 2
Marlin/pins_TEENSYLU.h Переглянути файл

61
 #define ALARM_PIN          -1
61
 #define ALARM_PIN          -1
62
 
62
 
63
 #if DISABLED(SDSUPPORT)
63
 #if DISABLED(SDSUPPORT)
64
-// these pins are defined in the SD library if building with SD support
64
+  // these pins are defined in the SD library if building with SD support
65
   #define SCK_PIN           9
65
   #define SCK_PIN           9
66
   #define MISO_PIN         11
66
   #define MISO_PIN         11
67
   #define MOSI_PIN         10
67
   #define MOSI_PIN         10
78
     #define SDSS           40  //use SD card on Panelolu2 (Teensyduino pin mapping)
78
     #define SDSS           40  //use SD card on Panelolu2 (Teensyduino pin mapping)
79
   #endif // LCD_I2C_PANELOLU2
79
   #endif // LCD_I2C_PANELOLU2
80
 
80
 
81
-  #define SD_DETECT_PIN    -1    
81
+  #define SD_DETECT_PIN    -1
82
 
82
 
83
 #endif // ULTRA_LCD && NEWPANEL
83
 #endif // ULTRA_LCD && NEWPANEL
84
 
84
 

+ 41
- 43
Marlin/planner.cpp Переглянути файл

118
   // Old direction bits. Used for speed calculations
118
   // Old direction bits. Used for speed calculations
119
   static unsigned char old_direction_bits = 0;
119
   static unsigned char old_direction_bits = 0;
120
   // Segment times (in µs). Used for speed calculations
120
   // Segment times (in µs). Used for speed calculations
121
-  static long axis_segment_time[2][3] = { {MAX_FREQ_TIME+1,0,0}, {MAX_FREQ_TIME+1,0,0} };
121
+  static long axis_segment_time[2][3] = { {MAX_FREQ_TIME + 1, 0, 0}, {MAX_FREQ_TIME + 1, 0, 0} };
122
 #endif
122
 #endif
123
 
123
 
124
 #if ENABLED(FILAMENT_SENSOR)
124
 #if ENABLED(FILAMENT_SENSOR)
157
 
157
 
158
 // Calculates trapezoid parameters so that the entry- and exit-speed is compensated by the provided factors.
158
 // Calculates trapezoid parameters so that the entry- and exit-speed is compensated by the provided factors.
159
 
159
 
160
-void calculate_trapezoid_for_block(block_t *block, float entry_factor, float exit_factor) {
160
+void calculate_trapezoid_for_block(block_t* block, float entry_factor, float exit_factor) {
161
   unsigned long initial_rate = ceil(block->nominal_rate * entry_factor); // (step/min)
161
   unsigned long initial_rate = ceil(block->nominal_rate * entry_factor); // (step/min)
162
   unsigned long final_rate = ceil(block->nominal_rate * exit_factor); // (step/min)
162
   unsigned long final_rate = ceil(block->nominal_rate * exit_factor); // (step/min)
163
 
163
 
182
     plateau_steps = 0;
182
     plateau_steps = 0;
183
   }
183
   }
184
 
184
 
185
-#if ENABLED(ADVANCE)
186
-  volatile long initial_advance = block->advance * entry_factor * entry_factor;
187
-  volatile long final_advance = block->advance * exit_factor * exit_factor;
188
-#endif // ADVANCE
185
+  #if ENABLED(ADVANCE)
186
+    volatile long initial_advance = block->advance * entry_factor * entry_factor;
187
+    volatile long final_advance = block->advance * exit_factor * exit_factor;
188
+  #endif // ADVANCE
189
 
189
 
190
   // block->accelerate_until = accelerate_steps;
190
   // block->accelerate_until = accelerate_steps;
191
   // block->decelerate_after = accelerate_steps+plateau_steps;
191
   // block->decelerate_after = accelerate_steps+plateau_steps;
192
   CRITICAL_SECTION_START;  // Fill variables used by the stepper in a critical section
192
   CRITICAL_SECTION_START;  // Fill variables used by the stepper in a critical section
193
   if (!block->busy) { // Don't update variables if block is busy.
193
   if (!block->busy) { // Don't update variables if block is busy.
194
     block->accelerate_until = accelerate_steps;
194
     block->accelerate_until = accelerate_steps;
195
-    block->decelerate_after = accelerate_steps+plateau_steps;
195
+    block->decelerate_after = accelerate_steps + plateau_steps;
196
     block->initial_rate = initial_rate;
196
     block->initial_rate = initial_rate;
197
     block->final_rate = final_rate;
197
     block->final_rate = final_rate;
198
     #if ENABLED(ADVANCE)
198
     #if ENABLED(ADVANCE)
219
 
219
 
220
 
220
 
221
 // The kernel called by planner_recalculate() when scanning the plan from last to first entry.
221
 // The kernel called by planner_recalculate() when scanning the plan from last to first entry.
222
-void planner_reverse_pass_kernel(block_t *previous, block_t *current, block_t *next) {
222
+void planner_reverse_pass_kernel(block_t* previous, block_t* current, block_t* next) {
223
   if (!current) return;
223
   if (!current) return;
224
   UNUSED(previous);
224
   UNUSED(previous);
225
 
225
 
233
       // for max allowable speed if block is decelerating and nominal length is false.
233
       // for max allowable speed if block is decelerating and nominal length is false.
234
       if (!current->nominal_length_flag && current->max_entry_speed > next->entry_speed) {
234
       if (!current->nominal_length_flag && current->max_entry_speed > next->entry_speed) {
235
         current->entry_speed = min(current->max_entry_speed,
235
         current->entry_speed = min(current->max_entry_speed,
236
-          max_allowable_speed(-current->acceleration, next->entry_speed, current->millimeters));
236
+                                   max_allowable_speed(-current->acceleration, next->entry_speed, current->millimeters));
237
       }
237
       }
238
       else {
238
       else {
239
         current->entry_speed = current->max_entry_speed;
239
         current->entry_speed = current->max_entry_speed;
256
 
256
 
257
   if (BLOCK_MOD(block_buffer_head - tail + BLOCK_BUFFER_SIZE) > 3) { // moves queued
257
   if (BLOCK_MOD(block_buffer_head - tail + BLOCK_BUFFER_SIZE) > 3) { // moves queued
258
     block_index = BLOCK_MOD(block_buffer_head - 3);
258
     block_index = BLOCK_MOD(block_buffer_head - 3);
259
-    block_t *block[3] = { NULL, NULL, NULL };
259
+    block_t* block[3] = { NULL, NULL, NULL };
260
     while (block_index != tail) {
260
     while (block_index != tail) {
261
       block_index = prev_block_index(block_index);
261
       block_index = prev_block_index(block_index);
262
-      block[2]= block[1];
263
-      block[1]= block[0];
262
+      block[2] = block[1];
263
+      block[1] = block[0];
264
       block[0] = &block_buffer[block_index];
264
       block[0] = &block_buffer[block_index];
265
       planner_reverse_pass_kernel(block[0], block[1], block[2]);
265
       planner_reverse_pass_kernel(block[0], block[1], block[2]);
266
     }
266
     }
268
 }
268
 }
269
 
269
 
270
 // The kernel called by planner_recalculate() when scanning the plan from first to last entry.
270
 // The kernel called by planner_recalculate() when scanning the plan from first to last entry.
271
-void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *next) {
271
+void planner_forward_pass_kernel(block_t* previous, block_t* current, block_t* next) {
272
   if (!previous) return;
272
   if (!previous) return;
273
   UNUSED(next);
273
   UNUSED(next);
274
 
274
 
279
   if (!previous->nominal_length_flag) {
279
   if (!previous->nominal_length_flag) {
280
     if (previous->entry_speed < current->entry_speed) {
280
     if (previous->entry_speed < current->entry_speed) {
281
       double entry_speed = min(current->entry_speed,
281
       double entry_speed = min(current->entry_speed,
282
-        max_allowable_speed(-previous->acceleration, previous->entry_speed, previous->millimeters));
283
-
282
+                               max_allowable_speed(-previous->acceleration, previous->entry_speed, previous->millimeters));
284
       // Check for junction speed change
283
       // Check for junction speed change
285
       if (current->entry_speed != entry_speed) {
284
       if (current->entry_speed != entry_speed) {
286
         current->entry_speed = entry_speed;
285
         current->entry_speed = entry_speed;
294
 // implements the forward pass.
293
 // implements the forward pass.
295
 void planner_forward_pass() {
294
 void planner_forward_pass() {
296
   uint8_t block_index = block_buffer_tail;
295
   uint8_t block_index = block_buffer_tail;
297
-  block_t *block[3] = { NULL, NULL, NULL };
296
+  block_t* block[3] = { NULL, NULL, NULL };
298
 
297
 
299
   while (block_index != block_buffer_head) {
298
   while (block_index != block_buffer_head) {
300
     block[0] = block[1];
299
     block[0] = block[1];
311
 // updating the blocks.
310
 // updating the blocks.
312
 void planner_recalculate_trapezoids() {
311
 void planner_recalculate_trapezoids() {
313
   int8_t block_index = block_buffer_tail;
312
   int8_t block_index = block_buffer_tail;
314
-  block_t *current;
315
-  block_t *next = NULL;
313
+  block_t* current;
314
+  block_t* next = NULL;
316
 
315
 
317
   while (block_index != block_buffer_head) {
316
   while (block_index != block_buffer_head) {
318
     current = next;
317
     current = next;
326
         current->recalculate_flag = false; // Reset current only to ensure next trapezoid is computed
325
         current->recalculate_flag = false; // Reset current only to ensure next trapezoid is computed
327
       }
326
       }
328
     }
327
     }
329
-    block_index = next_block_index( block_index );
328
+    block_index = next_block_index(block_index);
330
   }
329
   }
331
   // Last/newest block in buffer. Exit speed is set with MINIMUM_PLANNER_SPEED. Always recalculated.
330
   // Last/newest block in buffer. Exit speed is set with MINIMUM_PLANNER_SPEED. Always recalculated.
332
   if (next) {
331
   if (next) {
362
 void plan_init() {
361
 void plan_init() {
363
   block_buffer_head = block_buffer_tail = 0;
362
   block_buffer_head = block_buffer_tail = 0;
364
   memset(position, 0, sizeof(position)); // clear position
363
   memset(position, 0, sizeof(position)); // clear position
365
-  for (int i=0; i<NUM_AXIS; i++) previous_speed[i] = 0.0;
364
+  for (int i = 0; i < NUM_AXIS; i++) previous_speed[i] = 0.0;
366
   previous_nominal_speed = 0.0;
365
   previous_nominal_speed = 0.0;
367
 }
366
 }
368
 
367
 
378
     uint8_t block_index = block_buffer_tail;
377
     uint8_t block_index = block_buffer_tail;
379
 
378
 
380
     while (block_index != block_buffer_head) {
379
     while (block_index != block_buffer_head) {
381
-      block_t *block = &block_buffer[block_index];
380
+      block_t* block = &block_buffer[block_index];
382
       if (block->steps[X_AXIS] || block->steps[Y_AXIS] || block->steps[Z_AXIS]) {
381
       if (block->steps[X_AXIS] || block->steps[Y_AXIS] || block->steps[Z_AXIS]) {
383
         float se = (float)block->steps[E_AXIS] / block->step_event_count * block->nominal_speed; // mm/sec;
382
         float se = (float)block->steps[E_AXIS] / block->step_event_count * block->nominal_speed; // mm/sec;
384
         if (se > high) high = se;
383
         if (se > high) high = se;
395
     oldt = t;
394
     oldt = t;
396
     setTargetHotend0(t);
395
     setTargetHotend0(t);
397
   }
396
   }
398
-#endif
397
+#endif //AUTOTEMP
399
 
398
 
400
 void check_axes_activity() {
399
 void check_axes_activity() {
401
   unsigned char axis_active[NUM_AXIS] = { 0 },
400
   unsigned char axis_active[NUM_AXIS] = { 0 },
405
                   tail_e_to_p_pressure = EtoPPressure;
404
                   tail_e_to_p_pressure = EtoPPressure;
406
   #endif
405
   #endif
407
 
406
 
408
-  block_t *block;
407
+  block_t* block;
409
 
408
 
410
   if (blocks_queued()) {
409
   if (blocks_queued()) {
411
     uint8_t block_index = block_buffer_tail;
410
     uint8_t block_index = block_buffer_tail;
417
     #endif
416
     #endif
418
     while (block_index != block_buffer_head) {
417
     while (block_index != block_buffer_head) {
419
       block = &block_buffer[block_index];
418
       block = &block_buffer[block_index];
420
-      for (int i=0; i<NUM_AXIS; i++) if (block->steps[i]) axis_active[i]++;
419
+      for (int i = 0; i < NUM_AXIS; i++) if (block->steps[i]) axis_active[i]++;
421
       block_index = next_block_index(block_index);
420
       block_index = next_block_index(block_index);
422
     }
421
     }
423
   }
422
   }
465
 
464
 
466
   #if ENABLED(BARICUDA)
465
   #if ENABLED(BARICUDA)
467
     #if HAS_HEATER_1
466
     #if HAS_HEATER_1
468
-      analogWrite(HEATER_1_PIN,tail_valve_pressure);
467
+      analogWrite(HEATER_1_PIN, tail_valve_pressure);
469
     #endif
468
     #endif
470
     #if HAS_HEATER_2
469
     #if HAS_HEATER_2
471
-      analogWrite(HEATER_2_PIN,tail_e_to_p_pressure);
470
+      analogWrite(HEATER_2_PIN, tail_e_to_p_pressure);
472
     #endif
471
     #endif
473
   #endif
472
   #endif
474
 }
473
 }
479
 // mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
478
 // mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
480
 // calculation the caller must also provide the physical length of the line in millimeters.
479
 // calculation the caller must also provide the physical length of the line in millimeters.
481
 #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING)
480
 #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING)
482
-  void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t extruder)
481
+  void plan_buffer_line(float x, float y, float z, const float& e, float feed_rate, const uint8_t extruder)
483
 #else
482
 #else
484
-  void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t extruder)
483
+  void plan_buffer_line(const float& x, const float& y, const float& z, const float& e, float feed_rate, const uint8_t extruder)
485
 #endif  // AUTO_BED_LEVELING_FEATURE
484
 #endif  // AUTO_BED_LEVELING_FEATURE
486
 {
485
 {
487
   // Calculate the buffer head after we push this byte
486
   // Calculate the buffer head after we push this byte
536
   #endif
535
   #endif
537
 
536
 
538
   // Prepare to set up new block
537
   // Prepare to set up new block
539
-  block_t *block = &block_buffer[block_buffer_head];
538
+  block_t* block = &block_buffer[block_buffer_head];
540
 
539
 
541
   // Mark block as not busy (Not executed by the stepper interrupt)
540
   // Mark block as not busy (Not executed by the stepper interrupt)
542
   block->busy = false;
541
   block->busy = false;
626
   if (block->steps[E_AXIS]) {
625
   if (block->steps[E_AXIS]) {
627
     if (DISABLE_INACTIVE_EXTRUDER) { //enable only selected extruder
626
     if (DISABLE_INACTIVE_EXTRUDER) { //enable only selected extruder
628
 
627
 
629
-      for (int i=0; i<EXTRUDERS; i++)
628
+      for (int i = 0; i < EXTRUDERS; i++)
630
         if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--;
629
         if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--;
631
 
630
 
632
       switch(extruder) {
631
       switch(extruder) {
883
     // Compute path unit vector
882
     // Compute path unit vector
884
     double unit_vec[3];
883
     double unit_vec[3];
885
 
884
 
886
-    unit_vec[X_AXIS] = delta_mm[X_AXIS]*inverse_millimeters;
887
-    unit_vec[Y_AXIS] = delta_mm[Y_AXIS]*inverse_millimeters;
888
-    unit_vec[Z_AXIS] = delta_mm[Z_AXIS]*inverse_millimeters;
885
+    unit_vec[X_AXIS] = delta_mm[X_AXIS] * inverse_millimeters;
886
+    unit_vec[Y_AXIS] = delta_mm[Y_AXIS] * inverse_millimeters;
887
+    unit_vec[Z_AXIS] = delta_mm[Z_AXIS] * inverse_millimeters;
889
 
888
 
890
     // Compute maximum allowable entry speed at junction by centripetal acceleration approximation.
889
     // Compute maximum allowable entry speed at junction by centripetal acceleration approximation.
891
     // Let a circle be tangent to both previous and current path line segments, where the junction
890
     // Let a circle be tangent to both previous and current path line segments, where the junction
903
       // Compute cosine of angle between previous and current path. (prev_unit_vec is negative)
902
       // Compute cosine of angle between previous and current path. (prev_unit_vec is negative)
904
       // NOTE: Max junction velocity is computed without sin() or acos() by trig half angle identity.
903
       // NOTE: Max junction velocity is computed without sin() or acos() by trig half angle identity.
905
       double cos_theta = - previous_unit_vec[X_AXIS] * unit_vec[X_AXIS]
904
       double cos_theta = - previous_unit_vec[X_AXIS] * unit_vec[X_AXIS]
906
-        - previous_unit_vec[Y_AXIS] * unit_vec[Y_AXIS]
907
-        - previous_unit_vec[Z_AXIS] * unit_vec[Z_AXIS] ;
908
-
905
+                         - previous_unit_vec[Y_AXIS] * unit_vec[Y_AXIS]
906
+                         - previous_unit_vec[Z_AXIS] * unit_vec[Z_AXIS] ;
909
       // Skip and use default max junction speed for 0 degree acute junction.
907
       // Skip and use default max junction speed for 0 degree acute junction.
910
       if (cos_theta < 0.95) {
908
       if (cos_theta < 0.95) {
911
-        vmax_junction = min(previous_nominal_speed,block->nominal_speed);
909
+        vmax_junction = min(previous_nominal_speed, block->nominal_speed);
912
         // Skip and avoid divide by zero for straight junctions at 180 degrees. Limit to min() of nominal speeds.
910
         // Skip and avoid divide by zero for straight junctions at 180 degrees. Limit to min() of nominal speeds.
913
         if (cos_theta > -0.95) {
911
         if (cos_theta > -0.95) {
914
           // Compute maximum junction velocity based on maximum acceleration and junction deviation
912
           // Compute maximum junction velocity based on maximum acceleration and junction deviation
915
-          double sin_theta_d2 = sqrt(0.5*(1.0-cos_theta)); // Trig half angle identity. Always positive.
913
+          double sin_theta_d2 = sqrt(0.5 * (1.0 - cos_theta)); // Trig half angle identity. Always positive.
916
           vmax_junction = min(vmax_junction,
914
           vmax_junction = min(vmax_junction,
917
-          sqrt(block->acceleration * junction_deviation * sin_theta_d2/(1.0-sin_theta_d2)) );
915
+                              sqrt(block->acceleration * junction_deviation * sin_theta_d2 / (1.0 - sin_theta_d2)));
918
         }
916
         }
919
       }
917
       }
920
     }
918
     }
1018
 #endif // AUTO_BED_LEVELING_FEATURE && !DELTA
1016
 #endif // AUTO_BED_LEVELING_FEATURE && !DELTA
1019
 
1017
 
1020
 #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING)
1018
 #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING)
1021
-  void plan_set_position(float x, float y, float z, const float &e)
1019
+  void plan_set_position(float x, float y, float z, const float& e)
1022
 #else
1020
 #else
1023
-  void plan_set_position(const float &x, const float &y, const float &z, const float &e)
1021
+  void plan_set_position(const float& x, const float& y, const float& z, const float& e)
1024
 #endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING
1022
 #endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING
1025
   {
1023
   {
1026
     #if ENABLED(MESH_BED_LEVELING)
1024
     #if ENABLED(MESH_BED_LEVELING)
1036
     st_set_position(nx, ny, nz, ne);
1034
     st_set_position(nx, ny, nz, ne);
1037
     previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest.
1035
     previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest.
1038
 
1036
 
1039
-    for (int i=0; i<NUM_AXIS; i++) previous_speed[i] = 0.0;
1037
+    for (int i = 0; i < NUM_AXIS; i++) previous_speed[i] = 0.0;
1040
   }
1038
   }
1041
 
1039
 
1042
-void plan_set_e_position(const float &e) {
1040
+void plan_set_e_position(const float& e) {
1043
   position[E_AXIS] = lround(e * axis_steps_per_unit[E_AXIS]);
1041
   position[E_AXIS] = lround(e * axis_steps_per_unit[E_AXIS]);
1044
   st_set_e_position(position[E_AXIS]);
1042
   st_set_e_position(position[E_AXIS]);
1045
 }
1043
 }

+ 14
- 14
Marlin/planner.h Переглянути файл

18
   along with Grbl.  If not, see <http://www.gnu.org/licenses/>.
18
   along with Grbl.  If not, see <http://www.gnu.org/licenses/>.
19
 */
19
 */
20
 
20
 
21
-// This module is to be considered a sub-module of stepper.c. Please don't include 
21
+// This module is to be considered a sub-module of stepper.c. Please don't include
22
 // this file from any other module.
22
 // this file from any other module.
23
 
23
 
24
 #ifndef PLANNER_H
24
 #ifndef PLANNER_H
26
 
26
 
27
 #include "Marlin.h"
27
 #include "Marlin.h"
28
 
28
 
29
-// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in 
29
+// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in
30
 // the source g-code and may never actually be reached if acceleration management is active.
30
 // the source g-code and may never actually be reached if acceleration management is active.
31
 typedef struct {
31
 typedef struct {
32
   // Fields used by the bresenham algorithm for tracing the line
32
   // Fields used by the bresenham algorithm for tracing the line
46
 
46
 
47
   // Fields used by the motion planner to manage acceleration
47
   // Fields used by the motion planner to manage acceleration
48
   // float speed_x, speed_y, speed_z, speed_e;          // Nominal mm/sec for each axis
48
   // float speed_x, speed_y, speed_z, speed_e;          // Nominal mm/sec for each axis
49
-  float nominal_speed;                               // The nominal speed for this block in mm/sec 
49
+  float nominal_speed;                               // The nominal speed for this block in mm/sec
50
   float entry_speed;                                 // Entry speed at previous-current junction in mm/sec
50
   float entry_speed;                                 // Entry speed at previous-current junction in mm/sec
51
   float max_entry_speed;                             // Maximum allowable junction entry speed in mm/sec
51
   float max_entry_speed;                             // Maximum allowable junction entry speed in mm/sec
52
   float millimeters;                                 // The total travel of this block in mm
52
   float millimeters;                                 // The total travel of this block in mm
55
   unsigned char nominal_length_flag;                 // Planner flag for nominal speed always reached
55
   unsigned char nominal_length_flag;                 // Planner flag for nominal speed always reached
56
 
56
 
57
   // Settings for the trapezoid generator
57
   // Settings for the trapezoid generator
58
-  unsigned long nominal_rate;                        // The nominal step rate for this block in step_events/sec 
59
-  unsigned long initial_rate;                        // The jerk-adjusted step rate at start of block  
58
+  unsigned long nominal_rate;                        // The nominal step rate for this block in step_events/sec
59
+  unsigned long initial_rate;                        // The jerk-adjusted step rate at start of block
60
   unsigned long final_rate;                          // The minimal rate at exit
60
   unsigned long final_rate;                          // The minimal rate at exit
61
   unsigned long acceleration_st;                     // acceleration steps/sec^2
61
   unsigned long acceleration_st;                     // acceleration steps/sec^2
62
   unsigned long fan_speed;
62
   unsigned long fan_speed;
69
 
69
 
70
 #define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1))
70
 #define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1))
71
 
71
 
72
-// Initialize the motion plan subsystem      
72
+// Initialize the motion plan subsystem
73
 void plan_init();
73
 void plan_init();
74
 
74
 
75
 void check_axes_activity();
75
 void check_axes_activity();
97
    * Add a new linear movement to the buffer. x, y, z are the signed, absolute target position in
97
    * Add a new linear movement to the buffer. x, y, z are the signed, absolute target position in
98
    * millimeters. Feed rate specifies the (target) speed of the motion.
98
    * millimeters. Feed rate specifies the (target) speed of the motion.
99
    */
99
    */
100
-  void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t extruder);
100
+  void plan_buffer_line(float x, float y, float z, const float& e, float feed_rate, const uint8_t extruder);
101
 
101
 
102
   /**
102
   /**
103
    * Set the planner positions. Used for G92 instructions.
103
    * Set the planner positions. Used for G92 instructions.
104
    * Multiplies by axis_steps_per_unit[] to set stepper positions.
104
    * Multiplies by axis_steps_per_unit[] to set stepper positions.
105
    * Clears previous speed values.
105
    * Clears previous speed values.
106
    */
106
    */
107
-  void plan_set_position(float x, float y, float z, const float &e);
107
+  void plan_set_position(float x, float y, float z, const float& e);
108
 
108
 
109
 #else
109
 #else
110
 
110
 
111
-  void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t extruder);
112
-  void plan_set_position(const float &x, const float &y, const float &z, const float &e);
111
+  void plan_buffer_line(const float& x, const float& y, const float& z, const float& e, float feed_rate, const uint8_t extruder);
112
+  void plan_set_position(const float& x, const float& y, const float& z, const float& e);
113
 
113
 
114
 #endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING
114
 #endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING
115
 
115
 
116
-void plan_set_e_position(const float &e);
116
+void plan_set_e_position(const float& e);
117
 
117
 
118
 //===========================================================================
118
 //===========================================================================
119
 //============================= public variables ============================
119
 //============================= public variables ============================
142
 
142
 
143
 extern block_t block_buffer[BLOCK_BUFFER_SIZE];            // A ring buffer for motion instructions
143
 extern block_t block_buffer[BLOCK_BUFFER_SIZE];            // A ring buffer for motion instructions
144
 extern volatile unsigned char block_buffer_head;           // Index of the next block to be pushed
144
 extern volatile unsigned char block_buffer_head;           // Index of the next block to be pushed
145
-extern volatile unsigned char block_buffer_tail; 
145
+extern volatile unsigned char block_buffer_tail;
146
 
146
 
147
 // Returns true if the buffer has a queued block, false otherwise
147
 // Returns true if the buffer has a queued block, false otherwise
148
 FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); }
148
 FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); }
155
 }
155
 }
156
 
156
 
157
 // Gets the current block. Returns NULL if buffer empty
157
 // Gets the current block. Returns NULL if buffer empty
158
-FORCE_INLINE block_t *plan_get_current_block() {
158
+FORCE_INLINE block_t* plan_get_current_block() {
159
   if (blocks_queued()) {
159
   if (blocks_queued()) {
160
-    block_t *block = &block_buffer[block_buffer_tail];
160
+    block_t* block = &block_buffer[block_buffer_tail];
161
     block->busy = true;
161
     block->busy = true;
162
     return block;
162
     return block;
163
   }
163
   }

+ 366
- 702
Marlin/qr_solve.cpp
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 16
- 16
Marlin/qr_solve.h Переглянути файл

2
 
2
 
3
 #if ENABLED(AUTO_BED_LEVELING_GRID)
3
 #if ENABLED(AUTO_BED_LEVELING_GRID)
4
 
4
 
5
-void daxpy ( int n, double da, double dx[], int incx, double dy[], int incy );
6
-double ddot ( int n, double dx[], int incx, double dy[], int incy );
7
-double dnrm2 ( int n, double x[], int incx );
8
-void dqrank ( double a[], int lda, int m, int n, double tol, int *kr, 
9
-  int jpvt[], double qraux[] );
10
-void dqrdc ( double a[], int lda, int n, int p, double qraux[], int jpvt[], 
11
-  double work[], int job );
12
-int dqrls ( double a[], int lda, int m, int n, double tol, int *kr, double b[], 
13
-  double x[], double rsd[], int jpvt[], double qraux[], int itask );
14
-void dqrlss ( double a[], int lda, int m, int n, int kr, double b[], double x[], 
15
-  double rsd[], int jpvt[], double qraux[] );
16
-int dqrsl ( double a[], int lda, int n, int k, double qraux[], double y[], 
17
-  double qy[], double qty[], double b[], double rsd[], double ab[], int job );
18
-void dscal ( int n, double sa, double x[], int incx );
19
-void dswap ( int n, double x[], int incx, double y[], int incy );
20
-void qr_solve ( double x[], int m, int n, double a[], double b[] );
5
+void daxpy(int n, double da, double dx[], int incx, double dy[], int incy);
6
+double ddot(int n, double dx[], int incx, double dy[], int incy);
7
+double dnrm2(int n, double x[], int incx);
8
+void dqrank(double a[], int lda, int m, int n, double tol, int* kr,
9
+            int jpvt[], double qraux[]);
10
+void dqrdc(double a[], int lda, int n, int p, double qraux[], int jpvt[],
11
+           double work[], int job);
12
+int dqrls(double a[], int lda, int m, int n, double tol, int* kr, double b[],
13
+          double x[], double rsd[], int jpvt[], double qraux[], int itask);
14
+void dqrlss(double a[], int lda, int m, int n, int kr, double b[], double x[],
15
+            double rsd[], int jpvt[], double qraux[]);
16
+int dqrsl(double a[], int lda, int n, int k, double qraux[], double y[],
17
+          double qy[], double qty[], double b[], double rsd[], double ab[], int job);
18
+void dscal(int n, double sa, double x[], int incx);
19
+void dswap(int n, double x[], int incx, double y[], int incy);
20
+void qr_solve(double x[], int m, int n, double a[], double b[]);
21
 
21
 
22
 #endif
22
 #endif

+ 15
- 15
Marlin/servo.cpp Переглянути файл

43
  detach()    - Stops an attached servos from pulsing its i/o pin.
43
  detach()    - Stops an attached servos from pulsing its i/o pin.
44
 
44
 
45
 */
45
 */
46
-#include "Configuration.h" 
46
+#include "Configuration.h"
47
 
47
 
48
 #if HAS_SERVOS
48
 #if HAS_SERVOS
49
 
49
 
76
 
76
 
77
 /************ static functions common to all instances ***********************/
77
 /************ static functions common to all instances ***********************/
78
 
78
 
79
-static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t *TCNTn, volatile uint16_t* OCRnA) {
79
+static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
80
   if (Channel[timer] < 0)
80
   if (Channel[timer] < 0)
81
     *TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer
81
     *TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer
82
   else {
82
   else {
83
-    if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && SERVO(timer,Channel[timer]).Pin.isActive)
84
-      digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,LOW); // pulse this channel low if activated
83
+    if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive)
84
+      digitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated
85
   }
85
   }
86
 
86
 
87
   Channel[timer]++;    // increment to the next channel
87
   Channel[timer]++;    // increment to the next channel
88
-  if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
89
-    *OCRnA = *TCNTn + SERVO(timer,Channel[timer]).ticks;
90
-    if (SERVO(timer,Channel[timer]).Pin.isActive)     // check if activated
91
-      digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,HIGH); // its an active channel so pulse it high
88
+  if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
89
+    *OCRnA = *TCNTn + SERVO(timer, Channel[timer]).ticks;
90
+    if (SERVO(timer, Channel[timer]).Pin.isActive)    // check if activated
91
+      digitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // its an active channel so pulse it high
92
   }
92
   }
93
   else {
93
   else {
94
     // finished all channels so wait for the refresh period to expire before starting over
94
     // finished all channels so wait for the refresh period to expire before starting over
95
-    if ( ((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL) )  // allow a few ticks to ensure the next OCR1A not missed
95
+    if (((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL))    // allow a few ticks to ensure the next OCR1A not missed
96
       *OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL);
96
       *OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL);
97
     else
97
     else
98
       *OCRnA = *TCNTn + 4;  // at least REFRESH_INTERVAL has elapsed
98
       *OCRnA = *TCNTn + 4;  // at least REFRESH_INTERVAL has elapsed
159
       TCNT3 = 0;              // clear the timer count
159
       TCNT3 = 0;              // clear the timer count
160
       #ifdef __AVR_ATmega128__
160
       #ifdef __AVR_ATmega128__
161
         TIFR |= _BV(OCF3A);     // clear any pending interrupts;
161
         TIFR |= _BV(OCF3A);     // clear any pending interrupts;
162
-      	ETIMSK |= _BV(OCIE3A);  // enable the output compare interrupt
162
+        ETIMSK |= _BV(OCIE3A);  // enable the output compare interrupt
163
       #else
163
       #else
164
         TIFR3 = _BV(OCF3A);     // clear any pending interrupts;
164
         TIFR3 = _BV(OCF3A);     // clear any pending interrupts;
165
         TIMSK3 =  _BV(OCIE3A) ; // enable the output compare interrupt
165
         TIMSK3 =  _BV(OCIE3A) ; // enable the output compare interrupt
219
 
219
 
220
 static boolean isTimerActive(timer16_Sequence_t timer) {
220
 static boolean isTimerActive(timer16_Sequence_t timer) {
221
   // returns true if any servo is active on this timer
221
   // returns true if any servo is active on this timer
222
-  for(uint8_t channel=0; channel < SERVOS_PER_TIMER; channel++) {
223
-    if (SERVO(timer,channel).Pin.isActive)
222
+  for (uint8_t channel = 0; channel < SERVOS_PER_TIMER; channel++) {
223
+    if (SERVO(timer, channel).Pin.isActive)
224
       return true;
224
       return true;
225
   }
225
   }
226
   return false;
226
   return false;
230
 /****************** end of static functions ******************************/
230
 /****************** end of static functions ******************************/
231
 
231
 
232
 Servo::Servo() {
232
 Servo::Servo() {
233
-  if ( ServoCount < MAX_SERVOS) {
233
+  if (ServoCount < MAX_SERVOS) {
234
     this->servoIndex = ServoCount++;                    // assign a servo index to this instance
234
     this->servoIndex = ServoCount++;                    // assign a servo index to this instance
235
     servo_info[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);   // store default values  - 12 Aug 2009
235
     servo_info[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH);   // store default values  - 12 Aug 2009
236
   }
236
   }
285
     else if (value > SERVO_MAX())
285
     else if (value > SERVO_MAX())
286
       value = SERVO_MAX();
286
       value = SERVO_MAX();
287
 
287
 
288
-  	value = value - TRIM_DURATION;
288
+    value = value - TRIM_DURATION;
289
     value = usToTicks(value);  // convert to ticks after compensating for interrupt overhead - 12 Aug 2009
289
     value = usToTicks(value);  // convert to ticks after compensating for interrupt overhead - 12 Aug 2009
290
 
290
 
291
     uint8_t oldSREG = SREG;
291
     uint8_t oldSREG = SREG;
296
 }
296
 }
297
 
297
 
298
 // return the value as degrees
298
 // return the value as degrees
299
-int Servo::read() { return map( this->readMicroseconds()+1, SERVO_MIN(), SERVO_MAX(), 0, 180); }
299
+int Servo::read() { return map(this->readMicroseconds() + 1, SERVO_MIN(), SERVO_MAX(), 0, 180); }
300
 
300
 
301
 int Servo::readMicroseconds() {
301
 int Servo::readMicroseconds() {
302
   return (this->servoIndex == INVALID_SERVO) ? 0 : ticksToUs(servo_info[this->servoIndex].ticks) + TRIM_DURATION;
302
   return (this->servoIndex == INVALID_SERVO) ? 0 : ticksToUs(servo_info[this->servoIndex].ticks) + TRIM_DURATION;

+ 2
- 2
Marlin/servo.h Переглянути файл

105
 #define INVALID_SERVO         255     // flag indicating an invalid servo index
105
 #define INVALID_SERVO         255     // flag indicating an invalid servo index
106
 
106
 
107
 typedef struct {
107
 typedef struct {
108
-  uint8_t nbr        :6 ;             // a pin number from 0 to 63
109
-  uint8_t isActive   :1 ;             // true if this channel is enabled, pin not pulsed if false
108
+  uint8_t nbr        : 6 ;            // a pin number from 0 to 63
109
+  uint8_t isActive   : 1 ;            // true if this channel is enabled, pin not pulsed if false
110
 } ServoPin_t;
110
 } ServoPin_t;
111
 
111
 
112
 typedef struct {
112
 typedef struct {

+ 128
- 128
Marlin/speed_lookuptable.h Переглянути файл

6
 #if F_CPU == 16000000
6
 #if F_CPU == 16000000
7
 
7
 
8
 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\
8
 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\
9
-{ 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, 
10
-{ 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, 
11
-{ 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, 
12
-{ 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8}, 
13
-{ 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5}, 
14
-{ 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3}, 
15
-{ 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2}, 
16
-{ 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2}, 
17
-{ 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1}, 
18
-{ 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1}, 
19
-{ 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1}, 
20
-{ 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1}, 
21
-{ 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0}, 
22
-{ 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1}, 
23
-{ 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0}, 
24
-{ 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1}, 
25
-{ 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0}, 
26
-{ 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0}, 
27
-{ 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0}, 
28
-{ 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1}, 
29
-{ 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0}, 
30
-{ 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0}, 
31
-{ 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0}, 
32
-{ 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0}, 
33
-{ 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0}, 
34
-{ 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0}, 
35
-{ 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0}, 
36
-{ 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1}, 
37
-{ 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, 
38
-{ 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, 
39
-{ 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, 
40
-{ 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0}
9
+  { 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135},
10
+  { 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32},
11
+  { 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14},
12
+  { 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8},
13
+  { 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5},
14
+  { 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3},
15
+  { 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2},
16
+  { 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2},
17
+  { 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1},
18
+  { 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1},
19
+  { 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1},
20
+  { 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1},
21
+  { 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0},
22
+  { 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1},
23
+  { 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0},
24
+  { 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1},
25
+  { 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0},
26
+  { 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0},
27
+  { 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0},
28
+  { 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1},
29
+  { 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0},
30
+  { 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0},
31
+  { 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0},
32
+  { 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0},
33
+  { 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0},
34
+  { 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0},
35
+  { 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0},
36
+  { 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1},
37
+  { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0},
38
+  { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0},
39
+  { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0},
40
+  { 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0}
41
 };
41
 };
42
 
42
 
43
 const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\
43
 const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\
44
-{ 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, 
45
-{ 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, 
46
-{ 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, 
47
-{ 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198}, 
48
-{ 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132}, 
49
-{ 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94}, 
50
-{ 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71}, 
51
-{ 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55}, 
52
-{ 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44}, 
53
-{ 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36}, 
54
-{ 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30}, 
55
-{ 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25}, 
56
-{ 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22}, 
57
-{ 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18}, 
58
-{ 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16}, 
59
-{ 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15}, 
60
-{ 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13}, 
61
-{ 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11}, 
62
-{ 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10}, 
63
-{ 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9}, 
64
-{ 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8}, 
65
-{ 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8}, 
66
-{ 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7}, 
67
-{ 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7}, 
68
-{ 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6}, 
69
-{ 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5}, 
70
-{ 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5}, 
71
-{ 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5}, 
72
-{ 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, 
73
-{ 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, 
74
-{ 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, 
75
-{ 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3}
44
+  { 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894},
45
+  { 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657},
46
+  { 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331},
47
+  { 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198},
48
+  { 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132},
49
+  { 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94},
50
+  { 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71},
51
+  { 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55},
52
+  { 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44},
53
+  { 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36},
54
+  { 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30},
55
+  { 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25},
56
+  { 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22},
57
+  { 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18},
58
+  { 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16},
59
+  { 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15},
60
+  { 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13},
61
+  { 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11},
62
+  { 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10},
63
+  { 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9},
64
+  { 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8},
65
+  { 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8},
66
+  { 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7},
67
+  { 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7},
68
+  { 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6},
69
+  { 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5},
70
+  { 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5},
71
+  { 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5},
72
+  { 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4},
73
+  { 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4},
74
+  { 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4},
75
+  { 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3}
76
 };
76
 };
77
 
77
 
78
 #elif F_CPU == 20000000
78
 #elif F_CPU == 20000000
79
 
79
 
80
 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {
80
 const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {
81
-   {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167},
82
-   {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40},
83
-   {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17},
84
-   {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10},
85
-   {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6},
86
-   {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5},
87
-   {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4},
88
-   {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2},
89
-   {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2},
90
-   {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2},
91
-   {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2},
92
-   {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1},
93
-   {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1},
94
-   {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0},
95
-   {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0},
96
-   {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0},
97
-   {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1},
98
-   {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1},
99
-   {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0},
100
-   {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1},
101
-   {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0},
102
-   {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0},
103
-   {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0},
104
-   {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1},
105
-   {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1},
106
-   {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1},
107
-   {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0},
108
-   {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0},
109
-   {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0},
110
-   {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0},
111
-   {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0},
112
-   {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0},
81
+  {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167},
82
+  {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40},
83
+  {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17},
84
+  {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10},
85
+  {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6},
86
+  {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5},
87
+  {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4},
88
+  {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2},
89
+  {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2},
90
+  {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2},
91
+  {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2},
92
+  {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1},
93
+  {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1},
94
+  {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0},
95
+  {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0},
96
+  {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0},
97
+  {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1},
98
+  {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1},
99
+  {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0},
100
+  {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1},
101
+  {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0},
102
+  {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0},
103
+  {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0},
104
+  {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1},
105
+  {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1},
106
+  {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1},
107
+  {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0},
108
+  {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0},
109
+  {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0},
110
+  {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0},
111
+  {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0},
112
+  {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0},
113
 };
113
 };
114
 
114
 
115
 const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {
115
 const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {
116
-   {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003},
117
-   {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745},
118
-   {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385},
119
-   {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235},
120
-   {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158},
121
-   {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113},
122
-   {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86},
123
-   {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67},
124
-   {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53},
125
-   {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44},
126
-   {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36},
127
-   {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31},
128
-   {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27},
129
-   {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23},
130
-   {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20},
131
-   {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18},
132
-   {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16},
133
-   {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14},
134
-   {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13},
135
-   {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12},
136
-   {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10},
137
-   {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10},
138
-   {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9},
139
-   {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8},
140
-   {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7},
141
-   {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7},
142
-   {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6},
143
-   {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6},
144
-   {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6},
145
-   {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5},
146
-   {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5},
147
-   {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5},
116
+  {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003},
117
+  {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745},
118
+  {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385},
119
+  {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235},
120
+  {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158},
121
+  {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113},
122
+  {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86},
123
+  {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67},
124
+  {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53},
125
+  {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44},
126
+  {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36},
127
+  {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31},
128
+  {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27},
129
+  {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23},
130
+  {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20},
131
+  {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18},
132
+  {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16},
133
+  {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14},
134
+  {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13},
135
+  {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12},
136
+  {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10},
137
+  {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10},
138
+  {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9},
139
+  {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8},
140
+  {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7},
141
+  {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7},
142
+  {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6},
143
+  {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6},
144
+  {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6},
145
+  {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5},
146
+  {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5},
147
+  {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5},
148
 };
148
 };
149
 
149
 
150
 #endif
150
 #endif

+ 179
- 180
Marlin/stepper.cpp Переглянути файл

37
 //===========================================================================
37
 //===========================================================================
38
 //============================= public variables ============================
38
 //============================= public variables ============================
39
 //===========================================================================
39
 //===========================================================================
40
-block_t *current_block;  // A pointer to the block currently being traced
40
+block_t* current_block;  // A pointer to the block currently being traced
41
 
41
 
42
 
42
 
43
 //===========================================================================
43
 //===========================================================================
50
 static unsigned int cleaning_buffer_counter;
50
 static unsigned int cleaning_buffer_counter;
51
 
51
 
52
 #if ENABLED(Z_DUAL_ENDSTOPS)
52
 #if ENABLED(Z_DUAL_ENDSTOPS)
53
-  static bool performing_homing = false, 
54
-              locked_z_motor = false, 
53
+  static bool performing_homing = false,
54
+              locked_z_motor = false,
55
               locked_z2_motor = false;
55
               locked_z2_motor = false;
56
 #endif
56
 #endif
57
 
57
 
81
 #else
81
 #else
82
   static uint16_t
82
   static uint16_t
83
 #endif
83
 #endif
84
-  old_endstop_bits = 0; // use X_MIN, X_MAX... Z_MAX, Z_MIN_PROBE, Z2_MIN, Z2_MAX
84
+    old_endstop_bits = 0; // use X_MIN, X_MAX... Z_MAX, Z_MIN_PROBE, Z2_MIN, Z2_MAX
85
 
85
 
86
 #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
86
 #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
87
   bool abort_on_endstop_hit = false;
87
   bool abort_on_endstop_hit = false;
163
 // r27 to store the byte 1 of the 24 bit result
163
 // r27 to store the byte 1 of the 24 bit result
164
 #define MultiU16X8toH16(intRes, charIn1, intIn2) \
164
 #define MultiU16X8toH16(intRes, charIn1, intIn2) \
165
   asm volatile ( \
165
   asm volatile ( \
166
-    "clr r26 \n\t" \
167
-    "mul %A1, %B2 \n\t" \
168
-    "movw %A0, r0 \n\t" \
169
-    "mul %A1, %A2 \n\t" \
170
-    "add %A0, r1 \n\t" \
171
-    "adc %B0, r26 \n\t" \
172
-    "lsr r0 \n\t" \
173
-    "adc %A0, r26 \n\t" \
174
-    "adc %B0, r26 \n\t" \
175
-    "clr r1 \n\t" \
176
-    : \
177
-    "=&r" (intRes) \
178
-    : \
179
-    "d" (charIn1), \
180
-    "d" (intIn2) \
181
-    : \
182
-    "r26" \
183
-  )
166
+                 "clr r26 \n\t" \
167
+                 "mul %A1, %B2 \n\t" \
168
+                 "movw %A0, r0 \n\t" \
169
+                 "mul %A1, %A2 \n\t" \
170
+                 "add %A0, r1 \n\t" \
171
+                 "adc %B0, r26 \n\t" \
172
+                 "lsr r0 \n\t" \
173
+                 "adc %A0, r26 \n\t" \
174
+                 "adc %B0, r26 \n\t" \
175
+                 "clr r1 \n\t" \
176
+                 : \
177
+                 "=&r" (intRes) \
178
+                 : \
179
+                 "d" (charIn1), \
180
+                 "d" (intIn2) \
181
+                 : \
182
+                 "r26" \
183
+               )
184
 
184
 
185
 // intRes = longIn1 * longIn2 >> 24
185
 // intRes = longIn1 * longIn2 >> 24
186
 // uses:
186
 // uses:
194
 //
194
 //
195
 #define MultiU24X32toH16(intRes, longIn1, longIn2) \
195
 #define MultiU24X32toH16(intRes, longIn1, longIn2) \
196
   asm volatile ( \
196
   asm volatile ( \
197
-    "clr r26 \n\t" \
198
-    "mul %A1, %B2 \n\t" \
199
-    "mov r27, r1 \n\t" \
200
-    "mul %B1, %C2 \n\t" \
201
-    "movw %A0, r0 \n\t" \
202
-    "mul %C1, %C2 \n\t" \
203
-    "add %B0, r0 \n\t" \
204
-    "mul %C1, %B2 \n\t" \
205
-    "add %A0, r0 \n\t" \
206
-    "adc %B0, r1 \n\t" \
207
-    "mul %A1, %C2 \n\t" \
208
-    "add r27, r0 \n\t" \
209
-    "adc %A0, r1 \n\t" \
210
-    "adc %B0, r26 \n\t" \
211
-    "mul %B1, %B2 \n\t" \
212
-    "add r27, r0 \n\t" \
213
-    "adc %A0, r1 \n\t" \
214
-    "adc %B0, r26 \n\t" \
215
-    "mul %C1, %A2 \n\t" \
216
-    "add r27, r0 \n\t" \
217
-    "adc %A0, r1 \n\t" \
218
-    "adc %B0, r26 \n\t" \
219
-    "mul %B1, %A2 \n\t" \
220
-    "add r27, r1 \n\t" \
221
-    "adc %A0, r26 \n\t" \
222
-    "adc %B0, r26 \n\t" \
223
-    "lsr r27 \n\t" \
224
-    "adc %A0, r26 \n\t" \
225
-    "adc %B0, r26 \n\t" \
226
-    "mul %D2, %A1 \n\t" \
227
-    "add %A0, r0 \n\t" \
228
-    "adc %B0, r1 \n\t" \
229
-    "mul %D2, %B1 \n\t" \
230
-    "add %B0, r0 \n\t" \
231
-    "clr r1 \n\t" \
232
-    : \
233
-    "=&r" (intRes) \
234
-    : \
235
-    "d" (longIn1), \
236
-    "d" (longIn2) \
237
-    : \
238
-    "r26" , "r27" \
239
-  )
197
+                 "clr r26 \n\t" \
198
+                 "mul %A1, %B2 \n\t" \
199
+                 "mov r27, r1 \n\t" \
200
+                 "mul %B1, %C2 \n\t" \
201
+                 "movw %A0, r0 \n\t" \
202
+                 "mul %C1, %C2 \n\t" \
203
+                 "add %B0, r0 \n\t" \
204
+                 "mul %C1, %B2 \n\t" \
205
+                 "add %A0, r0 \n\t" \
206
+                 "adc %B0, r1 \n\t" \
207
+                 "mul %A1, %C2 \n\t" \
208
+                 "add r27, r0 \n\t" \
209
+                 "adc %A0, r1 \n\t" \
210
+                 "adc %B0, r26 \n\t" \
211
+                 "mul %B1, %B2 \n\t" \
212
+                 "add r27, r0 \n\t" \
213
+                 "adc %A0, r1 \n\t" \
214
+                 "adc %B0, r26 \n\t" \
215
+                 "mul %C1, %A2 \n\t" \
216
+                 "add r27, r0 \n\t" \
217
+                 "adc %A0, r1 \n\t" \
218
+                 "adc %B0, r26 \n\t" \
219
+                 "mul %B1, %A2 \n\t" \
220
+                 "add r27, r1 \n\t" \
221
+                 "adc %A0, r26 \n\t" \
222
+                 "adc %B0, r26 \n\t" \
223
+                 "lsr r27 \n\t" \
224
+                 "adc %A0, r26 \n\t" \
225
+                 "adc %B0, r26 \n\t" \
226
+                 "mul %D2, %A1 \n\t" \
227
+                 "add %A0, r0 \n\t" \
228
+                 "adc %B0, r1 \n\t" \
229
+                 "mul %D2, %B1 \n\t" \
230
+                 "add %B0, r0 \n\t" \
231
+                 "clr r1 \n\t" \
232
+                 : \
233
+                 "=&r" (intRes) \
234
+                 : \
235
+                 "d" (longIn1), \
236
+                 "d" (longIn2) \
237
+                 : \
238
+                 "r26" , "r27" \
239
+               )
240
 
240
 
241
 // Some useful constants
241
 // Some useful constants
242
 
242
 
288
 
288
 
289
 // Check endstops
289
 // Check endstops
290
 inline void update_endstops() {
290
 inline void update_endstops() {
291
-  
291
+
292
   #if ENABLED(Z_DUAL_ENDSTOPS)
292
   #if ENABLED(Z_DUAL_ENDSTOPS)
293
     uint16_t
293
     uint16_t
294
   #else
294
   #else
316
       _ENDSTOP_HIT(AXIS); \
316
       _ENDSTOP_HIT(AXIS); \
317
       step_events_completed = current_block->step_event_count; \
317
       step_events_completed = current_block->step_event_count; \
318
     }
318
     }
319
-  
319
+
320
   #if ENABLED(COREXY)
320
   #if ENABLED(COREXY)
321
     // Head direction in -X axis for CoreXY bots.
321
     // Head direction in -X axis for CoreXY bots.
322
     // If DeltaX == -DeltaY, the movement is only in Y axis
322
     // If DeltaX == -DeltaY, the movement is only in Y axis
328
     if ((current_block->steps[A_AXIS] != current_block->steps[C_AXIS]) || (TEST(out_bits, A_AXIS) == TEST(out_bits, C_AXIS))) {
328
     if ((current_block->steps[A_AXIS] != current_block->steps[C_AXIS]) || (TEST(out_bits, A_AXIS) == TEST(out_bits, C_AXIS))) {
329
       if (TEST(out_bits, X_HEAD))
329
       if (TEST(out_bits, X_HEAD))
330
   #else
330
   #else
331
-      if (TEST(out_bits, X_AXIS))   // stepping along -X axis (regular Cartesian bot)
331
+    if (TEST(out_bits, X_AXIS))   // stepping along -X axis (regular Cartesian bot)
332
   #endif
332
   #endif
333
       { // -direction
333
       { // -direction
334
         #if ENABLED(DUAL_X_CARRIAGE)
334
         #if ENABLED(DUAL_X_CARRIAGE)
391
 
391
 
392
           #if ENABLED(Z_DUAL_ENDSTOPS)
392
           #if ENABLED(Z_DUAL_ENDSTOPS)
393
             SET_ENDSTOP_BIT(Z, MIN);
393
             SET_ENDSTOP_BIT(Z, MIN);
394
-              #if HAS_Z2_MIN
395
-                SET_ENDSTOP_BIT(Z2, MIN);
396
-              #else
397
-                COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN);
398
-              #endif
394
+            #if HAS_Z2_MIN
395
+              SET_ENDSTOP_BIT(Z2, MIN);
396
+            #else
397
+              COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN);
398
+            #endif
399
 
399
 
400
             byte z_test = TEST_ENDSTOP(Z_MIN) << 0 + TEST_ENDSTOP(Z2_MIN) << 1; // bit 0 for Z, bit 1 for Z2
400
             byte z_test = TEST_ENDSTOP(Z_MIN) << 0 + TEST_ENDSTOP(Z2_MIN) << 1; // bit 0 for Z, bit 1 for Z2
401
 
401
 
408
           #else // !Z_DUAL_ENDSTOPS
408
           #else // !Z_DUAL_ENDSTOPS
409
 
409
 
410
             UPDATE_ENDSTOP(Z, MIN);
410
             UPDATE_ENDSTOP(Z, MIN);
411
+
411
           #endif // !Z_DUAL_ENDSTOPS
412
           #endif // !Z_DUAL_ENDSTOPS
412
         #endif // Z_MIN_PIN
413
         #endif // Z_MIN_PIN
413
 
414
 
414
         #if ENABLED(Z_MIN_PROBE_ENDSTOP)
415
         #if ENABLED(Z_MIN_PROBE_ENDSTOP)
415
           UPDATE_ENDSTOP(Z, MIN_PROBE);
416
           UPDATE_ENDSTOP(Z, MIN_PROBE);
416
 
417
 
417
-          if (TEST_ENDSTOP(Z_MIN_PROBE))
418
-          {
418
+          if (TEST_ENDSTOP(Z_MIN_PROBE)) {
419
             endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
419
             endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS];
420
             endstop_hit_bits |= BIT(Z_MIN_PROBE);
420
             endstop_hit_bits |= BIT(Z_MIN_PROBE);
421
           }
421
           }
427
           #if ENABLED(Z_DUAL_ENDSTOPS)
427
           #if ENABLED(Z_DUAL_ENDSTOPS)
428
 
428
 
429
             SET_ENDSTOP_BIT(Z, MAX);
429
             SET_ENDSTOP_BIT(Z, MAX);
430
-              #if HAS_Z2_MAX
431
-                SET_ENDSTOP_BIT(Z2, MAX);
432
-              #else
433
-                COPY_BIT(current_endstop_bits, Z_MAX, Z2_MAX);
434
-              #endif
430
+            #if HAS_Z2_MAX
431
+              SET_ENDSTOP_BIT(Z2, MAX);
432
+            #else
433
+              COPY_BIT(current_endstop_bits, Z_MAX, Z2_MAX);
434
+            #endif
435
 
435
 
436
             byte z_test = TEST_ENDSTOP(Z_MAX) << 0 + TEST_ENDSTOP(Z2_MAX) << 1; // bit 0 for Z, bit 1 for Z2
436
             byte z_test = TEST_ENDSTOP(Z_MAX) << 0 + TEST_ENDSTOP(Z2_MAX) << 1; // bit 0 for Z, bit 1 for Z2
437
 
437
 
451
       }
451
       }
452
   #if ENABLED(COREXZ)
452
   #if ENABLED(COREXZ)
453
     }
453
     }
454
-  #endif  
454
+  #endif
455
   old_endstop_bits = current_endstop_bits;
455
   old_endstop_bits = current_endstop_bits;
456
 }
456
 }
457
 
457
 
495
   if (step_rate < (F_CPU / 500000)) step_rate = (F_CPU / 500000);
495
   if (step_rate < (F_CPU / 500000)) step_rate = (F_CPU / 500000);
496
   step_rate -= (F_CPU / 500000); // Correct for minimal speed
496
   step_rate -= (F_CPU / 500000); // Correct for minimal speed
497
   if (step_rate >= (8 * 256)) { // higher step rate
497
   if (step_rate >= (8 * 256)) { // higher step rate
498
-    unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0];
498
+    unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate >> 8)][0];
499
     unsigned char tmp_step_rate = (step_rate & 0x00ff);
499
     unsigned char tmp_step_rate = (step_rate & 0x00ff);
500
-    unsigned short gain = (unsigned short)pgm_read_word_near(table_address+2);
500
+    unsigned short gain = (unsigned short)pgm_read_word_near(table_address + 2);
501
     MultiU16X8toH16(timer, tmp_step_rate, gain);
501
     MultiU16X8toH16(timer, tmp_step_rate, gain);
502
     timer = (unsigned short)pgm_read_word_near(table_address) - timer;
502
     timer = (unsigned short)pgm_read_word_near(table_address) - timer;
503
   }
503
   }
504
   else { // lower step rates
504
   else { // lower step rates
505
     unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0];
505
     unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0];
506
-    table_address += ((step_rate)>>1) & 0xfffc;
506
+    table_address += ((step_rate) >> 1) & 0xfffc;
507
     timer = (unsigned short)pgm_read_word_near(table_address);
507
     timer = (unsigned short)pgm_read_word_near(table_address);
508
-    timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3);
508
+    timer -= (((unsigned short)pgm_read_word_near(table_address + 2) * (unsigned char)(step_rate & 0x0007)) >> 3);
509
   }
509
   }
510
   if (timer < 100) { timer = 100; MYSERIAL.print(MSG_STEPPER_TOO_HIGH); MYSERIAL.println(step_rate); }//(20kHz this should never happen)
510
   if (timer < 100) { timer = 100; MYSERIAL.print(MSG_STEPPER_TOO_HIGH); MYSERIAL.println(step_rate); }//(20kHz this should never happen)
511
   return timer;
511
   return timer;
536
     Y_APPLY_DIR(!INVERT_Y_DIR, 0);
536
     Y_APPLY_DIR(!INVERT_Y_DIR, 0);
537
     count_direction[Y_AXIS] = 1;
537
     count_direction[Y_AXIS] = 1;
538
   }
538
   }
539
-  
539
+
540
   if (TEST(out_bits, Z_AXIS)) { // C_AXIS
540
   if (TEST(out_bits, Z_AXIS)) { // C_AXIS
541
     Z_APPLY_DIR(INVERT_Z_DIR, 0);
541
     Z_APPLY_DIR(INVERT_Z_DIR, 0);
542
     count_direction[Z_AXIS] = -1;
542
     count_direction[Z_AXIS] = -1;
545
     Z_APPLY_DIR(!INVERT_Z_DIR, 0);
545
     Z_APPLY_DIR(!INVERT_Z_DIR, 0);
546
     count_direction[Z_AXIS] = 1;
546
     count_direction[Z_AXIS] = 1;
547
   }
547
   }
548
-  
548
+
549
   #if DISABLED(ADVANCE)
549
   #if DISABLED(ADVANCE)
550
     if (TEST(out_bits, E_AXIS)) {
550
     if (TEST(out_bits, E_AXIS)) {
551
       REV_E_DIR();
551
       REV_E_DIR();
566
     out_bits = current_block->direction_bits;
566
     out_bits = current_block->direction_bits;
567
     set_stepper_direction();
567
     set_stepper_direction();
568
   }
568
   }
569
-  
569
+
570
   #if ENABLED(ADVANCE)
570
   #if ENABLED(ADVANCE)
571
     advance = current_block->initial_advance;
571
     advance = current_block->initial_advance;
572
     final_advance = current_block->final_advance;
572
     final_advance = current_block->final_advance;
704
       timer = calc_timer(acc_step_rate);
704
       timer = calc_timer(acc_step_rate);
705
       OCR1A = timer;
705
       OCR1A = timer;
706
       acceleration_time += timer;
706
       acceleration_time += timer;
707
+
707
       #if ENABLED(ADVANCE)
708
       #if ENABLED(ADVANCE)
708
-        for(int8_t i=0; i < step_loops; i++) {
709
+
710
+        for (int8_t i = 0; i < step_loops; i++) {
709
           advance += advance_rate;
711
           advance += advance_rate;
710
         }
712
         }
711
         //if (advance > current_block->advance) advance = current_block->advance;
713
         //if (advance > current_block->advance) advance = current_block->advance;
712
         // Do E steps + advance steps
714
         // Do E steps + advance steps
713
-        e_steps[current_block->active_extruder] += ((advance >>8) - old_advance);
714
-        old_advance = advance >>8;
715
+        e_steps[current_block->active_extruder] += ((advance >> 8) - old_advance);
716
+        old_advance = advance >> 8;
715
 
717
 
716
-      #endif
718
+      #endif //ADVANCE
717
     }
719
     }
718
     else if (step_events_completed > (unsigned long)current_block->decelerate_after) {
720
     else if (step_events_completed > (unsigned long)current_block->decelerate_after) {
719
       MultiU24X32toH16(step_rate, deceleration_time, current_block->acceleration_rate);
721
       MultiU24X32toH16(step_rate, deceleration_time, current_block->acceleration_rate);
734
       OCR1A = timer;
736
       OCR1A = timer;
735
       deceleration_time += timer;
737
       deceleration_time += timer;
736
       #if ENABLED(ADVANCE)
738
       #if ENABLED(ADVANCE)
737
-        for(int8_t i=0; i < step_loops; i++) {
739
+        for (int8_t i = 0; i < step_loops; i++) {
738
           advance -= advance_rate;
740
           advance -= advance_rate;
739
         }
741
         }
740
         if (advance < final_advance) advance = final_advance;
742
         if (advance < final_advance) advance = final_advance;
741
         // Do E steps + advance steps
743
         // Do E steps + advance steps
742
-        e_steps[current_block->active_extruder] += ((advance >>8) - old_advance);
743
-        old_advance = advance >>8;
744
+        e_steps[current_block->active_extruder] += ((advance >> 8) - old_advance);
745
+        old_advance = advance >> 8;
744
       #endif //ADVANCE
746
       #endif //ADVANCE
745
     }
747
     }
746
     else {
748
     else {
749
       step_loops = step_loops_nominal;
751
       step_loops = step_loops_nominal;
750
     }
752
     }
751
 
753
 
752
-    OCR1A = (OCR1A < (TCNT1 +16)) ? (TCNT1 + 16) : OCR1A;
754
+    OCR1A = (OCR1A < (TCNT1 + 16)) ? (TCNT1 + 16) : OCR1A;
753
 
755
 
754
     // If current block is finished, reset pointer
756
     // If current block is finished, reset pointer
755
     if (step_events_completed >= current_block->step_event_count) {
757
     if (step_events_completed >= current_block->step_event_count) {
763
   unsigned char old_OCR0A;
765
   unsigned char old_OCR0A;
764
   // Timer interrupt for E. e_steps is set in the main routine;
766
   // Timer interrupt for E. e_steps is set in the main routine;
765
   // Timer 0 is shared with millies
767
   // Timer 0 is shared with millies
766
-  ISR(TIMER0_COMPA_vect)
767
-  {
768
+  ISR(TIMER0_COMPA_vect) {
768
     old_OCR0A += 52; // ~10kHz interrupt (250000 / 26 = 9615kHz)
769
     old_OCR0A += 52; // ~10kHz interrupt (250000 / 26 = 9615kHz)
769
     OCR0A = old_OCR0A;
770
     OCR0A = old_OCR0A;
770
     // Set E direction (Depends on E direction + advance)
771
     // Set E direction (Depends on E direction + advance)
771
-    for(unsigned char i=0; i<4;i++) {
772
+    for (unsigned char i = 0; i < 4; i++) {
772
       if (e_steps[0] != 0) {
773
       if (e_steps[0] != 0) {
773
         E0_STEP_WRITE(INVERT_E_STEP_PIN);
774
         E0_STEP_WRITE(INVERT_E_STEP_PIN);
774
         if (e_steps[0] < 0) {
775
         if (e_steps[0] < 0) {
782
           E0_STEP_WRITE(!INVERT_E_STEP_PIN);
783
           E0_STEP_WRITE(!INVERT_E_STEP_PIN);
783
         }
784
         }
784
       }
785
       }
785
- #if EXTRUDERS > 1
786
-      if (e_steps[1] != 0) {
787
-        E1_STEP_WRITE(INVERT_E_STEP_PIN);
788
-        if (e_steps[1] < 0) {
789
-          E1_DIR_WRITE(INVERT_E1_DIR);
790
-          e_steps[1]++;
791
-          E1_STEP_WRITE(!INVERT_E_STEP_PIN);
792
-        }
793
-        else if (e_steps[1] > 0) {
794
-          E1_DIR_WRITE(!INVERT_E1_DIR);
795
-          e_steps[1]--;
796
-          E1_STEP_WRITE(!INVERT_E_STEP_PIN);
797
-        }
798
-      }
799
- #endif
800
- #if EXTRUDERS > 2
801
-      if (e_steps[2] != 0) {
802
-        E2_STEP_WRITE(INVERT_E_STEP_PIN);
803
-        if (e_steps[2] < 0) {
804
-          E2_DIR_WRITE(INVERT_E2_DIR);
805
-          e_steps[2]++;
806
-          E2_STEP_WRITE(!INVERT_E_STEP_PIN);
807
-        }
808
-        else if (e_steps[2] > 0) {
809
-          E2_DIR_WRITE(!INVERT_E2_DIR);
810
-          e_steps[2]--;
811
-          E2_STEP_WRITE(!INVERT_E_STEP_PIN);
786
+      #if EXTRUDERS > 1
787
+        if (e_steps[1] != 0) {
788
+          E1_STEP_WRITE(INVERT_E_STEP_PIN);
789
+          if (e_steps[1] < 0) {
790
+            E1_DIR_WRITE(INVERT_E1_DIR);
791
+            e_steps[1]++;
792
+            E1_STEP_WRITE(!INVERT_E_STEP_PIN);
793
+          }
794
+          else if (e_steps[1] > 0) {
795
+            E1_DIR_WRITE(!INVERT_E1_DIR);
796
+            e_steps[1]--;
797
+            E1_STEP_WRITE(!INVERT_E_STEP_PIN);
798
+          }
812
         }
799
         }
813
-      }
814
- #endif
815
- #if EXTRUDERS > 3
816
-      if (e_steps[3] != 0) {
817
-        E3_STEP_WRITE(INVERT_E_STEP_PIN);
818
-        if (e_steps[3] < 0) {
819
-          E3_DIR_WRITE(INVERT_E3_DIR);
820
-          e_steps[3]++;
821
-          E3_STEP_WRITE(!INVERT_E_STEP_PIN);
800
+      #endif
801
+      #if EXTRUDERS > 2
802
+        if (e_steps[2] != 0) {
803
+          E2_STEP_WRITE(INVERT_E_STEP_PIN);
804
+          if (e_steps[2] < 0) {
805
+            E2_DIR_WRITE(INVERT_E2_DIR);
806
+            e_steps[2]++;
807
+            E2_STEP_WRITE(!INVERT_E_STEP_PIN);
808
+          }
809
+          else if (e_steps[2] > 0) {
810
+            E2_DIR_WRITE(!INVERT_E2_DIR);
811
+            e_steps[2]--;
812
+            E2_STEP_WRITE(!INVERT_E_STEP_PIN);
813
+          }
822
         }
814
         }
823
-        else if (e_steps[3] > 0) {
824
-          E3_DIR_WRITE(!INVERT_E3_DIR);
825
-          e_steps[3]--;
826
-          E3_STEP_WRITE(!INVERT_E_STEP_PIN);
815
+      #endif
816
+      #if EXTRUDERS > 3
817
+        if (e_steps[3] != 0) {
818
+          E3_STEP_WRITE(INVERT_E_STEP_PIN);
819
+          if (e_steps[3] < 0) {
820
+            E3_DIR_WRITE(INVERT_E3_DIR);
821
+            e_steps[3]++;
822
+            E3_STEP_WRITE(!INVERT_E_STEP_PIN);
823
+          }
824
+          else if (e_steps[3] > 0) {
825
+            E3_DIR_WRITE(!INVERT_E3_DIR);
826
+            e_steps[3]--;
827
+            E3_STEP_WRITE(!INVERT_E_STEP_PIN);
828
+          }
827
         }
829
         }
828
-      }
829
- #endif
830
-
830
+      #endif
831
     }
831
     }
832
   }
832
   }
833
 #endif // ADVANCE
833
 #endif // ADVANCE
1032
   TCCR1A &= ~BIT(WGM10);
1032
   TCCR1A &= ~BIT(WGM10);
1033
 
1033
 
1034
   // output mode = 00 (disconnected)
1034
   // output mode = 00 (disconnected)
1035
-  TCCR1A &= ~(3<<COM1A0);
1036
-  TCCR1A &= ~(3<<COM1B0);
1037
-
1035
+  TCCR1A &= ~(3 << COM1A0);
1036
+  TCCR1A &= ~(3 << COM1B0);
1038
   // Set the timer pre-scaler
1037
   // Set the timer pre-scaler
1039
   // Generally we use a divider of 8, resulting in a 2MHz timer
1038
   // Generally we use a divider of 8, resulting in a 2MHz timer
1040
   // frequency on a 16MHz MCU. If you are going to change this, be
1039
   // frequency on a 16MHz MCU. If you are going to change this, be
1041
   // sure to regenerate speed_lookuptable.h with
1040
   // sure to regenerate speed_lookuptable.h with
1042
   // create_speed_lookuptable.py
1041
   // create_speed_lookuptable.py
1043
-  TCCR1B = (TCCR1B & ~(0x07<<CS10)) | (2<<CS10);
1042
+  TCCR1B = (TCCR1B & ~(0x07 << CS10)) | (2 << CS10);
1044
 
1043
 
1045
   OCR1A = 0x4000;
1044
   OCR1A = 0x4000;
1046
   TCNT1 = 0;
1045
   TCNT1 = 0;
1057
 
1056
 
1058
   enable_endstops(true); // Start with endstops active. After homing they can be disabled
1057
   enable_endstops(true); // Start with endstops active. After homing they can be disabled
1059
   sei();
1058
   sei();
1060
-  
1059
+
1061
   set_stepper_direction(); // Init directions to out_bits = 0
1060
   set_stepper_direction(); // Init directions to out_bits = 0
1062
 }
1061
 }
1063
 
1062
 
1067
  */
1066
  */
1068
 void st_synchronize() { while (blocks_queued()) idle(); }
1067
 void st_synchronize() { while (blocks_queued()) idle(); }
1069
 
1068
 
1070
-void st_set_position(const long &x, const long &y, const long &z, const long &e) {
1069
+void st_set_position(const long& x, const long& y, const long& z, const long& e) {
1071
   CRITICAL_SECTION_START;
1070
   CRITICAL_SECTION_START;
1072
   count_position[X_AXIS] = x;
1071
   count_position[X_AXIS] = x;
1073
   count_position[Y_AXIS] = y;
1072
   count_position[Y_AXIS] = y;
1076
   CRITICAL_SECTION_END;
1075
   CRITICAL_SECTION_END;
1077
 }
1076
 }
1078
 
1077
 
1079
-void st_set_e_position(const long &e) {
1078
+void st_set_e_position(const long& e) {
1080
   CRITICAL_SECTION_START;
1079
   CRITICAL_SECTION_START;
1081
   count_position[E_AXIS] = e;
1080
   count_position[E_AXIS] = e;
1082
   CRITICAL_SECTION_END;
1081
   CRITICAL_SECTION_END;
1126
         _APPLY_DIR(AXIS, old_pin); \
1125
         _APPLY_DIR(AXIS, old_pin); \
1127
       }
1126
       }
1128
 
1127
 
1129
-    switch(axis) {
1128
+    switch (axis) {
1130
 
1129
 
1131
       case X_AXIS:
1130
       case X_AXIS:
1132
         BABYSTEP_AXIS(x, X, false);
1131
         BABYSTEP_AXIS(x, X, false);
1135
       case Y_AXIS:
1134
       case Y_AXIS:
1136
         BABYSTEP_AXIS(y, Y, false);
1135
         BABYSTEP_AXIS(y, Y, false);
1137
         break;
1136
         break;
1138
- 
1137
+
1139
       case Z_AXIS: {
1138
       case Z_AXIS: {
1140
 
1139
 
1141
         #if DISABLED(DELTA)
1140
         #if DISABLED(DELTA)
1153
                   old_y_dir_pin = Y_DIR_READ,
1152
                   old_y_dir_pin = Y_DIR_READ,
1154
                   old_z_dir_pin = Z_DIR_READ;
1153
                   old_z_dir_pin = Z_DIR_READ;
1155
           //setup new step
1154
           //setup new step
1156
-          X_DIR_WRITE(INVERT_X_DIR^z_direction);
1157
-          Y_DIR_WRITE(INVERT_Y_DIR^z_direction);
1158
-          Z_DIR_WRITE(INVERT_Z_DIR^z_direction);
1159
-          //perform step 
1155
+          X_DIR_WRITE(INVERT_X_DIR ^ z_direction);
1156
+          Y_DIR_WRITE(INVERT_Y_DIR ^ z_direction);
1157
+          Z_DIR_WRITE(INVERT_Z_DIR ^ z_direction);
1158
+          //perform step
1160
           X_STEP_WRITE(!INVERT_X_STEP_PIN);
1159
           X_STEP_WRITE(!INVERT_X_STEP_PIN);
1161
           Y_STEP_WRITE(!INVERT_Y_STEP_PIN);
1160
           Y_STEP_WRITE(!INVERT_Y_STEP_PIN);
1162
           Z_STEP_WRITE(!INVERT_Z_STEP_PIN);
1161
           Z_STEP_WRITE(!INVERT_Z_STEP_PIN);
1163
           delayMicroseconds(2);
1162
           delayMicroseconds(2);
1164
-          X_STEP_WRITE(INVERT_X_STEP_PIN); 
1165
-          Y_STEP_WRITE(INVERT_Y_STEP_PIN); 
1163
+          X_STEP_WRITE(INVERT_X_STEP_PIN);
1164
+          Y_STEP_WRITE(INVERT_Y_STEP_PIN);
1166
           Z_STEP_WRITE(INVERT_Z_STEP_PIN);
1165
           Z_STEP_WRITE(INVERT_Z_STEP_PIN);
1167
           //get old pin state back.
1166
           //get old pin state back.
1168
           X_DIR_WRITE(old_x_dir_pin);
1167
           X_DIR_WRITE(old_x_dir_pin);
1172
         #endif
1171
         #endif
1173
 
1172
 
1174
       } break;
1173
       } break;
1175
- 
1174
+
1176
       default: break;
1175
       default: break;
1177
     }
1176
     }
1178
   }
1177
   }
1182
 // From Arduino DigitalPotControl example
1181
 // From Arduino DigitalPotControl example
1183
 void digitalPotWrite(int address, int value) {
1182
 void digitalPotWrite(int address, int value) {
1184
   #if HAS_DIGIPOTSS
1183
   #if HAS_DIGIPOTSS
1185
-    digitalWrite(DIGIPOTSS_PIN,LOW); // take the SS pin low to select the chip
1184
+    digitalWrite(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip
1186
     SPI.transfer(address); //  send in the address and value via SPI:
1185
     SPI.transfer(address); //  send in the address and value via SPI:
1187
     SPI.transfer(value);
1186
     SPI.transfer(value);
1188
-    digitalWrite(DIGIPOTSS_PIN,HIGH); // take the SS pin high to de-select the chip:
1187
+    digitalWrite(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip:
1189
     //delay(10);
1188
     //delay(10);
1190
   #else
1189
   #else
1191
     UNUSED(address);
1190
     UNUSED(address);
1202
     pinMode(DIGIPOTSS_PIN, OUTPUT);
1201
     pinMode(DIGIPOTSS_PIN, OUTPUT);
1203
     for (int i = 0; i <= 4; i++) {
1202
     for (int i = 0; i <= 4; i++) {
1204
       //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]);
1203
       //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]);
1205
-      digipot_current(i,digipot_motor_current[i]);
1204
+      digipot_current(i, digipot_motor_current[i]);
1206
     }
1205
     }
1207
   #endif
1206
   #endif
1208
   #ifdef MOTOR_CURRENT_PWM_XY_PIN
1207
   #ifdef MOTOR_CURRENT_PWM_XY_PIN
1222
     const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
1221
     const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
1223
     digitalPotWrite(digipot_ch[driver], current);
1222
     digitalPotWrite(digipot_ch[driver], current);
1224
   #elif defined(MOTOR_CURRENT_PWM_XY_PIN)
1223
   #elif defined(MOTOR_CURRENT_PWM_XY_PIN)
1225
-    switch(driver) {
1224
+    switch (driver) {
1226
       case 0: analogWrite(MOTOR_CURRENT_PWM_XY_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1225
       case 0: analogWrite(MOTOR_CURRENT_PWM_XY_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1227
       case 1: analogWrite(MOTOR_CURRENT_PWM_Z_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1226
       case 1: analogWrite(MOTOR_CURRENT_PWM_Z_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1228
       case 2: analogWrite(MOTOR_CURRENT_PWM_E_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1227
       case 2: analogWrite(MOTOR_CURRENT_PWM_E_PIN, 255L * current / MOTOR_CURRENT_PWM_RANGE); break;
1235
 
1234
 
1236
 void microstep_init() {
1235
 void microstep_init() {
1237
   #if HAS_MICROSTEPS_E1
1236
   #if HAS_MICROSTEPS_E1
1238
-    pinMode(E1_MS1_PIN,OUTPUT);
1239
-    pinMode(E1_MS2_PIN,OUTPUT);
1237
+    pinMode(E1_MS1_PIN, OUTPUT);
1238
+    pinMode(E1_MS2_PIN, OUTPUT);
1240
   #endif
1239
   #endif
1241
 
1240
 
1242
   #if HAS_MICROSTEPS
1241
   #if HAS_MICROSTEPS
1243
-    pinMode(X_MS1_PIN,OUTPUT);
1244
-    pinMode(X_MS2_PIN,OUTPUT);
1245
-    pinMode(Y_MS1_PIN,OUTPUT);
1246
-    pinMode(Y_MS2_PIN,OUTPUT);
1247
-    pinMode(Z_MS1_PIN,OUTPUT);
1248
-    pinMode(Z_MS2_PIN,OUTPUT);
1249
-    pinMode(E0_MS1_PIN,OUTPUT);
1250
-    pinMode(E0_MS2_PIN,OUTPUT);
1242
+    pinMode(X_MS1_PIN, OUTPUT);
1243
+    pinMode(X_MS2_PIN, OUTPUT);
1244
+    pinMode(Y_MS1_PIN, OUTPUT);
1245
+    pinMode(Y_MS2_PIN, OUTPUT);
1246
+    pinMode(Z_MS1_PIN, OUTPUT);
1247
+    pinMode(Z_MS2_PIN, OUTPUT);
1248
+    pinMode(E0_MS1_PIN, OUTPUT);
1249
+    pinMode(E0_MS2_PIN, OUTPUT);
1251
     const uint8_t microstep_modes[] = MICROSTEP_MODES;
1250
     const uint8_t microstep_modes[] = MICROSTEP_MODES;
1252
     for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
1251
     for (uint16_t i = 0; i < COUNT(microstep_modes); i++)
1253
       microstep_mode(i, microstep_modes[i]);
1252
       microstep_mode(i, microstep_modes[i]);
1255
 }
1254
 }
1256
 
1255
 
1257
 void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) {
1256
 void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) {
1258
-  if (ms1 >= 0) switch(driver) {
1257
+  if (ms1 >= 0) switch (driver) {
1259
     case 0: digitalWrite(X_MS1_PIN, ms1); break;
1258
     case 0: digitalWrite(X_MS1_PIN, ms1); break;
1260
     case 1: digitalWrite(Y_MS1_PIN, ms1); break;
1259
     case 1: digitalWrite(Y_MS1_PIN, ms1); break;
1261
     case 2: digitalWrite(Z_MS1_PIN, ms1); break;
1260
     case 2: digitalWrite(Z_MS1_PIN, ms1); break;
1264
       case 4: digitalWrite(E1_MS1_PIN, ms1); break;
1263
       case 4: digitalWrite(E1_MS1_PIN, ms1); break;
1265
     #endif
1264
     #endif
1266
   }
1265
   }
1267
-  if (ms2 >= 0) switch(driver) {
1266
+  if (ms2 >= 0) switch (driver) {
1268
     case 0: digitalWrite(X_MS2_PIN, ms2); break;
1267
     case 0: digitalWrite(X_MS2_PIN, ms2); break;
1269
     case 1: digitalWrite(Y_MS2_PIN, ms2); break;
1268
     case 1: digitalWrite(Y_MS2_PIN, ms2); break;
1270
     case 2: digitalWrite(Z_MS2_PIN, ms2); break;
1269
     case 2: digitalWrite(Z_MS2_PIN, ms2); break;
1276
 }
1275
 }
1277
 
1276
 
1278
 void microstep_mode(uint8_t driver, uint8_t stepping_mode) {
1277
 void microstep_mode(uint8_t driver, uint8_t stepping_mode) {
1279
-  switch(stepping_mode) {
1280
-    case 1: microstep_ms(driver,MICROSTEP1); break;
1281
-    case 2: microstep_ms(driver,MICROSTEP2); break;
1282
-    case 4: microstep_ms(driver,MICROSTEP4); break;
1283
-    case 8: microstep_ms(driver,MICROSTEP8); break;
1284
-    case 16: microstep_ms(driver,MICROSTEP16); break;
1278
+  switch (stepping_mode) {
1279
+    case 1: microstep_ms(driver, MICROSTEP1); break;
1280
+    case 2: microstep_ms(driver, MICROSTEP2); break;
1281
+    case 4: microstep_ms(driver, MICROSTEP4); break;
1282
+    case 8: microstep_ms(driver, MICROSTEP8); break;
1283
+    case 16: microstep_ms(driver, MICROSTEP16); break;
1285
   }
1284
   }
1286
 }
1285
 }
1287
 
1286
 

+ 8
- 8
Marlin/stepper.h Переглянути файл

19
 */
19
 */
20
 
20
 
21
 #ifndef stepper_h
21
 #ifndef stepper_h
22
-#define stepper_h 
22
+#define stepper_h
23
 
23
 
24
 #include "planner.h"
24
 #include "planner.h"
25
 #include "stepper_indirection.h"
25
 #include "stepper_indirection.h"
42
     #define E_STEP_WRITE(v) { if(extruder_duplication_enabled) { E0_STEP_WRITE(v); E1_STEP_WRITE(v); } else if(current_block->active_extruder == 1) { E1_STEP_WRITE(v); } else { E0_STEP_WRITE(v); }}
42
     #define E_STEP_WRITE(v) { if(extruder_duplication_enabled) { E0_STEP_WRITE(v); E1_STEP_WRITE(v); } else if(current_block->active_extruder == 1) { E1_STEP_WRITE(v); } else { E0_STEP_WRITE(v); }}
43
     #define NORM_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { E1_DIR_WRITE(!INVERT_E1_DIR); } else { E0_DIR_WRITE(!INVERT_E0_DIR); }}
43
     #define NORM_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { E1_DIR_WRITE(!INVERT_E1_DIR); } else { E0_DIR_WRITE(!INVERT_E0_DIR); }}
44
     #define REV_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE(INVERT_E0_DIR); E1_DIR_WRITE(INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { E1_DIR_WRITE(INVERT_E1_DIR); } else { E0_DIR_WRITE(INVERT_E0_DIR); }}
44
     #define REV_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE(INVERT_E0_DIR); E1_DIR_WRITE(INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { E1_DIR_WRITE(INVERT_E1_DIR); } else { E0_DIR_WRITE(INVERT_E0_DIR); }}
45
-  #endif  
45
+  #endif
46
 #else
46
 #else
47
   #define E_STEP_WRITE(v) E0_STEP_WRITE(v)
47
   #define E_STEP_WRITE(v) E0_STEP_WRITE(v)
48
   #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
48
   #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
60
 void st_synchronize();
60
 void st_synchronize();
61
 
61
 
62
 // Set current position in steps
62
 // Set current position in steps
63
-void st_set_position(const long &x, const long &y, const long &z, const long &e);
64
-void st_set_e_position(const long &e);
63
+void st_set_position(const long& x, const long& y, const long& z, const long& e);
64
+void st_set_e_position(const long& e);
65
 
65
 
66
 // Get current position in steps
66
 // Get current position in steps
67
 long st_get_position(uint8_t axis);
67
 long st_get_position(uint8_t axis);
73
 // to notify the subsystem that it is time to go to work.
73
 // to notify the subsystem that it is time to go to work.
74
 void st_wake_up();
74
 void st_wake_up();
75
 
75
 
76
-  
76
+
77
 void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
77
 void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
78
 void endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
78
 void endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
79
 
79
 
83
 
83
 
84
 void finishAndDisableSteppers();
84
 void finishAndDisableSteppers();
85
 
85
 
86
-extern block_t *current_block;  // A pointer to the block currently being traced
86
+extern block_t* current_block;  // A pointer to the block currently being traced
87
 
87
 
88
 void quickStop();
88
 void quickStop();
89
 
89
 
102
 #endif
102
 #endif
103
 
103
 
104
 #if ENABLED(BABYSTEPPING)
104
 #if ENABLED(BABYSTEPPING)
105
-  void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention
105
+  void babystep(const uint8_t axis, const bool direction); // perform a short step with a single stepper motor, outside of any convention
106
 #endif
106
 #endif
107
-     
107
+
108
 #endif
108
 #endif

+ 97
- 99
Marlin/stepper_indirection.cpp Переглянути файл

1
 /*
1
 /*
2
-  stepper_indirection.c - stepper motor driver indirection 
2
+  stepper_indirection.c - stepper motor driver indirection
3
   to allow some stepper functions to be done via SPI/I2c instead of direct pin manipulation
3
   to allow some stepper functions to be done via SPI/I2c instead of direct pin manipulation
4
   Part of Marlin
4
   Part of Marlin
5
 
5
 
29
 
29
 
30
 // Stepper objects of TMC steppers used
30
 // Stepper objects of TMC steppers used
31
 #if ENABLED(X_IS_TMC)
31
 #if ENABLED(X_IS_TMC)
32
-	TMC26XStepper stepperX(200,X_ENABLE_PIN,X_STEP_PIN,X_DIR_PIN,X_MAX_CURRENT,X_SENSE_RESISTOR);
32
+  TMC26XStepper stepperX(200, X_ENABLE_PIN, X_STEP_PIN, X_DIR_PIN, X_MAX_CURRENT, X_SENSE_RESISTOR);
33
 #endif
33
 #endif
34
 #if ENABLED(X2_IS_TMC)
34
 #if ENABLED(X2_IS_TMC)
35
-	TMC26XStepper stepperX2(200,X2_ENABLE_PIN,X2_STEP_PIN,X2_DIR_PIN,X2_MAX_CURRENT,X2_SENSE_RESISTOR);
35
+  TMC26XStepper stepperX2(200, X2_ENABLE_PIN, X2_STEP_PIN, X2_DIR_PIN, X2_MAX_CURRENT, X2_SENSE_RESISTOR);
36
 #endif
36
 #endif
37
 #if ENABLED(Y_IS_TMC)
37
 #if ENABLED(Y_IS_TMC)
38
-	TMC26XStepper stepperY(200,Y_ENABLE_PIN,Y_STEP_PIN,Y_DIR_PIN,Y_MAX_CURRENT,Y_SENSE_RESISTOR);
38
+  TMC26XStepper stepperY(200, Y_ENABLE_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_MAX_CURRENT, Y_SENSE_RESISTOR);
39
 #endif
39
 #endif
40
 #if ENABLED(Y2_IS_TMC)
40
 #if ENABLED(Y2_IS_TMC)
41
-	TMC26XStepper stepperY2(200,Y2_ENABLE_PIN,Y2_STEP_PIN,Y2_DIR_PIN,Y2_MAX_CURRENT,Y2_SENSE_RESISTOR);
41
+  TMC26XStepper stepperY2(200, Y2_ENABLE_PIN, Y2_STEP_PIN, Y2_DIR_PIN, Y2_MAX_CURRENT, Y2_SENSE_RESISTOR);
42
 #endif
42
 #endif
43
 #if ENABLED(Z_IS_TMC)
43
 #if ENABLED(Z_IS_TMC)
44
-	TMC26XStepper stepperZ(200,Z_ENABLE_PIN,Z_STEP_PIN,Z_DIR_PIN,Z_MAX_CURRENT,Z_SENSE_RESISTOR);
44
+  TMC26XStepper stepperZ(200, Z_ENABLE_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_MAX_CURRENT, Z_SENSE_RESISTOR);
45
 #endif
45
 #endif
46
 #if ENABLED(Z2_IS_TMC)
46
 #if ENABLED(Z2_IS_TMC)
47
-	TMC26XStepper stepperZ2(200,Z2_ENABLE_PIN,Z2_STEP_PIN,Z2_DIR_PIN,Z2_MAX_CURRENT,Z2_SENSE_RESISTOR);
47
+  TMC26XStepper stepperZ2(200, Z2_ENABLE_PIN, Z2_STEP_PIN, Z2_DIR_PIN, Z2_MAX_CURRENT, Z2_SENSE_RESISTOR);
48
 #endif
48
 #endif
49
 #if ENABLED(E0_IS_TMC)
49
 #if ENABLED(E0_IS_TMC)
50
-	TMC26XStepper stepperE0(200,E0_ENABLE_PIN,E0_STEP_PIN,E0_DIR_PIN,E0_MAX_CURRENT,E0_SENSE_RESISTOR);
50
+  TMC26XStepper stepperE0(200, E0_ENABLE_PIN, E0_STEP_PIN, E0_DIR_PIN, E0_MAX_CURRENT, E0_SENSE_RESISTOR);
51
 #endif
51
 #endif
52
 #if ENABLED(E1_IS_TMC)
52
 #if ENABLED(E1_IS_TMC)
53
-	TMC26XStepper stepperE1(200,E1_ENABLE_PIN,E1_STEP_PIN,E1_DIR_PIN,E1_MAX_CURRENT,E1_SENSE_RESISTOR);
53
+  TMC26XStepper stepperE1(200, E1_ENABLE_PIN, E1_STEP_PIN, E1_DIR_PIN, E1_MAX_CURRENT, E1_SENSE_RESISTOR);
54
 #endif
54
 #endif
55
 #if ENABLED(E2_IS_TMC)
55
 #if ENABLED(E2_IS_TMC)
56
-	TMC26XStepper stepperE2(200,E2_ENABLE_PIN,E2_STEP_PIN,E2_DIR_PIN,E2_MAX_CURRENT,E2_SENSE_RESISTOR);
56
+  TMC26XStepper stepperE2(200, E2_ENABLE_PIN, E2_STEP_PIN, E2_DIR_PIN, E2_MAX_CURRENT, E2_SENSE_RESISTOR);
57
 #endif
57
 #endif
58
 #if ENABLED(E3_IS_TMC)
58
 #if ENABLED(E3_IS_TMC)
59
-	TMC26XStepper stepperE3(200,E3_ENABLE_PIN,E3_STEP_PIN,E3_DIR_PIN,E3_MAX_CURRENT,E3_SENSE_RESISTOR);
60
-#endif	
59
+  TMC26XStepper stepperE3(200, E3_ENABLE_PIN, E3_STEP_PIN, E3_DIR_PIN, E3_MAX_CURRENT, E3_SENSE_RESISTOR);
60
+#endif
61
 
61
 
62
 #if ENABLED(HAVE_TMCDRIVER)
62
 #if ENABLED(HAVE_TMCDRIVER)
63
-void tmc_init()
64
-{
63
+void tmc_init() {
65
   #if ENABLED(X_IS_TMC)
64
   #if ENABLED(X_IS_TMC)
66
-	stepperX.setMicrosteps(X_MICROSTEPS);
67
-	stepperX.start();
65
+    stepperX.setMicrosteps(X_MICROSTEPS);
66
+    stepperX.start();
68
   #endif
67
   #endif
69
   #if ENABLED(X2_IS_TMC)
68
   #if ENABLED(X2_IS_TMC)
70
-	stepperX2.setMicrosteps(X2_MICROSTEPS);
71
-	stepperX2.start();
69
+    stepperX2.setMicrosteps(X2_MICROSTEPS);
70
+    stepperX2.start();
72
   #endif
71
   #endif
73
   #if ENABLED(Y_IS_TMC)
72
   #if ENABLED(Y_IS_TMC)
74
-	stepperY.setMicrosteps(Y_MICROSTEPS);
75
-	stepperY.start();
73
+    stepperY.setMicrosteps(Y_MICROSTEPS);
74
+    stepperY.start();
76
   #endif
75
   #endif
77
   #if ENABLED(Y2_IS_TMC)
76
   #if ENABLED(Y2_IS_TMC)
78
-	stepperY2.setMicrosteps(Y2_MICROSTEPS);
79
-	stepperY2.start();
77
+    stepperY2.setMicrosteps(Y2_MICROSTEPS);
78
+    stepperY2.start();
80
   #endif
79
   #endif
81
   #if ENABLED(Z_IS_TMC)
80
   #if ENABLED(Z_IS_TMC)
82
-	stepperZ.setMicrosteps(Z_MICROSTEPS);
83
-	stepperZ.start();
81
+    stepperZ.setMicrosteps(Z_MICROSTEPS);
82
+    stepperZ.start();
84
   #endif
83
   #endif
85
   #if ENABLED(Z2_IS_TMC)
84
   #if ENABLED(Z2_IS_TMC)
86
-	stepperZ2.setMicrosteps(Z2_MICROSTEPS);
87
-	stepperZ2.start();
85
+    stepperZ2.setMicrosteps(Z2_MICROSTEPS);
86
+    stepperZ2.start();
88
   #endif
87
   #endif
89
   #if ENABLED(E0_IS_TMC)
88
   #if ENABLED(E0_IS_TMC)
90
-	stepperE0.setMicrosteps(E0_MICROSTEPS);
91
-	stepperE0.start();
89
+    stepperE0.setMicrosteps(E0_MICROSTEPS);
90
+    stepperE0.start();
92
   #endif
91
   #endif
93
   #if ENABLED(E1_IS_TMC)
92
   #if ENABLED(E1_IS_TMC)
94
-	stepperE1.setMicrosteps(E1_MICROSTEPS);
95
-	stepperE1.start();
93
+    stepperE1.setMicrosteps(E1_MICROSTEPS);
94
+    stepperE1.start();
96
   #endif
95
   #endif
97
   #if ENABLED(E2_IS_TMC)
96
   #if ENABLED(E2_IS_TMC)
98
-	stepperE2.setMicrosteps(E2_MICROSTEPS);
99
-	stepperE2.start();
97
+    stepperE2.setMicrosteps(E2_MICROSTEPS);
98
+    stepperE2.start();
100
   #endif
99
   #endif
101
   #if ENABLED(E3_IS_TMC)
100
   #if ENABLED(E3_IS_TMC)
102
-	stepperE3.setMicrosteps(E3_MICROSTEPS);
103
-	stepperE3.start();
101
+    stepperE3.setMicrosteps(E3_MICROSTEPS);
102
+    stepperE3.start();
104
   #endif
103
   #endif
105
 }
104
 }
106
 #endif
105
 #endif
108
 // L6470 Driver objects and inits
107
 // L6470 Driver objects and inits
109
 
108
 
110
 #if ENABLED(HAVE_L6470DRIVER)
109
 #if ENABLED(HAVE_L6470DRIVER)
111
-#include <SPI.h>
112
-#include <L6470.h>
110
+  #include <SPI.h>
111
+  #include <L6470.h>
113
 #endif
112
 #endif
114
 
113
 
115
 // L6470 Stepper objects
114
 // L6470 Stepper objects
116
-  #if ENABLED(X_IS_L6470)
117
-	L6470 stepperX(X_ENABLE_PIN);
118
-  #endif
119
-  #if ENABLED(X2_IS_L6470)
120
-	L6470 stepperX2(X2_ENABLE_PIN);
121
-  #endif
122
-  #if ENABLED(Y_IS_L6470)
123
-	L6470 stepperY(Y_ENABLE_PIN);
124
-  #endif
125
-  #if ENABLED(Y2_IS_L6470)
126
-	L6470 stepperY2(Y2_ENABLE_PIN);
127
-  #endif
128
-  #if ENABLED(Z_IS_L6470)
129
-	L6470 stepperZ(Z_ENABLE_PIN);
130
-  #endif
131
-  #if ENABLED(Z2_IS_L6470)
132
-	L6470 stepperZ2(Z2_ENABLE_PIN);
133
-  #endif
134
-  #if ENABLED(E0_IS_L6470)
135
-	L6470 stepperE0(E0_ENABLE_PIN);
136
-  #endif
137
-  #if ENABLED(E1_IS_L6470)
138
-	L6470 stepperE1(E1_ENABLE_PIN);
139
-  #endif
140
-  #if ENABLED(E2_IS_L6470)
141
-	L6470 stepperE2(E2_ENABLE_PIN);
142
-  #endif
143
-  #if ENABLED(E3_IS_L6470)
144
-	L6470 stepperE3(E3_ENABLE_PIN);
145
-  #endif	
115
+#if ENABLED(X_IS_L6470)
116
+  L6470 stepperX(X_ENABLE_PIN);
117
+#endif
118
+#if ENABLED(X2_IS_L6470)
119
+  L6470 stepperX2(X2_ENABLE_PIN);
120
+#endif
121
+#if ENABLED(Y_IS_L6470)
122
+  L6470 stepperY(Y_ENABLE_PIN);
123
+#endif
124
+#if ENABLED(Y2_IS_L6470)
125
+  L6470 stepperY2(Y2_ENABLE_PIN);
126
+#endif
127
+#if ENABLED(Z_IS_L6470)
128
+  L6470 stepperZ(Z_ENABLE_PIN);
129
+#endif
130
+#if ENABLED(Z2_IS_L6470)
131
+  L6470 stepperZ2(Z2_ENABLE_PIN);
132
+#endif
133
+#if ENABLED(E0_IS_L6470)
134
+  L6470 stepperE0(E0_ENABLE_PIN);
135
+#endif
136
+#if ENABLED(E1_IS_L6470)
137
+  L6470 stepperE1(E1_ENABLE_PIN);
138
+#endif
139
+#if ENABLED(E2_IS_L6470)
140
+  L6470 stepperE2(E2_ENABLE_PIN);
141
+#endif
142
+#if ENABLED(E3_IS_L6470)
143
+  L6470 stepperE3(E3_ENABLE_PIN);
144
+#endif
146
 
145
 
147
 
146
 
148
 // init routine
147
 // init routine
149
 #if ENABLED(HAVE_L6470DRIVER)
148
 #if ENABLED(HAVE_L6470DRIVER)
150
-void L6470_init()
151
-{
149
+void L6470_init() {
152
   #if ENABLED(X_IS_L6470)
150
   #if ENABLED(X_IS_L6470)
153
-	stepperX.init(X_K_VAL);
154
-	stepperX.softFree();
155
-	stepperX.setMicroSteps(X_MICROSTEPS);
151
+    stepperX.init(X_K_VAL);
152
+    stepperX.softFree();
153
+    stepperX.setMicroSteps(X_MICROSTEPS);
156
     stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection
154
     stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection
157
     stepperX.setStallCurrent(X_STALLCURRENT);
155
     stepperX.setStallCurrent(X_STALLCURRENT);
158
   #endif
156
   #endif
159
   #if ENABLED(X2_IS_L6470)
157
   #if ENABLED(X2_IS_L6470)
160
-	stepperX2.init(X2_K_VAL);
161
-	stepperX2.softFree();
162
-	stepperX2.setMicroSteps(X2_MICROSTEPS);
158
+    stepperX2.init(X2_K_VAL);
159
+    stepperX2.softFree();
160
+    stepperX2.setMicroSteps(X2_MICROSTEPS);
163
     stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection
161
     stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection
164
     stepperX2.setStallCurrent(X2_STALLCURRENT);
162
     stepperX2.setStallCurrent(X2_STALLCURRENT);
165
   #endif
163
   #endif
166
   #if ENABLED(Y_IS_L6470)
164
   #if ENABLED(Y_IS_L6470)
167
-	stepperY.init(Y_K_VAL);
168
-	stepperY.softFree();
169
-	stepperY.setMicroSteps(Y_MICROSTEPS);
165
+    stepperY.init(Y_K_VAL);
166
+    stepperY.softFree();
167
+    stepperY.setMicroSteps(Y_MICROSTEPS);
170
     stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection
168
     stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection
171
     stepperY.setStallCurrent(Y_STALLCURRENT);
169
     stepperY.setStallCurrent(Y_STALLCURRENT);
172
   #endif
170
   #endif
173
   #if ENABLED(Y2_IS_L6470)
171
   #if ENABLED(Y2_IS_L6470)
174
-	stepperY2.init(Y2_K_VAL);
175
-	stepperY2.softFree();
176
-	stepperY2.setMicroSteps(Y2_MICROSTEPS);
172
+    stepperY2.init(Y2_K_VAL);
173
+    stepperY2.softFree();
174
+    stepperY2.setMicroSteps(Y2_MICROSTEPS);
177
     stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection
175
     stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection
178
     stepperY2.setStallCurrent(Y2_STALLCURRENT);
176
     stepperY2.setStallCurrent(Y2_STALLCURRENT);
179
   #endif
177
   #endif
180
   #if ENABLED(Z_IS_L6470)
178
   #if ENABLED(Z_IS_L6470)
181
-	stepperZ.init(Z_K_VAL);
182
-	stepperZ.softFree();
183
-	stepperZ.setMicroSteps(Z_MICROSTEPS);
179
+    stepperZ.init(Z_K_VAL);
180
+    stepperZ.softFree();
181
+    stepperZ.setMicroSteps(Z_MICROSTEPS);
184
     stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection
182
     stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection
185
     stepperZ.setStallCurrent(Z_STALLCURRENT);
183
     stepperZ.setStallCurrent(Z_STALLCURRENT);
186
   #endif
184
   #endif
187
   #if ENABLED(Z2_IS_L6470)
185
   #if ENABLED(Z2_IS_L6470)
188
-	stepperZ2.init(Z2_K_VAL);
189
-	stepperZ2.softFree();
190
-	stepperZ2.setMicroSteps(Z2_MICROSTEPS);
186
+    stepperZ2.init(Z2_K_VAL);
187
+    stepperZ2.softFree();
188
+    stepperZ2.setMicroSteps(Z2_MICROSTEPS);
191
     stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection
189
     stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection
192
     stepperZ2.setStallCurrent(Z2_STALLCURRENT);
190
     stepperZ2.setStallCurrent(Z2_STALLCURRENT);
193
   #endif
191
   #endif
194
   #if ENABLED(E0_IS_L6470)
192
   #if ENABLED(E0_IS_L6470)
195
-	stepperE0.init(E0_K_VAL);
196
-	stepperE0.softFree();
197
-	stepperE0.setMicroSteps(E0_MICROSTEPS);
193
+    stepperE0.init(E0_K_VAL);
194
+    stepperE0.softFree();
195
+    stepperE0.setMicroSteps(E0_MICROSTEPS);
198
     stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection
196
     stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection
199
     stepperE0.setStallCurrent(E0_STALLCURRENT);
197
     stepperE0.setStallCurrent(E0_STALLCURRENT);
200
   #endif
198
   #endif
201
   #if ENABLED(E1_IS_L6470)
199
   #if ENABLED(E1_IS_L6470)
202
-	stepperE1.init(E1_K_VAL);
203
-	stepperE1.softFree();
204
-	stepperE1.setMicroSteps(E1_MICROSTEPS);
200
+    stepperE1.init(E1_K_VAL);
201
+    stepperE1.softFree();
202
+    stepperE1.setMicroSteps(E1_MICROSTEPS);
205
     stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection
203
     stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection
206
     stepperE1.setStallCurrent(E1_STALLCURRENT);
204
     stepperE1.setStallCurrent(E1_STALLCURRENT);
207
   #endif
205
   #endif
208
   #if ENABLED(E2_IS_L6470)
206
   #if ENABLED(E2_IS_L6470)
209
-	stepperE2.init(E2_K_VAL);
210
-	stepperE2.softFree();
211
-	stepperE2.setMicroSteps(E2_MICROSTEPS);
207
+    stepperE2.init(E2_K_VAL);
208
+    stepperE2.softFree();
209
+    stepperE2.setMicroSteps(E2_MICROSTEPS);
212
     stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection
210
     stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection
213
     stepperE2.setStallCurrent(E2_STALLCURRENT);
211
     stepperE2.setStallCurrent(E2_STALLCURRENT);
214
   #endif
212
   #endif
215
   #if ENABLED(E3_IS_L6470)
213
   #if ENABLED(E3_IS_L6470)
216
-	stepperE3.init(E3_K_VAL);
217
-	stepperE3.softFree();
218
-	stepperE3.setMicroSteps(E3_MICROSTEPS);
214
+    stepperE3.init(E3_K_VAL);
215
+    stepperE3.softFree();
216
+    stepperE3.setMicroSteps(E3_MICROSTEPS);
219
     stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection
217
     stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection
220
     stepperE3.setStallCurrent(E3_STALLCURRENT);
218
     stepperE3.setStallCurrent(E3_STALLCURRENT);
221
-  #endif	
219
+  #endif
222
 }
220
 }
223
 #endif
221
 #endif
224
 
222
 

+ 318
- 318
Marlin/stepper_indirection.h Переглянути файл

155
 #define E3_ENABLE_READ READ(E3_ENABLE_PIN)
155
 #define E3_ENABLE_READ READ(E3_ENABLE_PIN)
156
 
156
 
157
 //////////////////////////////////
157
 //////////////////////////////////
158
-// Pin redefines for TMC drivers. 
158
+// Pin redefines for TMC drivers.
159
 // TMC26X drivers have step and dir on normal pins, but everything else via SPI
159
 // TMC26X drivers have step and dir on normal pins, but everything else via SPI
160
 //////////////////////////////////
160
 //////////////////////////////////
161
 #if ENABLED(HAVE_TMCDRIVER)
161
 #if ENABLED(HAVE_TMCDRIVER)
162
-#include <SPI.h>
163
-#include <TMC26XStepper.h>
162
+  #include <SPI.h>
163
+  #include <TMC26XStepper.h>
164
 
164
 
165
   void tmc_init();
165
   void tmc_init();
166
-#if ENABLED(X_IS_TMC)
167
-   extern TMC26XStepper stepperX;
168
-   #undef X_ENABLE_INIT 
169
-   #define X_ENABLE_INIT ((void)0)
170
-   
171
-   #undef X_ENABLE_WRITE
172
-   #define X_ENABLE_WRITE(STATE) stepperX.setEnabled(STATE)
173
-   
174
-   #undef X_ENABLE_READ
175
-   #define X_ENABLE_READ stepperX.isEnabled()
176
-   
177
-#endif
178
-#if ENABLED(X2_IS_TMC)
179
-   extern TMC26XStepper stepperX2;
180
-   #undef X2_ENABLE_INIT
181
-   #define X2_ENABLE_INIT ((void)0)
182
-   
183
-   #undef X2_ENABLE_WRITE
184
-   #define X2_ENABLE_WRITE(STATE) stepperX2.setEnabled(STATE)
185
-   
186
-   #undef X2_ENABLE_READ
187
-   #define X2_ENABLE_READ stepperX2.isEnabled()   
188
-#endif
189
-#if ENABLED(Y_IS_TMC)
190
-   extern TMC26XStepper stepperY;
191
-   #undef Y_ENABLE_INIT
192
-   #define Y_ENABLE_INIT ((void)0)
193
-   
194
-   #undef Y_ENABLE_WRITE
195
-   #define Y_ENABLE_WRITE(STATE) stepperY.setEnabled(STATE)
196
-   
197
-   #undef Y_ENABLE_READ
198
-   #define Y_ENABLE_READ stepperY.isEnabled()   
199
-#endif
200
-#if ENABLED(Y2_IS_TMC)
201
-   extern TMC26XStepper stepperY2;
202
-   #undef Y2_ENABLE_INIT
203
-   #define Y2_ENABLE_INIT ((void)0)
204
-   
205
-   #undef Y2_ENABLE_WRITE
206
-   #define Y2_ENABLE_WRITE(STATE) stepperY2.setEnabled(STATE)
207
-   
208
-   #undef Y2_ENABLE_READ
209
-   #define Y2_ENABLE_READ stepperY2.isEnabled()     
210
-#endif
211
-#if ENABLED(Z_IS_TMC)
212
-   extern TMC26XStepper stepperZ;
213
-   #undef Z_ENABLE_INIT
214
-   #define Z_ENABLE_INIT ((void)0)
215
-   
216
-   #undef Z_ENABLE_WRITE
217
-   #define Z_ENABLE_WRITE(STATE) stepperZ.setEnabled(STATE)
218
-   
219
-   #undef Z_ENABLE_READ
220
-   #define Z_ENABLE_READ stepperZ.isEnabled()       
221
-#endif
222
-#if ENABLED(Z2_IS_TMC)
223
-   extern TMC26XStepper stepperZ2;
224
-   #undef Z2_ENABLE_INIT
225
-   #define Z2_ENABLE_INIT ((void)0)
226
-   
227
-   #undef Z2_ENABLE_WRITE
228
-   #define Z2_ENABLE_WRITE(STATE) stepperZ2.setEnabled(STATE)
229
-   
230
-   #undef Z2_ENABLE_READ
231
-   #define Z2_ENABLE_READ stepperZ2.isEnabled()   
232
-#endif
233
-#if ENABLED(E0_IS_TMC)
234
-   extern TMC26XStepper stepperE0;
235
-   #undef E0_ENABLE_INIT
236
-   #define E0_ENABLE_INIT ((void)0)
237
-   
238
-   #undef E0_ENABLE_WRITE
239
-   #define E0_ENABLE_WRITE(STATE) stepperE0.setEnabled(STATE)
240
-   
241
-   #undef E0_ENABLE_READ
242
-   #define E0_ENABLE_READ stepperE0.isEnabled()   
243
-#endif
244
-#if ENABLED(E1_IS_TMC)
245
-   extern TMC26XStepper stepperE1;
246
-   #undef E1_ENABLE_INIT
247
-   #define E1_ENABLE_INIT ((void)0)
248
-   
249
-   #undef E1_ENABLE_WRITE
250
-   #define E1_ENABLE_WRITE(STATE) stepperE1.setEnabled(STATE)
251
-   
252
-   #undef E1_ENABLE_READ
253
-   #define E1_ENABLE_READ stepperE1.isEnabled()   
254
-#endif
255
-#if ENABLED(E2_IS_TMC)
256
-   extern TMC26XStepper stepperE2;
257
-   #undef E2_ENABLE_INIT
258
-   #define E2_ENABLE_INIT ((void)0)
259
-   
260
-   #undef E2_ENABLE_WRITE
261
-   #define E2_ENABLE_WRITE(STATE) stepperE2.setEnabled(STATE)
262
-   
263
-   #undef E2_ENABLE_READ
264
-   #define E2_ENABLE_READ stepperE2.isEnabled()   
265
-#endif
266
-#if ENABLED(E3_IS_TMC)
267
-   extern TMC26XStepper stepperE3;
268
-   #undef E3_ENABLE_INIT
269
-   #define E3_ENABLE_INIT ((void)0)
270
-   
271
-   #undef E3_ENABLE_WRITE
272
-   #define E3_ENABLE_WRITE(STATE) stepperE3.setEnabled(STATE)
273
-   
274
-   #undef E3_ENABLE_READ
275
-   #define E3_ENABLE_READ stepperE3.isEnabled()   
276
-#endif
166
+  #if ENABLED(X_IS_TMC)
167
+    extern TMC26XStepper stepperX;
168
+    #undef X_ENABLE_INIT
169
+    #define X_ENABLE_INIT ((void)0)
170
+
171
+    #undef X_ENABLE_WRITE
172
+    #define X_ENABLE_WRITE(STATE) stepperX.setEnabled(STATE)
173
+
174
+    #undef X_ENABLE_READ
175
+    #define X_ENABLE_READ stepperX.isEnabled()
176
+
177
+  #endif
178
+  #if ENABLED(X2_IS_TMC)
179
+    extern TMC26XStepper stepperX2;
180
+    #undef X2_ENABLE_INIT
181
+    #define X2_ENABLE_INIT ((void)0)
182
+
183
+    #undef X2_ENABLE_WRITE
184
+    #define X2_ENABLE_WRITE(STATE) stepperX2.setEnabled(STATE)
185
+
186
+    #undef X2_ENABLE_READ
187
+    #define X2_ENABLE_READ stepperX2.isEnabled()
188
+  #endif
189
+  #if ENABLED(Y_IS_TMC)
190
+    extern TMC26XStepper stepperY;
191
+    #undef Y_ENABLE_INIT
192
+    #define Y_ENABLE_INIT ((void)0)
193
+
194
+    #undef Y_ENABLE_WRITE
195
+    #define Y_ENABLE_WRITE(STATE) stepperY.setEnabled(STATE)
196
+
197
+    #undef Y_ENABLE_READ
198
+    #define Y_ENABLE_READ stepperY.isEnabled()
199
+  #endif
200
+  #if ENABLED(Y2_IS_TMC)
201
+    extern TMC26XStepper stepperY2;
202
+    #undef Y2_ENABLE_INIT
203
+    #define Y2_ENABLE_INIT ((void)0)
204
+
205
+    #undef Y2_ENABLE_WRITE
206
+    #define Y2_ENABLE_WRITE(STATE) stepperY2.setEnabled(STATE)
207
+
208
+    #undef Y2_ENABLE_READ
209
+    #define Y2_ENABLE_READ stepperY2.isEnabled()
210
+  #endif
211
+  #if ENABLED(Z_IS_TMC)
212
+    extern TMC26XStepper stepperZ;
213
+    #undef Z_ENABLE_INIT
214
+    #define Z_ENABLE_INIT ((void)0)
215
+
216
+    #undef Z_ENABLE_WRITE
217
+    #define Z_ENABLE_WRITE(STATE) stepperZ.setEnabled(STATE)
218
+
219
+    #undef Z_ENABLE_READ
220
+    #define Z_ENABLE_READ stepperZ.isEnabled()
221
+  #endif
222
+  #if ENABLED(Z2_IS_TMC)
223
+    extern TMC26XStepper stepperZ2;
224
+    #undef Z2_ENABLE_INIT
225
+    #define Z2_ENABLE_INIT ((void)0)
226
+
227
+    #undef Z2_ENABLE_WRITE
228
+    #define Z2_ENABLE_WRITE(STATE) stepperZ2.setEnabled(STATE)
229
+
230
+    #undef Z2_ENABLE_READ
231
+    #define Z2_ENABLE_READ stepperZ2.isEnabled()
232
+  #endif
233
+  #if ENABLED(E0_IS_TMC)
234
+    extern TMC26XStepper stepperE0;
235
+    #undef E0_ENABLE_INIT
236
+    #define E0_ENABLE_INIT ((void)0)
237
+
238
+    #undef E0_ENABLE_WRITE
239
+    #define E0_ENABLE_WRITE(STATE) stepperE0.setEnabled(STATE)
240
+
241
+    #undef E0_ENABLE_READ
242
+    #define E0_ENABLE_READ stepperE0.isEnabled()
243
+  #endif
244
+  #if ENABLED(E1_IS_TMC)
245
+    extern TMC26XStepper stepperE1;
246
+    #undef E1_ENABLE_INIT
247
+    #define E1_ENABLE_INIT ((void)0)
248
+
249
+    #undef E1_ENABLE_WRITE
250
+    #define E1_ENABLE_WRITE(STATE) stepperE1.setEnabled(STATE)
251
+
252
+    #undef E1_ENABLE_READ
253
+    #define E1_ENABLE_READ stepperE1.isEnabled()
254
+  #endif
255
+  #if ENABLED(E2_IS_TMC)
256
+    extern TMC26XStepper stepperE2;
257
+    #undef E2_ENABLE_INIT
258
+    #define E2_ENABLE_INIT ((void)0)
259
+
260
+    #undef E2_ENABLE_WRITE
261
+    #define E2_ENABLE_WRITE(STATE) stepperE2.setEnabled(STATE)
262
+
263
+    #undef E2_ENABLE_READ
264
+    #define E2_ENABLE_READ stepperE2.isEnabled()
265
+  #endif
266
+  #if ENABLED(E3_IS_TMC)
267
+    extern TMC26XStepper stepperE3;
268
+    #undef E3_ENABLE_INIT
269
+    #define E3_ENABLE_INIT ((void)0)
270
+
271
+    #undef E3_ENABLE_WRITE
272
+    #define E3_ENABLE_WRITE(STATE) stepperE3.setEnabled(STATE)
273
+
274
+    #undef E3_ENABLE_READ
275
+    #define E3_ENABLE_READ stepperE3.isEnabled()
276
+  #endif
277
 
277
 
278
 #endif  // HAVE_TMCDRIVER
278
 #endif  // HAVE_TMCDRIVER
279
 
279
 
280
 //////////////////////////////////
280
 //////////////////////////////////
281
-// Pin redefines for L6470 drivers. 
281
+// Pin redefines for L6470 drivers.
282
 // L640 drivers have step on normal pins, but dir and everything else via SPI
282
 // L640 drivers have step on normal pins, but dir and everything else via SPI
283
 //////////////////////////////////
283
 //////////////////////////////////
284
 #if ENABLED(HAVE_L6470DRIVER)
284
 #if ENABLED(HAVE_L6470DRIVER)
285
 
285
 
286
-#include <SPI.h>
287
-#include <L6470.h>
286
+  #include <SPI.h>
287
+  #include <L6470.h>
288
 
288
 
289
   void L6470_init();
289
   void L6470_init();
290
-#if ENABLED(X_IS_L6470)
291
-   extern L6470 stepperX;
292
-   #undef X_ENABLE_INIT 
293
-   #define X_ENABLE_INIT ((void)0)
294
-   
295
-   #undef X_ENABLE_WRITE
296
-   #define X_ENABLE_WRITE(STATE) {if(STATE) stepperX.Step_Clock(stepperX.getStatus() & STATUS_HIZ); else stepperX.softFree();}
297
-   
298
-   #undef X_ENABLE_READ
299
-   #define X_ENABLE_READ (stepperX.getStatus() & STATUS_HIZ)
300
-   
301
-   #undef X_DIR_INIT 
302
-   #define X_DIR_INIT ((void)0)
303
-   
304
-   #undef X_DIR_WRITE
305
-   #define X_DIR_WRITE(STATE) stepperX.Step_Clock(STATE)
306
-   
307
-   #undef X_DIR_READ
308
-   #define X_DIR_READ (stepperX.getStatus() & STATUS_DIR)
309
-   
310
-#endif
311
-#if ENABLED(X2_IS_L6470)
312
-   extern L6470 stepperX2;
313
-   #undef X2_ENABLE_INIT
314
-   #define X2_ENABLE_INIT ((void)0)
315
-   
316
-   #undef X2_ENABLE_WRITE
317
-   #define X2_ENABLE_WRITE(STATE) (if(STATE) stepperX2.Step_Clock(stepperX2.getStatus() & STATUS_HIZ); else stepperX2.softFree();)
318
-   
319
-   #undef X2_ENABLE_READ
320
-   #define X2_ENABLE_READ (stepperX2.getStatus() & STATUS_HIZ)
321
-   
322
-   #undef X2_DIR_INIT 
323
-   #define X2_DIR_INIT ((void)0)
324
-   
325
-   #undef X2_DIR_WRITE
326
-   #define X2_DIR_WRITE(STATE) stepperX2.Step_Clock(STATE)
327
-   
328
-   #undef X2_DIR_READ
329
-   #define X2_DIR_READ (stepperX2.getStatus() & STATUS_DIR)
330
-#endif
331
-#if ENABLED(Y_IS_L6470)
332
-   extern L6470 stepperY;
333
-   #undef Y_ENABLE_INIT
334
-   #define Y_ENABLE_INIT ((void)0)
335
-   
336
-   #undef Y_ENABLE_WRITE
337
-   #define Y_ENABLE_WRITE(STATE) (if(STATE) stepperY.Step_Clock(stepperY.getStatus() & STATUS_HIZ); else stepperY.softFree();)
338
-   
339
-   #undef Y_ENABLE_READ
340
-   #define Y_ENABLE_READ (stepperY.getStatus() & STATUS_HIZ)
341
-   
342
-   #undef Y_DIR_INIT 
343
-   #define Y_DIR_INIT ((void)0)
344
-   
345
-   #undef Y_DIR_WRITE
346
-   #define Y_DIR_WRITE(STATE) stepperY.Step_Clock(STATE)
347
-   
348
-   #undef Y_DIR_READ
349
-   #define Y_DIR_READ (stepperY.getStatus() & STATUS_DIR)  
350
-#endif
351
-#if ENABLED(Y2_IS_L6470)
352
-   extern L6470 stepperY2;
353
-   #undef Y2_ENABLE_INIT
354
-   #define Y2_ENABLE_INIT ((void)0)
355
-   
356
-   #undef Y2_ENABLE_WRITE
357
-   #define Y2_ENABLE_WRITE(STATE) (if(STATE) stepperY2.Step_Clock(stepperY2.getStatus() & STATUS_HIZ); else stepperY2.softFree();)
358
-   
359
-   #undef Y2_ENABLE_READ
360
-   #define Y2_ENABLE_READ (stepperY2.getStatus() & STATUS_HIZ)
361
-   
362
-   #undef Y2_DIR_INIT 
363
-   #define Y2_DIR_INIT ((void)0)
364
-   
365
-   #undef Y2_DIR_WRITE
366
-   #define Y2_DIR_WRITE(STATE) stepperY2.Step_Clock(STATE)
367
-   
368
-   #undef Y2_DIR_READ
369
-   #define Y2_DIR_READ (stepperY2.getStatus() & STATUS_DIR)   
370
-#endif
371
-#if ENABLED(Z_IS_L6470)
372
-   extern L6470 stepperZ;
373
-   #undef Z_ENABLE_INIT
374
-   #define Z_ENABLE_INIT ((void)0)
375
-   
376
-   #undef Z_ENABLE_WRITE
377
-   #define Z_ENABLE_WRITE(STATE) (if(STATE) stepperZ.Step_Clock(stepperZ.getStatus() & STATUS_HIZ); else stepperZ.softFree();)
378
-   
379
-   #undef Z_ENABLE_READ
380
-   #define Z_ENABLE_READ (stepperZ.getStatus() & STATUS_HIZ)
381
-   
382
-   #undef Z_DIR_INIT 
383
-   #define Z_DIR_INIT ((void)0)
384
-   
385
-   #undef Z_DIR_WRITE
386
-   #define Z_DIR_WRITE(STATE) stepperZ.Step_Clock(STATE)
387
-   
388
-   #undef Y_DIR_READ
389
-   #define Y_DIR_READ (stepperZ.getStatus() & STATUS_DIR)      
390
-#endif
391
-#if ENABLED(Z2_IS_L6470)
392
-   extern L6470 stepperZ2;
393
-   #undef Z2_ENABLE_INIT
394
-   #define Z2_ENABLE_INIT ((void)0)
395
-   
396
-   #undef Z2_ENABLE_WRITE
397
-   #define Z2_ENABLE_WRITE(STATE) (if(STATE) stepperZ2.Step_Clock(stepperZ2.getStatus() & STATUS_HIZ); else stepperZ2.softFree();)
398
-   
399
-   #undef Z2_ENABLE_READ
400
-   #define Z2_ENABLE_READ (stepperZ2.getStatus() & STATUS_HIZ)
401
-   
402
-   #undef Z2_DIR_INIT 
403
-   #define Z2_DIR_INIT ((void)0)
404
-   
405
-   #undef Z2_DIR_WRITE
406
-   #define Z2_DIR_WRITE(STATE) stepperZ2.Step_Clock(STATE)
407
-   
408
-   #undef Y2_DIR_READ
409
-   #define Y2_DIR_READ (stepperZ2.getStatus() & STATUS_DIR)       
410
-#endif
411
-#if ENABLED(E0_IS_L6470)
412
-   extern L6470 stepperE0;
413
-   #undef E0_ENABLE_INIT
414
-   #define E0_ENABLE_INIT ((void)0)
415
-   
416
-   #undef E0_ENABLE_WRITE
417
-   #define E0_ENABLE_WRITE(STATE) (if(STATE) stepperE0.Step_Clock(stepperE0.getStatus() & STATUS_HIZ); else stepperE0.softFree();)
418
-   
419
-   #undef E0_ENABLE_READ
420
-   #define E0_ENABLE_READ (stepperE0.getStatus() & STATUS_HIZ)
421
-   
422
-   #undef E0_DIR_INIT 
423
-   #define E0_DIR_INIT ((void)0)
424
-   
425
-   #undef E0_DIR_WRITE
426
-   #define E0_DIR_WRITE(STATE) stepperE0.Step_Clock(STATE)
427
-   
428
-   #undef E0_DIR_READ
429
-   #define E0_DIR_READ (stepperE0.getStatus() & STATUS_DIR)    
430
-#endif
431
-#if ENABLED(E1_IS_L6470)
432
-   extern L6470 stepperE1;
433
-   #undef E1_ENABLE_INIT
434
-   #define E1_ENABLE_INIT ((void)0)
435
-   
436
-   #undef E1_ENABLE_WRITE
437
-   #define E1_ENABLE_WRITE(STATE) (if(STATE) stepperE1.Step_Clock(stepperE1.getStatus() & STATUS_HIZ); else stepperE1.softFree();)
438
-   
439
-   #undef E1_ENABLE_READ
440
-   #define E1_ENABLE_READ (stepperE1.getStatus() & STATUS_HIZ)
441
-   
442
-   #undef E1_DIR_INIT 
443
-   #define E1_DIR_INIT ((void)0)
444
-   
445
-   #undef E1_DIR_WRITE
446
-   #define E1_DIR_WRITE(STATE) stepperE1.Step_Clock(STATE)
447
-   
448
-   #undef E1_DIR_READ
449
-   #define E1_DIR_READ (stepperE1.getStatus() & STATUS_DIR)  
450
-#endif
451
-#if ENABLED(E2_IS_L6470)
452
-   extern L6470 stepperE2;
453
-   #undef E2_ENABLE_INIT
454
-   #define E2_ENABLE_INIT ((void)0)
455
-   
456
-   #undef E2_ENABLE_WRITE
457
-   #define E2_ENABLE_WRITE(STATE) (if(STATE) stepperE2.Step_Clock(stepperE2.getStatus() & STATUS_HIZ); else stepperE2.softFree();)
458
-   
459
-   #undef E2_ENABLE_READ
460
-   #define E2_ENABLE_READ (stepperE2.getStatus() & STATUS_HIZ)
461
-   
462
-   #undef E2_DIR_INIT 
463
-   #define E2_DIR_INIT ((void)0)
464
-   
465
-   #undef E2_DIR_WRITE
466
-   #define E2_DIR_WRITE(STATE) stepperE2.Step_Clock(STATE)
467
-   
468
-   #undef E2_DIR_READ
469
-   #define E2_DIR_READ (stepperE2.getStatus() & STATUS_DIR)  
470
-#endif
471
-#if ENABLED(E3_IS_L6470)
472
-   extern L6470 stepperE3;
473
-   #undef E3_ENABLE_INIT
474
-   #define E3_ENABLE_INIT ((void)0)
475
-   
476
-   #undef E3_ENABLE_WRITE
477
-   #define E3_ENABLE_WRITE(STATE) (if(STATE) stepperE3.Step_Clock(stepperE3.getStatus() & STATUS_HIZ); else stepperE3.softFree();)
478
-   
479
-   #undef E3_ENABLE_READ
480
-   #define E3_ENABLE_READ (stepperE3.getStatus() & STATUS_HIZ)
481
-   
482
-   #undef E3_DIR_INIT 
483
-   #define E3_DIR_INIT ((void)0)
484
-   
485
-   #undef E3_DIR_WRITE
486
-   #define E3_DIR_WRITE(STATE) stepperE3.Step_Clock(STATE)
487
-   
488
-   #undef E3_DIR_READ
489
-   #define E3_DIR_READ (stepperE3.getStatus() & STATUS_DIR)  
490
-#endif
290
+  #if ENABLED(X_IS_L6470)
291
+    extern L6470 stepperX;
292
+    #undef X_ENABLE_INIT
293
+    #define X_ENABLE_INIT ((void)0)
294
+
295
+    #undef X_ENABLE_WRITE
296
+    #define X_ENABLE_WRITE(STATE) {if(STATE) stepperX.Step_Clock(stepperX.getStatus() & STATUS_HIZ); else stepperX.softFree();}
297
+
298
+    #undef X_ENABLE_READ
299
+    #define X_ENABLE_READ (stepperX.getStatus() & STATUS_HIZ)
300
+
301
+    #undef X_DIR_INIT
302
+    #define X_DIR_INIT ((void)0)
303
+
304
+    #undef X_DIR_WRITE
305
+    #define X_DIR_WRITE(STATE) stepperX.Step_Clock(STATE)
306
+
307
+    #undef X_DIR_READ
308
+    #define X_DIR_READ (stepperX.getStatus() & STATUS_DIR)
309
+
310
+  #endif
311
+  #if ENABLED(X2_IS_L6470)
312
+    extern L6470 stepperX2;
313
+    #undef X2_ENABLE_INIT
314
+    #define X2_ENABLE_INIT ((void)0)
315
+
316
+    #undef X2_ENABLE_WRITE
317
+    #define X2_ENABLE_WRITE(STATE) (if(STATE) stepperX2.Step_Clock(stepperX2.getStatus() & STATUS_HIZ); else stepperX2.softFree();)
318
+
319
+    #undef X2_ENABLE_READ
320
+    #define X2_ENABLE_READ (stepperX2.getStatus() & STATUS_HIZ)
321
+
322
+    #undef X2_DIR_INIT
323
+    #define X2_DIR_INIT ((void)0)
324
+
325
+    #undef X2_DIR_WRITE
326
+    #define X2_DIR_WRITE(STATE) stepperX2.Step_Clock(STATE)
327
+
328
+    #undef X2_DIR_READ
329
+    #define X2_DIR_READ (stepperX2.getStatus() & STATUS_DIR)
330
+  #endif
331
+  #if ENABLED(Y_IS_L6470)
332
+    extern L6470 stepperY;
333
+    #undef Y_ENABLE_INIT
334
+    #define Y_ENABLE_INIT ((void)0)
335
+
336
+    #undef Y_ENABLE_WRITE
337
+    #define Y_ENABLE_WRITE(STATE) (if(STATE) stepperY.Step_Clock(stepperY.getStatus() & STATUS_HIZ); else stepperY.softFree();)
338
+
339
+    #undef Y_ENABLE_READ
340
+    #define Y_ENABLE_READ (stepperY.getStatus() & STATUS_HIZ)
341
+
342
+    #undef Y_DIR_INIT
343
+    #define Y_DIR_INIT ((void)0)
344
+
345
+    #undef Y_DIR_WRITE
346
+    #define Y_DIR_WRITE(STATE) stepperY.Step_Clock(STATE)
347
+
348
+    #undef Y_DIR_READ
349
+    #define Y_DIR_READ (stepperY.getStatus() & STATUS_DIR)
350
+  #endif
351
+  #if ENABLED(Y2_IS_L6470)
352
+    extern L6470 stepperY2;
353
+    #undef Y2_ENABLE_INIT
354
+    #define Y2_ENABLE_INIT ((void)0)
355
+
356
+    #undef Y2_ENABLE_WRITE
357
+    #define Y2_ENABLE_WRITE(STATE) (if(STATE) stepperY2.Step_Clock(stepperY2.getStatus() & STATUS_HIZ); else stepperY2.softFree();)
358
+
359
+    #undef Y2_ENABLE_READ
360
+    #define Y2_ENABLE_READ (stepperY2.getStatus() & STATUS_HIZ)
361
+
362
+    #undef Y2_DIR_INIT
363
+    #define Y2_DIR_INIT ((void)0)
364
+
365
+    #undef Y2_DIR_WRITE
366
+    #define Y2_DIR_WRITE(STATE) stepperY2.Step_Clock(STATE)
367
+
368
+    #undef Y2_DIR_READ
369
+    #define Y2_DIR_READ (stepperY2.getStatus() & STATUS_DIR)
370
+  #endif
371
+  #if ENABLED(Z_IS_L6470)
372
+    extern L6470 stepperZ;
373
+    #undef Z_ENABLE_INIT
374
+    #define Z_ENABLE_INIT ((void)0)
375
+
376
+    #undef Z_ENABLE_WRITE
377
+    #define Z_ENABLE_WRITE(STATE) (if(STATE) stepperZ.Step_Clock(stepperZ.getStatus() & STATUS_HIZ); else stepperZ.softFree();)
378
+
379
+    #undef Z_ENABLE_READ
380
+    #define Z_ENABLE_READ (stepperZ.getStatus() & STATUS_HIZ)
381
+
382
+    #undef Z_DIR_INIT
383
+    #define Z_DIR_INIT ((void)0)
384
+
385
+    #undef Z_DIR_WRITE
386
+    #define Z_DIR_WRITE(STATE) stepperZ.Step_Clock(STATE)
387
+
388
+    #undef Y_DIR_READ
389
+    #define Y_DIR_READ (stepperZ.getStatus() & STATUS_DIR)
390
+  #endif
391
+  #if ENABLED(Z2_IS_L6470)
392
+    extern L6470 stepperZ2;
393
+    #undef Z2_ENABLE_INIT
394
+    #define Z2_ENABLE_INIT ((void)0)
395
+
396
+    #undef Z2_ENABLE_WRITE
397
+    #define Z2_ENABLE_WRITE(STATE) (if(STATE) stepperZ2.Step_Clock(stepperZ2.getStatus() & STATUS_HIZ); else stepperZ2.softFree();)
398
+
399
+    #undef Z2_ENABLE_READ
400
+    #define Z2_ENABLE_READ (stepperZ2.getStatus() & STATUS_HIZ)
401
+
402
+    #undef Z2_DIR_INIT
403
+    #define Z2_DIR_INIT ((void)0)
404
+
405
+    #undef Z2_DIR_WRITE
406
+    #define Z2_DIR_WRITE(STATE) stepperZ2.Step_Clock(STATE)
407
+
408
+    #undef Y2_DIR_READ
409
+    #define Y2_DIR_READ (stepperZ2.getStatus() & STATUS_DIR)
410
+  #endif
411
+  #if ENABLED(E0_IS_L6470)
412
+    extern L6470 stepperE0;
413
+    #undef E0_ENABLE_INIT
414
+    #define E0_ENABLE_INIT ((void)0)
415
+
416
+    #undef E0_ENABLE_WRITE
417
+    #define E0_ENABLE_WRITE(STATE) (if(STATE) stepperE0.Step_Clock(stepperE0.getStatus() & STATUS_HIZ); else stepperE0.softFree();)
418
+
419
+    #undef E0_ENABLE_READ
420
+    #define E0_ENABLE_READ (stepperE0.getStatus() & STATUS_HIZ)
421
+
422
+    #undef E0_DIR_INIT
423
+    #define E0_DIR_INIT ((void)0)
424
+
425
+    #undef E0_DIR_WRITE
426
+    #define E0_DIR_WRITE(STATE) stepperE0.Step_Clock(STATE)
427
+
428
+    #undef E0_DIR_READ
429
+    #define E0_DIR_READ (stepperE0.getStatus() & STATUS_DIR)
430
+  #endif
431
+  #if ENABLED(E1_IS_L6470)
432
+    extern L6470 stepperE1;
433
+    #undef E1_ENABLE_INIT
434
+    #define E1_ENABLE_INIT ((void)0)
435
+
436
+    #undef E1_ENABLE_WRITE
437
+    #define E1_ENABLE_WRITE(STATE) (if(STATE) stepperE1.Step_Clock(stepperE1.getStatus() & STATUS_HIZ); else stepperE1.softFree();)
438
+
439
+    #undef E1_ENABLE_READ
440
+    #define E1_ENABLE_READ (stepperE1.getStatus() & STATUS_HIZ)
441
+
442
+    #undef E1_DIR_INIT
443
+    #define E1_DIR_INIT ((void)0)
444
+
445
+    #undef E1_DIR_WRITE
446
+    #define E1_DIR_WRITE(STATE) stepperE1.Step_Clock(STATE)
447
+
448
+    #undef E1_DIR_READ
449
+    #define E1_DIR_READ (stepperE1.getStatus() & STATUS_DIR)
450
+  #endif
451
+  #if ENABLED(E2_IS_L6470)
452
+    extern L6470 stepperE2;
453
+    #undef E2_ENABLE_INIT
454
+    #define E2_ENABLE_INIT ((void)0)
455
+
456
+    #undef E2_ENABLE_WRITE
457
+    #define E2_ENABLE_WRITE(STATE) (if(STATE) stepperE2.Step_Clock(stepperE2.getStatus() & STATUS_HIZ); else stepperE2.softFree();)
458
+
459
+    #undef E2_ENABLE_READ
460
+    #define E2_ENABLE_READ (stepperE2.getStatus() & STATUS_HIZ)
461
+
462
+    #undef E2_DIR_INIT
463
+    #define E2_DIR_INIT ((void)0)
464
+
465
+    #undef E2_DIR_WRITE
466
+    #define E2_DIR_WRITE(STATE) stepperE2.Step_Clock(STATE)
467
+
468
+    #undef E2_DIR_READ
469
+    #define E2_DIR_READ (stepperE2.getStatus() & STATUS_DIR)
470
+  #endif
471
+  #if ENABLED(E3_IS_L6470)
472
+    extern L6470 stepperE3;
473
+    #undef E3_ENABLE_INIT
474
+    #define E3_ENABLE_INIT ((void)0)
475
+
476
+    #undef E3_ENABLE_WRITE
477
+    #define E3_ENABLE_WRITE(STATE) (if(STATE) stepperE3.Step_Clock(stepperE3.getStatus() & STATUS_HIZ); else stepperE3.softFree();)
478
+
479
+    #undef E3_ENABLE_READ
480
+    #define E3_ENABLE_READ (stepperE3.getStatus() & STATUS_HIZ)
481
+
482
+    #undef E3_DIR_INIT
483
+    #define E3_DIR_INIT ((void)0)
484
+
485
+    #undef E3_DIR_WRITE
486
+    #define E3_DIR_WRITE(STATE) stepperE3.Step_Clock(STATE)
487
+
488
+    #undef E3_DIR_READ
489
+    #define E3_DIR_READ (stepperE3.getStatus() & STATUS_DIR)
490
+  #endif
491
 
491
 
492
 #endif  //HAVE_L6470DRIVER
492
 #endif  //HAVE_L6470DRIVER
493
 
493
 

+ 94
- 91
Marlin/temperature.cpp Переглянути файл

1
 /*
1
 /*
2
   temperature.cpp - temperature control
2
   temperature.cpp - temperature control
3
   Part of Marlin
3
   Part of Marlin
4
-  
4
+
5
  Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
5
  Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
6
- 
6
+
7
  This program is free software: you can redistribute it and/or modify
7
  This program is free software: you can redistribute it and/or modify
8
  it under the terms of the GNU General Public License as published by
8
  it under the terms of the GNU General Public License as published by
9
  the Free Software Foundation, either version 3 of the License, or
9
  the Free Software Foundation, either version 3 of the License, or
10
  (at your option) any later version.
10
  (at your option) any later version.
11
- 
11
+
12
  This program is distributed in the hope that it will be useful,
12
  This program is distributed in the hope that it will be useful,
13
  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
  GNU General Public License for more details.
15
  GNU General Public License for more details.
16
- 
16
+
17
  You should have received a copy of the GNU General Public License
17
  You should have received a copy of the GNU General Public License
18
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 */
19
 */
54
 #endif
54
 #endif
55
 
55
 
56
 #if ENABLED(PIDTEMPBED)
56
 #if ENABLED(PIDTEMPBED)
57
-  float bedKp=DEFAULT_bedKp;
58
-  float bedKi=(DEFAULT_bedKi*PID_dT);
59
-  float bedKd=(DEFAULT_bedKd/PID_dT);
57
+  float bedKp = DEFAULT_bedKp;
58
+  float bedKi = (DEFAULT_bedKi* PID_dT);
59
+  float bedKd = (DEFAULT_bedKd / PID_dT);
60
 #endif //PIDTEMPBED
60
 #endif //PIDTEMPBED
61
-  
61
+
62
 #if ENABLED(FAN_SOFT_PWM)
62
 #if ENABLED(FAN_SOFT_PWM)
63
   unsigned char fanSpeedSoftPwm;
63
   unsigned char fanSpeedSoftPwm;
64
 #endif
64
 #endif
65
 
65
 
66
 unsigned char soft_pwm_bed;
66
 unsigned char soft_pwm_bed;
67
-  
67
+
68
 #if ENABLED(BABYSTEPPING)
68
 #if ENABLED(BABYSTEPPING)
69
   volatile int babystepsTodo[3] = { 0 };
69
   volatile int babystepsTodo[3] = { 0 };
70
 #endif
70
 #endif
71
 
71
 
72
 #if ENABLED(FILAMENT_SENSOR)
72
 #if ENABLED(FILAMENT_SENSOR)
73
   int current_raw_filwidth = 0;  //Holds measured filament diameter - one extruder only
73
   int current_raw_filwidth = 0;  //Holds measured filament diameter - one extruder only
74
-#endif  
74
+#endif
75
 
75
 
76
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
76
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
77
   enum TRState { TRReset, TRInactive, TRFirstHeating, TRStable, TRRunaway };
77
   enum TRState { TRReset, TRInactive, TRFirstHeating, TRStable, TRRunaway };
78
-  void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc);
78
+  void thermal_runaway_protection(TRState* state, millis_t* timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc);
79
   #if ENABLED(THERMAL_PROTECTION_HOTENDS)
79
   #if ENABLED(THERMAL_PROTECTION_HOTENDS)
80
     static TRState thermal_runaway_state_machine[4] = { TRReset, TRReset, TRReset, TRReset };
80
     static TRState thermal_runaway_state_machine[4] = { TRReset, TRReset, TRReset, TRReset };
81
     static millis_t thermal_runaway_timer[4]; // = {0,0,0,0};
81
     static millis_t thermal_runaway_timer[4]; // = {0,0,0,0};
125
 #else //PIDTEMPBED
125
 #else //PIDTEMPBED
126
   static millis_t  next_bed_check_ms;
126
   static millis_t  next_bed_check_ms;
127
 #endif //PIDTEMPBED
127
 #endif //PIDTEMPBED
128
-  static unsigned char soft_pwm[EXTRUDERS];
128
+static unsigned char soft_pwm[EXTRUDERS];
129
 
129
 
130
 #if ENABLED(FAN_SOFT_PWM)
130
 #if ENABLED(FAN_SOFT_PWM)
131
   static unsigned char soft_pwm_fan;
131
   static unsigned char soft_pwm_fan;
132
 #endif
132
 #endif
133
 #if HAS_AUTO_FAN
133
 #if HAS_AUTO_FAN
134
   static millis_t next_auto_fan_check_ms;
134
   static millis_t next_auto_fan_check_ms;
135
-#endif  
135
+#endif
136
 
136
 
137
 #if ENABLED(PIDTEMP)
137
 #if ENABLED(PIDTEMP)
138
   #if ENABLED(PID_PARAMS_PER_EXTRUDER)
138
   #if ENABLED(PID_PARAMS_PER_EXTRUDER)
139
     float Kp[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kp);
139
     float Kp[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kp);
140
-    float Ki[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Ki*PID_dT);
140
+    float Ki[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Ki* PID_dT);
141
     float Kd[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kd / PID_dT);
141
     float Kd[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kd / PID_dT);
142
     #if ENABLED(PID_ADD_EXTRUSION_RATE)
142
     #if ENABLED(PID_ADD_EXTRUSION_RATE)
143
       float Kc[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kc);
143
       float Kc[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_Kc);
153
 #endif //PIDTEMP
153
 #endif //PIDTEMP
154
 
154
 
155
 // Init min and max temp with extreme values to prevent false errors during startup
155
 // Init min and max temp with extreme values to prevent false errors during startup
156
-static int minttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP);
157
-static int maxttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP);
156
+static int minttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS(HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP);
157
+static int maxttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS(HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP);
158
 static int minttemp[EXTRUDERS] = { 0 };
158
 static int minttemp[EXTRUDERS] = { 0 };
159
 static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(16383);
159
 static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(16383);
160
 #ifdef BED_MINTEMP
160
 #ifdef BED_MINTEMP
161
-static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
161
+  static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
162
 #endif
162
 #endif
163
 #ifdef BED_MAXTEMP
163
 #ifdef BED_MAXTEMP
164
   static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
164
   static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
165
 #endif
165
 #endif
166
 
166
 
167
 #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
167
 #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
168
-  static void *heater_ttbl_map[2] = {(void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE };
168
+  static void* heater_ttbl_map[2] = {(void*)HEATER_0_TEMPTABLE, (void*)HEATER_1_TEMPTABLE };
169
   static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN };
169
   static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN };
170
 #else
170
 #else
171
-  static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE, (void *)HEATER_3_TEMPTABLE );
172
-  static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN, HEATER_3_TEMPTABLE_LEN );
171
+  static void* heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS((void*)HEATER_0_TEMPTABLE, (void*)HEATER_1_TEMPTABLE, (void*)HEATER_2_TEMPTABLE, (void*)HEATER_3_TEMPTABLE);
172
+  static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS(HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN, HEATER_3_TEMPTABLE_LEN);
173
 #endif
173
 #endif
174
 
174
 
175
 static float analog2temp(int raw, uint8_t e);
175
 static float analog2temp(int raw, uint8_t e);
222
     SERIAL_ECHOLN(MSG_PID_BAD_EXTRUDER_NUM);
222
     SERIAL_ECHOLN(MSG_PID_BAD_EXTRUDER_NUM);
223
     return;
223
     return;
224
   }
224
   }
225
-  
225
+
226
   SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START);
226
   SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START);
227
 
227
 
228
   disable_all_heaters(); // switch off all heaters.
228
   disable_all_heaters(); // switch off all heaters.
240
     if (temp_meas_ready) { // temp sample ready
240
     if (temp_meas_ready) { // temp sample ready
241
       updateTemperaturesFromRawValues();
241
       updateTemperaturesFromRawValues();
242
 
242
 
243
-      input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
243
+      input = (extruder < 0) ? current_temperature_bed : current_temperature[extruder];
244
 
244
 
245
       max = max(max, input);
245
       max = max(max, input);
246
       min = min(min, input);
246
       min = min(min, input);
272
           t_low = t2 - t1;
272
           t_low = t2 - t1;
273
           if (cycles > 0) {
273
           if (cycles > 0) {
274
             long max_pow = extruder < 0 ? MAX_BED_POWER : PID_MAX;
274
             long max_pow = extruder < 0 ? MAX_BED_POWER : PID_MAX;
275
-            bias += (d*(t_high - t_low))/(t_low + t_high);
275
+            bias += (d * (t_high - t_low)) / (t_low + t_high);
276
             bias = constrain(bias, 20, max_pow - 20);
276
             bias = constrain(bias, 20, max_pow - 20);
277
             d = (bias > max_pow / 2) ? max_pow - 1 - bias : bias;
277
             d = (bias > max_pow / 2) ? max_pow - 1 - bias : bias;
278
 
278
 
317
           cycles++;
317
           cycles++;
318
           min = temp;
318
           min = temp;
319
         }
319
         }
320
-      } 
320
+      }
321
     }
321
     }
322
     #define MAX_OVERSHOOT_PID_AUTOTUNE 20
322
     #define MAX_OVERSHOOT_PID_AUTOTUNE 20
323
     if (input > temp + MAX_OVERSHOOT_PID_AUTOTUNE) {
323
     if (input > temp + MAX_OVERSHOOT_PID_AUTOTUNE) {
343
       temp_ms = ms;
343
       temp_ms = ms;
344
     } // every 2 seconds
344
     } // every 2 seconds
345
     // Over 2 minutes?
345
     // Over 2 minutes?
346
-    if (((ms - t1) + (ms - t2)) > (10L*60L*1000L*2L)) {
346
+    if (((ms - t1) + (ms - t2)) > (10L * 60L * 1000L * 2L)) {
347
       SERIAL_PROTOCOLLNPGM(MSG_PID_TIMEOUT);
347
       SERIAL_PROTOCOLLNPGM(MSG_PID_TIMEOUT);
348
       return;
348
       return;
349
     }
349
     }
350
     if (cycles > ncycles) {
350
     if (cycles > ncycles) {
351
       SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED);
351
       SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED);
352
-      const char *estring = extruder < 0 ? "bed" : "";
352
+      const char* estring = extruder < 0 ? "bed" : "";
353
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kp "); SERIAL_PROTOCOLLN(Kp);
353
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kp "); SERIAL_PROTOCOLLN(Kp);
354
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Ki "); SERIAL_PROTOCOLLN(Ki);
354
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Ki "); SERIAL_PROTOCOLLN(Ki);
355
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kd "); SERIAL_PROTOCOLLN(Kd);
355
       SERIAL_PROTOCOLPGM("#define  DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kd "); SERIAL_PROTOCOLLN(Kd);
389
 void checkExtruderAutoFans() {
389
 void checkExtruderAutoFans() {
390
   uint8_t fanState = 0;
390
   uint8_t fanState = 0;
391
 
391
 
392
-  // which fan pins need to be turned on?      
392
+  // which fan pins need to be turned on?
393
   #if HAS_AUTO_FAN_0
393
   #if HAS_AUTO_FAN_0
394
-    if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
394
+    if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)
395
       fanState |= 1;
395
       fanState |= 1;
396
   #endif
396
   #endif
397
   #if HAS_AUTO_FAN_1
397
   #if HAS_AUTO_FAN_1
398
-    if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
399
-    {
398
+    if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) {
400
       if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
399
       if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
401
         fanState |= 1;
400
         fanState |= 1;
402
       else
401
       else
404
     }
403
     }
405
   #endif
404
   #endif
406
   #if HAS_AUTO_FAN_2
405
   #if HAS_AUTO_FAN_2
407
-    if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
408
-    {
409
-      if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) 
406
+    if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE) {
407
+      if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
410
         fanState |= 1;
408
         fanState |= 1;
411
-      else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN) 
409
+      else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
412
         fanState |= 2;
410
         fanState |= 2;
413
       else
411
       else
414
         fanState |= 4;
412
         fanState |= 4;
415
     }
413
     }
416
   #endif
414
   #endif
417
   #if HAS_AUTO_FAN_3
415
   #if HAS_AUTO_FAN_3
418
-    if (current_temperature[3] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
419
-    {
420
-      if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) 
416
+    if (current_temperature[3] > EXTRUDER_AUTO_FAN_TEMPERATURE) {
417
+      if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN)
421
         fanState |= 1;
418
         fanState |= 1;
422
-      else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN) 
419
+      else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN)
423
         fanState |= 2;
420
         fanState |= 2;
424
-      else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN) 
421
+      else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN)
425
         fanState |= 4;
422
         fanState |= 4;
426
       else
423
       else
427
         fanState |= 8;
424
         fanState |= 8;
428
     }
425
     }
429
   #endif
426
   #endif
430
-  
427
+
431
   // update extruder auto fan states
428
   // update extruder auto fan states
432
   #if HAS_AUTO_FAN_0
429
   #if HAS_AUTO_FAN_0
433
     setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0);
430
     setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0);
454
 //
451
 //
455
 // Temperature Error Handlers
452
 // Temperature Error Handlers
456
 //
453
 //
457
-inline void _temp_error(int e, const char *serial_msg, const char *lcd_msg) {
454
+inline void _temp_error(int e, const char* serial_msg, const char* lcd_msg) {
458
   static bool killed = false;
455
   static bool killed = false;
459
   if (IsRunning()) {
456
   if (IsRunning()) {
460
     SERIAL_ERROR_START;
457
     SERIAL_ERROR_START;
485
   #if ENABLED(PIDTEMP)
482
   #if ENABLED(PIDTEMP)
486
     #if DISABLED(PID_OPENLOOP)
483
     #if DISABLED(PID_OPENLOOP)
487
       pid_error[e] = target_temperature[e] - current_temperature[e];
484
       pid_error[e] = target_temperature[e] - current_temperature[e];
488
-      dTerm[e] = K2 * PID_PARAM(Kd,e) * (current_temperature[e] - temp_dState[e]) + K1 * dTerm[e];
485
+      dTerm[e] = K2 * PID_PARAM(Kd, e) * (current_temperature[e] - temp_dState[e]) + K1 * dTerm[e];
489
       temp_dState[e] = current_temperature[e];
486
       temp_dState[e] = current_temperature[e];
490
       if (pid_error[e] > PID_FUNCTIONAL_RANGE) {
487
       if (pid_error[e] > PID_FUNCTIONAL_RANGE) {
491
         pid_output = BANG_MAX;
488
         pid_output = BANG_MAX;
500
           temp_iState[e] = 0.0;
497
           temp_iState[e] = 0.0;
501
           pid_reset[e] = false;
498
           pid_reset[e] = false;
502
         }
499
         }
503
-        pTerm[e] = PID_PARAM(Kp,e) * pid_error[e];
500
+        pTerm[e] = PID_PARAM(Kp, e) * pid_error[e];
504
         temp_iState[e] += pid_error[e];
501
         temp_iState[e] += pid_error[e];
505
         temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
502
         temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
506
-        iTerm[e] = PID_PARAM(Ki,e) * temp_iState[e];
503
+        iTerm[e] = PID_PARAM(Ki, e) * temp_iState[e];
507
 
504
 
508
         pid_output = pTerm[e] + iTerm[e] - dTerm[e];
505
         pid_output = pTerm[e] + iTerm[e] - dTerm[e];
509
 
506
 
669
       checkExtruderAutoFans();
666
       checkExtruderAutoFans();
670
       next_auto_fan_check_ms = ms + 2500;
667
       next_auto_fan_check_ms = ms + 2500;
671
     }
668
     }
672
-  #endif       
669
+  #endif
673
 
670
 
674
   // Control the extruder rate based on the width sensor
671
   // Control the extruder rate based on the width sensor
675
   #if ENABLED(FILAMENT_SENSOR)
672
   #if ENABLED(FILAMENT_SENSOR)
676
     if (filament_sensor) {
673
     if (filament_sensor) {
677
       meas_shift_index = delay_index1 - meas_delay_cm;
674
       meas_shift_index = delay_index1 - meas_delay_cm;
678
       if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1;  //loop around buffer if needed
675
       if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1;  //loop around buffer if needed
679
-      
676
+
680
       // Get the delayed info and add 100 to reconstitute to a percent of
677
       // Get the delayed info and add 100 to reconstitute to a percent of
681
       // the nominal filament diameter then square it to get an area
678
       // the nominal filament diameter then square it to get an area
682
       meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
679
       meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY);
692
   #endif
689
   #endif
693
 
690
 
694
   #if TEMP_SENSOR_BED != 0
691
   #if TEMP_SENSOR_BED != 0
695
-  
692
+
696
     #if ENABLED(THERMAL_PROTECTION_BED)
693
     #if ENABLED(THERMAL_PROTECTION_BED)
697
       thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
694
       thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
698
     #endif
695
     #endif
742
       SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM);
739
       SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM);
743
       kill(PSTR(MSG_KILLED));
740
       kill(PSTR(MSG_KILLED));
744
       return 0.0;
741
       return 0.0;
745
-    } 
742
+    }
746
 
743
 
747
   #if ENABLED(HEATER_0_USES_MAX6675)
744
   #if ENABLED(HEATER_0_USES_MAX6675)
748
     if (e == 0) return 0.25 * raw;
745
     if (e == 0) return 0.25 * raw;
751
   if (heater_ttbl_map[e] != NULL) {
748
   if (heater_ttbl_map[e] != NULL) {
752
     float celsius = 0;
749
     float celsius = 0;
753
     uint8_t i;
750
     uint8_t i;
754
-    short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
751
+    short(*tt)[][2] = (short(*)[][2])(heater_ttbl_map[e]);
755
 
752
 
756
     for (i = 1; i < heater_ttbllen_map[e]; i++) {
753
     for (i = 1; i < heater_ttbllen_map[e]; i++) {
757
       if (PGM_RD_W((*tt)[i][0]) > raw) {
754
       if (PGM_RD_W((*tt)[i][0]) > raw) {
758
-        celsius = PGM_RD_W((*tt)[i-1][1]) + 
759
-          (raw - PGM_RD_W((*tt)[i-1][0])) * 
760
-          (float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i-1][1])) /
761
-          (float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i-1][0]));
755
+        celsius = PGM_RD_W((*tt)[i - 1][1]) +
756
+                  (raw - PGM_RD_W((*tt)[i - 1][0])) *
757
+                  (float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i - 1][1])) /
758
+                  (float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i - 1][0]));
762
         break;
759
         break;
763
       }
760
       }
764
     }
761
     }
765
 
762
 
766
     // Overflow: Set to last value in the table
763
     // Overflow: Set to last value in the table
767
-    if (i == heater_ttbllen_map[e]) celsius = PGM_RD_W((*tt)[i-1][1]);
764
+    if (i == heater_ttbllen_map[e]) celsius = PGM_RD_W((*tt)[i - 1][1]);
768
 
765
 
769
     return celsius;
766
     return celsius;
770
   }
767
   }
780
 
777
 
781
     for (i = 1; i < BEDTEMPTABLE_LEN; i++) {
778
     for (i = 1; i < BEDTEMPTABLE_LEN; i++) {
782
       if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw) {
779
       if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw) {
783
-        celsius  = PGM_RD_W(BEDTEMPTABLE[i-1][1]) + 
784
-          (raw - PGM_RD_W(BEDTEMPTABLE[i-1][0])) * 
785
-          (float)(PGM_RD_W(BEDTEMPTABLE[i][1]) - PGM_RD_W(BEDTEMPTABLE[i-1][1])) /
786
-          (float)(PGM_RD_W(BEDTEMPTABLE[i][0]) - PGM_RD_W(BEDTEMPTABLE[i-1][0]));
780
+        celsius  = PGM_RD_W(BEDTEMPTABLE[i - 1][1]) +
781
+                   (raw - PGM_RD_W(BEDTEMPTABLE[i - 1][0])) *
782
+                   (float)(PGM_RD_W(BEDTEMPTABLE[i][1]) - PGM_RD_W(BEDTEMPTABLE[i - 1][1])) /
783
+                   (float)(PGM_RD_W(BEDTEMPTABLE[i][0]) - PGM_RD_W(BEDTEMPTABLE[i - 1][0]));
787
         break;
784
         break;
788
       }
785
       }
789
     }
786
     }
790
 
787
 
791
     // Overflow: Set to last value in the table
788
     // Overflow: Set to last value in the table
792
-    if (i == BEDTEMPTABLE_LEN) celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]);
789
+    if (i == BEDTEMPTABLE_LEN) celsius = PGM_RD_W(BEDTEMPTABLE[i - 1][1]);
793
 
790
 
794
     return celsius;
791
     return celsius;
795
-  #elif defined BED_USES_AD595
792
+
793
+  #elif defined(BED_USES_AD595)
794
+
796
     return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET;
795
     return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET;
796
+
797
   #else
797
   #else
798
+
798
     return 0;
799
     return 0;
800
+
799
   #endif
801
   #endif
800
 }
802
 }
801
 
803
 
838
     if (temp < MEASURED_LOWER_LIMIT) temp = filament_width_nominal;  //assume sensor cut out
840
     if (temp < MEASURED_LOWER_LIMIT) temp = filament_width_nominal;  //assume sensor cut out
839
     else if (temp > MEASURED_UPPER_LIMIT) temp = MEASURED_UPPER_LIMIT;
841
     else if (temp > MEASURED_UPPER_LIMIT) temp = MEASURED_UPPER_LIMIT;
840
     return filament_width_nominal / temp * 100;
842
     return filament_width_nominal / temp * 100;
841
-  } 
843
+  }
842
 
844
 
843
 #endif
845
 #endif
844
 
846
 
850
 void tp_init() {
852
 void tp_init() {
851
   #if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1))
853
   #if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1))
852
     //disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector
854
     //disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector
853
-    MCUCR=BIT(JTD);
854
-    MCUCR=BIT(JTD);
855
+    MCUCR = BIT(JTD);
856
+    MCUCR = BIT(JTD);
855
   #endif
857
   #endif
856
-  
857
-  // Finish init of mult extruder arrays 
858
+
859
+  // Finish init of mult extruder arrays
858
   for (int e = 0; e < EXTRUDERS; e++) {
860
   for (int e = 0; e < EXTRUDERS; e++) {
859
-    // populate with the first value 
861
+    // populate with the first value
860
     maxttemp[e] = maxttemp[0];
862
     maxttemp[e] = maxttemp[0];
861
     #if ENABLED(PIDTEMP)
863
     #if ENABLED(PIDTEMP)
862
       temp_iState_min[e] = 0.0;
864
       temp_iState_min[e] = 0.0;
863
-      temp_iState_max[e] = PID_INTEGRAL_DRIVE_MAX / PID_PARAM(Ki,e);
865
+      temp_iState_max[e] = PID_INTEGRAL_DRIVE_MAX / PID_PARAM(Ki, e);
864
       #if ENABLED(PID_ADD_EXTRUSION_RATE)
866
       #if ENABLED(PID_ADD_EXTRUSION_RATE)
865
         last_position[e] = 0;
867
         last_position[e] = 0;
866
       #endif
868
       #endif
885
   #endif
887
   #endif
886
   #if HAS_HEATER_BED
888
   #if HAS_HEATER_BED
887
     SET_OUTPUT(HEATER_BED_PIN);
889
     SET_OUTPUT(HEATER_BED_PIN);
888
-  #endif  
890
+  #endif
889
   #if HAS_FAN
891
   #if HAS_FAN
890
     SET_OUTPUT(FAN_PIN);
892
     SET_OUTPUT(FAN_PIN);
891
     #if ENABLED(FAST_PWM_FAN)
893
     #if ENABLED(FAST_PWM_FAN)
906
       pinMode(SS_PIN, OUTPUT);
908
       pinMode(SS_PIN, OUTPUT);
907
       digitalWrite(SS_PIN, HIGH);
909
       digitalWrite(SS_PIN, HIGH);
908
     #endif
910
     #endif
909
-    
910
-    OUT_WRITE(MAX6675_SS,HIGH);
911
+
912
+    OUT_WRITE(MAX6675_SS, HIGH);
911
 
913
 
912
   #endif //HEATER_0_USES_MAX6675
914
   #endif //HEATER_0_USES_MAX6675
913
 
915
 
958
   // Use timer0 for temperature measurement
960
   // Use timer0 for temperature measurement
959
   // Interleave temperature interrupt with millies interrupt
961
   // Interleave temperature interrupt with millies interrupt
960
   OCR0B = 128;
962
   OCR0B = 128;
961
-  TIMSK0 |= BIT(OCIE0B);  
962
-  
963
+  TIMSK0 |= BIT(OCIE0B);
964
+
963
   // Wait for temperature measurement to settle
965
   // Wait for temperature measurement to settle
964
   delay(250);
966
   delay(250);
965
 
967
 
1021
     }
1023
     }
1022
   #endif //BED_MINTEMP
1024
   #endif //BED_MINTEMP
1023
   #ifdef BED_MAXTEMP
1025
   #ifdef BED_MAXTEMP
1024
-    while(analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) {
1026
+    while (analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) {
1025
       #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP
1027
       #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP
1026
         bed_maxttemp_raw -= OVERSAMPLENR;
1028
         bed_maxttemp_raw -= OVERSAMPLENR;
1027
       #else
1029
       #else
1049
 
1051
 
1050
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
1052
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
1051
 
1053
 
1052
-  void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
1054
+  void thermal_runaway_protection(TRState* state, millis_t* timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
1053
 
1055
 
1054
-    static float tr_target_temperature[EXTRUDERS+1] = { 0.0 };
1056
+    static float tr_target_temperature[EXTRUDERS + 1] = { 0.0 };
1055
 
1057
 
1056
     /*
1058
     /*
1057
         SERIAL_ECHO_START;
1059
         SERIAL_ECHO_START;
1094
         // If the temperature is over the target (-hysteresis) restart the timer
1096
         // If the temperature is over the target (-hysteresis) restart the timer
1095
         if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc)
1097
         if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc)
1096
           *timer = millis();
1098
           *timer = millis();
1097
-          // If the timer goes too long without a reset, trigger shutdown
1099
+        // If the timer goes too long without a reset, trigger shutdown
1098
         else if (millis() > *timer + period_seconds * 1000UL)
1100
         else if (millis() > *timer + period_seconds * 1000UL)
1099
           *state = TRRunaway;
1101
           *state = TRRunaway;
1100
         break;
1102
         break;
1106
 #endif // THERMAL_PROTECTION_HOTENDS || THERMAL_PROTECTION_BED
1108
 #endif // THERMAL_PROTECTION_HOTENDS || THERMAL_PROTECTION_BED
1107
 
1109
 
1108
 void disable_all_heaters() {
1110
 void disable_all_heaters() {
1109
-  for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
1111
+  for (int i = 0; i < EXTRUDERS; i++) setTargetHotend(0, i);
1110
   setTargetBed(0);
1112
   setTargetBed(0);
1111
 
1113
 
1112
   #define DISABLE_HEATER(NR) { \
1114
   #define DISABLE_HEATER(NR) { \
1153
 
1155
 
1154
     if (ms < next_max6675_ms)
1156
     if (ms < next_max6675_ms)
1155
       return max6675_temp;
1157
       return max6675_temp;
1156
-    
1158
+
1157
     next_max6675_ms = ms + MAX6675_HEAT_INTERVAL;
1159
     next_max6675_ms = ms + MAX6675_HEAT_INTERVAL;
1158
 
1160
 
1159
     max6675_temp = 0;
1161
     max6675_temp = 0;
1175
 
1177
 
1176
     // read MSB
1178
     // read MSB
1177
     SPDR = 0;
1179
     SPDR = 0;
1178
-    for (;(SPSR & BIT(SPIF)) == 0;);
1180
+    for (; (SPSR & BIT(SPIF)) == 0;);
1179
     max6675_temp = SPDR;
1181
     max6675_temp = SPDR;
1180
     max6675_temp <<= 8;
1182
     max6675_temp <<= 8;
1181
 
1183
 
1182
     // read LSB
1184
     // read LSB
1183
     SPDR = 0;
1185
     SPDR = 0;
1184
-    for (;(SPSR & BIT(SPIF)) == 0;);
1186
+    for (; (SPSR & BIT(SPIF)) == 0;);
1185
     max6675_temp |= SPDR;
1187
     max6675_temp |= SPDR;
1186
 
1188
 
1187
     // disable TT_MAX6675
1189
     // disable TT_MAX6675
1285
   #if HAS_FILAMENT_SENSOR
1287
   #if HAS_FILAMENT_SENSOR
1286
     static unsigned long raw_filwidth_value = 0;
1288
     static unsigned long raw_filwidth_value = 0;
1287
   #endif
1289
   #endif
1288
-  
1290
+
1289
   #if DISABLED(SLOW_PWM_HEATERS)
1291
   #if DISABLED(SLOW_PWM_HEATERS)
1290
     /**
1292
     /**
1291
      * standard PWM modulation
1293
      * standard PWM modulation
1320
       #endif
1322
       #endif
1321
     }
1323
     }
1322
 
1324
 
1323
-    if (soft_pwm_0 < pwm_count) { WRITE_HEATER_0(0); }
1325
+    if (soft_pwm_0 < pwm_count) WRITE_HEATER_0(0);
1324
     #if EXTRUDERS > 1
1326
     #if EXTRUDERS > 1
1325
       if (soft_pwm_1 < pwm_count) WRITE_HEATER_1(0);
1327
       if (soft_pwm_1 < pwm_count) WRITE_HEATER_1(0);
1326
       #if EXTRUDERS > 2
1328
       #if EXTRUDERS > 2
1338
     #if ENABLED(FAN_SOFT_PWM)
1340
     #if ENABLED(FAN_SOFT_PWM)
1339
       if (soft_pwm_fan < pwm_count) WRITE_FAN(0);
1341
       if (soft_pwm_fan < pwm_count) WRITE_FAN(0);
1340
     #endif
1342
     #endif
1341
-    
1343
+
1342
     pwm_count += BIT(SOFT_PWM_SCALE);
1344
     pwm_count += BIT(SOFT_PWM_SCALE);
1343
     pwm_count &= 0x7f;
1345
     pwm_count &= 0x7f;
1344
-  
1346
+
1345
   #else // SLOW_PWM_HEATERS
1347
   #else // SLOW_PWM_HEATERS
1348
+
1346
     /*
1349
     /*
1347
      * SLOW PWM HEATERS
1350
      * SLOW PWM HEATERS
1348
      *
1351
      *
1427
     if ((pwm_count % 64) == 0) {
1430
     if ((pwm_count % 64) == 0) {
1428
       slow_pwm_count++;
1431
       slow_pwm_count++;
1429
       slow_pwm_count &= 0x7f;
1432
       slow_pwm_count &= 0x7f;
1430
-    
1433
+
1431
       // EXTRUDER 0
1434
       // EXTRUDER 0
1432
-      if (state_timer_heater_0 > 0) state_timer_heater_0--; 
1435
+      if (state_timer_heater_0 > 0) state_timer_heater_0--;
1433
       #if EXTRUDERS > 1    // EXTRUDER 1
1436
       #if EXTRUDERS > 1    // EXTRUDER 1
1434
         if (state_timer_heater_1 > 0) state_timer_heater_1--;
1437
         if (state_timer_heater_1 > 0) state_timer_heater_1--;
1435
         #if EXTRUDERS > 2    // EXTRUDER 2
1438
         #if EXTRUDERS > 2    // EXTRUDER 2
1443
         if (state_timer_heater_BED > 0) state_timer_heater_BED--;
1446
         if (state_timer_heater_BED > 0) state_timer_heater_BED--;
1444
       #endif
1447
       #endif
1445
     } // (pwm_count % 64) == 0
1448
     } // (pwm_count % 64) == 0
1446
-  
1449
+
1447
   #endif // SLOW_PWM_HEATERS
1450
   #endif // SLOW_PWM_HEATERS
1448
 
1451
 
1449
   #define SET_ADMUX_ADCSRA(pin) ADMUX = BIT(REFS0) | (pin & 0x07); ADCSRA |= BIT(ADSC)
1452
   #define SET_ADMUX_ADCSRA(pin) ADMUX = BIT(REFS0) | (pin & 0x07); ADCSRA |= BIT(ADSC)
1454
   #endif
1457
   #endif
1455
 
1458
 
1456
   // Prepare or measure a sensor, each one every 12th frame
1459
   // Prepare or measure a sensor, each one every 12th frame
1457
-  switch(temp_state) {
1460
+  switch (temp_state) {
1458
     case PrepareTemp_0:
1461
     case PrepareTemp_0:
1459
       #if HAS_TEMP_0
1462
       #if HAS_TEMP_0
1460
         START_ADC(TEMP_0_PIN);
1463
         START_ADC(TEMP_0_PIN);
1536
       #if HAS_FILAMENT_SENSOR
1539
       #if HAS_FILAMENT_SENSOR
1537
         // raw_filwidth_value += ADC;  //remove to use an IIR filter approach
1540
         // raw_filwidth_value += ADC;  //remove to use an IIR filter approach
1538
         if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
1541
         if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
1539
-          raw_filwidth_value -= (raw_filwidth_value>>7);  //multiply raw_filwidth_value by 127/128
1540
-          raw_filwidth_value += ((unsigned long)ADC<<7);  //add new ADC reading
1542
+          raw_filwidth_value -= (raw_filwidth_value >> 7); //multiply raw_filwidth_value by 127/128
1543
+          raw_filwidth_value += ((unsigned long)ADC << 7); //add new ADC reading
1541
         }
1544
         }
1542
       #endif
1545
       #endif
1543
       temp_state = PrepareTemp_0;
1546
       temp_state = PrepareTemp_0;
1622
   #if ENABLED(BABYSTEPPING)
1625
   #if ENABLED(BABYSTEPPING)
1623
     for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) {
1626
     for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) {
1624
       int curTodo = babystepsTodo[axis]; //get rid of volatile for performance
1627
       int curTodo = babystepsTodo[axis]; //get rid of volatile for performance
1625
-     
1628
+
1626
       if (curTodo > 0) {
1629
       if (curTodo > 0) {
1627
         babystep(axis,/*fwd*/true);
1630
         babystep(axis,/*fwd*/true);
1628
         babystepsTodo[axis]--; //fewer to do next time
1631
         babystepsTodo[axis]--; //fewer to do next time

+ 16
- 16
Marlin/temperature.h Переглянути файл

19
 */
19
 */
20
 
20
 
21
 #ifndef TEMPERATURE_H
21
 #ifndef TEMPERATURE_H
22
-#define TEMPERATURE_H 
22
+#define TEMPERATURE_H
23
 
23
 
24
 #include "Marlin.h"
24
 #include "Marlin.h"
25
 #include "planner.h"
25
 #include "planner.h"
32
 void manage_heater(); //it is critical that this is called periodically.
32
 void manage_heater(); //it is critical that this is called periodically.
33
 
33
 
34
 #if ENABLED(FILAMENT_SENSOR)
34
 #if ENABLED(FILAMENT_SENSOR)
35
-// For converting raw Filament Width to milimeters 
36
- float analog2widthFil(); 
37
- 
38
-// For converting raw Filament Width to an extrusion ratio 
39
- int widthFil_to_size_ratio();
35
+  // For converting raw Filament Width to milimeters
36
+  float analog2widthFil();
37
+
38
+  // For converting raw Filament Width to an extrusion ratio
39
+  int widthFil_to_size_ratio();
40
 #endif
40
 #endif
41
 
41
 
42
 // low level conversion routines
42
 // low level conversion routines
43
 // do not use these routines and variables outside of temperature.cpp
43
 // do not use these routines and variables outside of temperature.cpp
44
-extern int target_temperature[4];  
44
+extern int target_temperature[4];
45
 extern float current_temperature[4];
45
 extern float current_temperature[4];
46
 #if ENABLED(SHOW_TEMP_ADC_VALUES)
46
 #if ENABLED(SHOW_TEMP_ADC_VALUES)
47
   extern int current_temperature_raw[4];
47
   extern int current_temperature_raw[4];
65
   #else
65
   #else
66
     extern float Kp, Ki, Kd, Kc; // one param per extruder - saves 20 or 36 bytes of ram (inc array pointer)
66
     extern float Kp, Ki, Kd, Kc; // one param per extruder - saves 20 or 36 bytes of ram (inc array pointer)
67
     #define PID_PARAM(param, e) param // use macro to point directly to value
67
     #define PID_PARAM(param, e) param // use macro to point directly to value
68
-  #endif // PID_PARAMS_PER_EXTRUDER	
68
+  #endif // PID_PARAMS_PER_EXTRUDER
69
   float scalePID_i(float i);
69
   float scalePID_i(float i);
70
   float scalePID_d(float d);
70
   float scalePID_d(float d);
71
   float unscalePID_i(float i);
71
   float unscalePID_i(float i);
74
 #endif
74
 #endif
75
 
75
 
76
 #if ENABLED(PIDTEMPBED)
76
 #if ENABLED(PIDTEMPBED)
77
-  extern float bedKp,bedKi,bedKd;
77
+  extern float bedKp, bedKi, bedKd;
78
 #endif
78
 #endif
79
-  
79
+
80
 #if ENABLED(BABYSTEPPING)
80
 #if ENABLED(BABYSTEPPING)
81
   extern volatile int babystepsTodo[3];
81
   extern volatile int babystepsTodo[3];
82
 #endif
82
 #endif
83
-  
83
+
84
 //high level conversion routines, for use outside of temperature.cpp
84
 //high level conversion routines, for use outside of temperature.cpp
85
 //inline so that there is no performance decrease.
85
 //inline so that there is no performance decrease.
86
 //deg=degreeCelsius
86
 //deg=degreeCelsius
89
 FORCE_INLINE float degBed() { return current_temperature_bed; }
89
 FORCE_INLINE float degBed() { return current_temperature_bed; }
90
 
90
 
91
 #if ENABLED(SHOW_TEMP_ADC_VALUES)
91
 #if ENABLED(SHOW_TEMP_ADC_VALUES)
92
-  FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; }
93
-  FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; }
92
+FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; }
93
+FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; }
94
 #endif
94
 #endif
95
 
95
 
96
 FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; }
96
 FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; }
97
 FORCE_INLINE float degTargetBed() { return target_temperature_bed; }
97
 FORCE_INLINE float degTargetBed() { return target_temperature_bed; }
98
 
98
 
99
 #if ENABLED(THERMAL_PROTECTION_HOTENDS)
99
 #if ENABLED(THERMAL_PROTECTION_HOTENDS)
100
-  void start_watching_heater(int e=0);
100
+  void start_watching_heater(int e = 0);
101
 #endif
101
 #endif
102
 
102
 
103
-FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) {
103
+FORCE_INLINE void setTargetHotend(const float& celsius, uint8_t extruder) {
104
   target_temperature[extruder] = celsius;
104
   target_temperature[extruder] = celsius;
105
   #if ENABLED(THERMAL_PROTECTION_HOTENDS)
105
   #if ENABLED(THERMAL_PROTECTION_HOTENDS)
106
     start_watching_heater(extruder);
106
     start_watching_heater(extruder);
107
   #endif
107
   #endif
108
 }
108
 }
109
-FORCE_INLINE void setTargetBed(const float &celsius) { target_temperature_bed = celsius; }
109
+FORCE_INLINE void setTargetBed(const float& celsius) { target_temperature_bed = celsius; }
110
 
110
 
111
 FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; }
111
 FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; }
112
 FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; }
112
 FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; }

+ 969
- 969
Marlin/thermistortables.h
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 119
- 115
Marlin/ultralcd.cpp Переглянути файл

28
 typedef void (*menuFunc_t)();
28
 typedef void (*menuFunc_t)();
29
 
29
 
30
 uint8_t lcd_status_message_level;
30
 uint8_t lcd_status_message_level;
31
-char lcd_status_message[3*LCD_WIDTH+1] = WELCOME_MSG; // worst case is kana with up to 3*LCD_WIDTH+1
31
+char lcd_status_message[3 * LCD_WIDTH + 1] = WELCOME_MSG; // worst case is kana with up to 3*LCD_WIDTH+1
32
 
32
 
33
 #if ENABLED(DOGLCD)
33
 #if ENABLED(DOGLCD)
34
   #include "dogm_lcd_implementation.h"
34
   #include "dogm_lcd_implementation.h"
218
   #if ENABLED(REPRAPWORLD_KEYPAD)
218
   #if ENABLED(REPRAPWORLD_KEYPAD)
219
     volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
219
     volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
220
   #endif
220
   #endif
221
-    
221
+
222
   #if ENABLED(LCD_HAS_SLOW_BUTTONS)
222
   #if ENABLED(LCD_HAS_SLOW_BUTTONS)
223
     volatile uint8_t slow_buttons; // Bits of the pressed buttons.
223
     volatile uint8_t slow_buttons; // Bits of the pressed buttons.
224
   #endif
224
   #endif
254
 /**
254
 /**
255
  * General function to go directly to a menu
255
  * General function to go directly to a menu
256
  */
256
  */
257
-static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint32_t encoder=0) {
257
+static void lcd_goto_menu(menuFunc_t menu, const bool feedback = false, const uint32_t encoder = 0) {
258
   if (currentMenu != menu) {
258
   if (currentMenu != menu) {
259
     currentMenu = menu;
259
     currentMenu = menu;
260
     #if ENABLED(NEWPANEL)
260
     #if ENABLED(NEWPANEL)
276
  */
276
  */
277
 
277
 
278
 static void lcd_status_screen() {
278
 static void lcd_status_screen() {
279
-	encoderRateMultiplierEnabled = false;
279
+  encoderRateMultiplierEnabled = false;
280
 
280
 
281
   #if ENABLED(LCD_PROGRESS_BAR)
281
   #if ENABLED(LCD_PROGRESS_BAR)
282
     millis_t ms = millis();
282
     millis_t ms = millis();
346
     #if ENABLED(ULTIPANEL_FEEDMULTIPLY)
346
     #if ENABLED(ULTIPANEL_FEEDMULTIPLY)
347
       // Dead zone at 100% feedrate
347
       // Dead zone at 100% feedrate
348
       if ((feedrate_multiplier < 100 && (feedrate_multiplier + int(encoderPosition)) > 100) ||
348
       if ((feedrate_multiplier < 100 && (feedrate_multiplier + int(encoderPosition)) > 100) ||
349
-              (feedrate_multiplier > 100 && (feedrate_multiplier + int(encoderPosition)) < 100)) {
349
+          (feedrate_multiplier > 100 && (feedrate_multiplier + int(encoderPosition)) < 100)) {
350
         encoderPosition = 0;
350
         encoderPosition = 0;
351
         feedrate_multiplier = 100;
351
         feedrate_multiplier = 100;
352
       }
352
       }
459
 
459
 
460
 #if ENABLED(BABYSTEPPING)
460
 #if ENABLED(BABYSTEPPING)
461
 
461
 
462
-  static void _lcd_babystep(int axis, const char *msg) {
462
+  static void _lcd_babystep(int axis, const char* msg) {
463
     if (encoderPosition != 0) {
463
     if (encoderPosition != 0) {
464
       babystepsTodo[axis] += (int)encoderPosition;
464
       babystepsTodo[axis] += (int)encoderPosition;
465
       encoderPosition = 0;
465
       encoderPosition = 0;
800
 float move_menu_scale;
800
 float move_menu_scale;
801
 static void lcd_move_menu_axis();
801
 static void lcd_move_menu_axis();
802
 
802
 
803
-static void _lcd_move(const char *name, AxisEnum axis, int min, int max) {
803
+static void _lcd_move(const char* name, AxisEnum axis, int min, int max) {
804
   if (encoderPosition != 0) {
804
   if (encoderPosition != 0) {
805
     refresh_cmd_timeout();
805
     refresh_cmd_timeout();
806
     current_position[axis] += float((int)encoderPosition) * move_menu_scale;
806
     current_position[axis] += float((int)encoderPosition) * move_menu_scale;
1179
     MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &abort_on_endstop_hit);
1179
     MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &abort_on_endstop_hit);
1180
   #endif
1180
   #endif
1181
   #if ENABLED(SCARA)
1181
   #if ENABLED(SCARA)
1182
-    MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS],0.5,2);
1183
-    MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS],0.5,2);
1182
+    MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS], 0.5, 2);
1183
+    MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS], 0.5, 2);
1184
   #endif
1184
   #endif
1185
   END_MENU();
1185
   END_MENU();
1186
 }
1186
 }
1289
    *
1289
    *
1290
    */
1290
    */
1291
   void lcd_sdcard_menu() {
1291
   void lcd_sdcard_menu() {
1292
-    if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return;	// nothing to do (so don't thrash the SD card)
1292
+    if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
1293
     uint16_t fileCnt = card.getnrfilenames();
1293
     uint16_t fileCnt = card.getnrfilenames();
1294
     START_MENU();
1294
     START_MENU();
1295
     MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
1295
     MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
1323
     END_MENU();
1323
     END_MENU();
1324
   }
1324
   }
1325
 
1325
 
1326
- #endif //SDSUPPORT
1326
+#endif //SDSUPPORT
1327
 
1327
 
1328
 /**
1328
 /**
1329
  *
1329
  *
1336
     if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
1336
     if ((int32_t)encoderPosition < 0) encoderPosition = 0; \
1337
     if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
1337
     if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \
1338
     if (lcdDrawUpdate) \
1338
     if (lcdDrawUpdate) \
1339
-        lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1339
+      lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
1340
     if (isClicked) { \
1340
     if (isClicked) { \
1341
       *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1341
       *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
1342
       lcd_goto_menu(prevMenu, prevEncoderPosition); \
1342
       lcd_goto_menu(prevMenu, prevEncoderPosition); \
1348
   static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
1348
   static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \
1349
     prevMenu = currentMenu; \
1349
     prevMenu = currentMenu; \
1350
     prevEncoderPosition = encoderPosition; \
1350
     prevEncoderPosition = encoderPosition; \
1351
-     \
1351
+    \
1352
     lcdDrawUpdate = 2; \
1352
     lcdDrawUpdate = 2; \
1353
     currentMenu = menu_edit_ ## _name; \
1353
     currentMenu = menu_edit_ ## _name; \
1354
-     \
1354
+    \
1355
     editLabel = pstr; \
1355
     editLabel = pstr; \
1356
     editValue = ptr; \
1356
     editValue = ptr; \
1357
     minEditValue = minValue * scale; \
1357
     minEditValue = minValue * scale; \
1433
 void lcd_quick_feedback() {
1433
 void lcd_quick_feedback() {
1434
   lcdDrawUpdate = 2;
1434
   lcdDrawUpdate = 2;
1435
   next_button_update_ms = millis() + 500;
1435
   next_button_update_ms = millis() + 500;
1436
-    
1436
+
1437
   #if ENABLED(LCD_USE_I2C_BUZZER)
1437
   #if ENABLED(LCD_USE_I2C_BUZZER)
1438
     #ifndef LCD_FEEDBACK_FREQUENCY_HZ
1438
     #ifndef LCD_FEEDBACK_FREQUENCY_HZ
1439
       #define LCD_FEEDBACK_FREQUENCY_HZ 100
1439
       #define LCD_FEEDBACK_FREQUENCY_HZ 100
1440
     #endif
1440
     #endif
1441
     #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
1441
     #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
1442
       #define LCD_FEEDBACK_FREQUENCY_DURATION_MS (1000/6)
1442
       #define LCD_FEEDBACK_FREQUENCY_DURATION_MS (1000/6)
1443
-    #endif    
1443
+    #endif
1444
     lcd.buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ);
1444
     lcd.buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ);
1445
   #elif PIN_EXISTS(BEEPER)
1445
   #elif PIN_EXISTS(BEEPER)
1446
     #ifndef LCD_FEEDBACK_FREQUENCY_HZ
1446
     #ifndef LCD_FEEDBACK_FREQUENCY_HZ
1474
     char cmd[30];
1474
     char cmd[30];
1475
     char* c;
1475
     char* c;
1476
     sprintf_P(cmd, PSTR("M23 %s"), filename);
1476
     sprintf_P(cmd, PSTR("M23 %s"), filename);
1477
-    for(c = &cmd[4]; *c; c++) *c = tolower(*c);
1477
+    for (c = &cmd[4]; *c; c++) *c = tolower(*c);
1478
     enqueuecommand(cmd);
1478
     enqueuecommand(cmd);
1479
     enqueuecommands_P(PSTR("M24"));
1479
     enqueuecommands_P(PSTR("M24"));
1480
     lcd_return_to_status();
1480
     lcd_return_to_status();
1497
 
1497
 
1498
 /** LCD API **/
1498
 /** LCD API **/
1499
 void lcd_init() {
1499
 void lcd_init() {
1500
+
1500
   lcd_implementation_init();
1501
   lcd_implementation_init();
1501
 
1502
 
1502
   #if ENABLED(NEWPANEL)
1503
   #if ENABLED(NEWPANEL)
1503
 
1504
 
1504
     SET_INPUT(BTN_EN1);
1505
     SET_INPUT(BTN_EN1);
1505
     SET_INPUT(BTN_EN2);
1506
     SET_INPUT(BTN_EN2);
1506
-    WRITE(BTN_EN1,HIGH);
1507
-    WRITE(BTN_EN2,HIGH);
1508
-  #if BTN_ENC > 0
1509
-    SET_INPUT(BTN_ENC);
1510
-    WRITE(BTN_ENC,HIGH);
1511
-  #endif
1512
-  #if ENABLED(REPRAPWORLD_KEYPAD)
1513
-    pinMode(SHIFT_CLK,OUTPUT);
1514
-    pinMode(SHIFT_LD,OUTPUT);
1515
-    pinMode(SHIFT_OUT,INPUT);
1516
-    WRITE(SHIFT_OUT,HIGH);
1517
-    WRITE(SHIFT_LD,HIGH);
1518
-  #endif
1519
-#else  // Not NEWPANEL
1520
-  #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register
1521
-     pinMode (SR_DATA_PIN, OUTPUT);
1522
-     pinMode (SR_CLK_PIN, OUTPUT);
1523
-  #elif defined(SHIFT_CLK)
1524
-     pinMode(SHIFT_CLK,OUTPUT);
1525
-     pinMode(SHIFT_LD,OUTPUT);
1526
-     pinMode(SHIFT_EN,OUTPUT);
1527
-     pinMode(SHIFT_OUT,INPUT);
1528
-     WRITE(SHIFT_OUT,HIGH);
1529
-     WRITE(SHIFT_LD,HIGH);
1530
-     WRITE(SHIFT_EN,LOW);
1531
-  #endif // SR_LCD_2W_NL
1532
-#endif//!NEWPANEL
1507
+    WRITE(BTN_EN1, HIGH);
1508
+    WRITE(BTN_EN2, HIGH);
1509
+
1510
+    #if BTN_ENC > 0
1511
+      SET_INPUT(BTN_ENC);
1512
+      WRITE(BTN_ENC, HIGH);
1513
+    #endif
1514
+
1515
+    #if ENABLED(REPRAPWORLD_KEYPAD)
1516
+      pinMode(SHIFT_CLK, OUTPUT);
1517
+      pinMode(SHIFT_LD, OUTPUT);
1518
+      pinMode(SHIFT_OUT, INPUT);
1519
+      WRITE(SHIFT_OUT, HIGH);
1520
+      WRITE(SHIFT_LD, HIGH);
1521
+    #endif
1522
+
1523
+  #else  // Not NEWPANEL
1524
+
1525
+    #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register
1526
+      pinMode(SR_DATA_PIN, OUTPUT);
1527
+      pinMode(SR_CLK_PIN, OUTPUT);
1528
+    #elif defined(SHIFT_CLK)
1529
+      pinMode(SHIFT_CLK, OUTPUT);
1530
+      pinMode(SHIFT_LD, OUTPUT);
1531
+      pinMode(SHIFT_EN, OUTPUT);
1532
+      pinMode(SHIFT_OUT, INPUT);
1533
+      WRITE(SHIFT_OUT, HIGH);
1534
+      WRITE(SHIFT_LD, HIGH);
1535
+      WRITE(SHIFT_EN, LOW);
1536
+    #endif // SR_LCD_2W_NL
1537
+
1538
+  #endif//!NEWPANEL
1533
 
1539
 
1534
   #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
1540
   #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
1535
     pinMode(SD_DETECT_PIN, INPUT);
1541
     pinMode(SD_DETECT_PIN, INPUT);
1548
   #endif
1554
   #endif
1549
 }
1555
 }
1550
 
1556
 
1551
-int lcd_strlen(char *s) {
1557
+int lcd_strlen(char* s) {
1552
   int i = 0, j = 0;
1558
   int i = 0, j = 0;
1553
   while (s[i]) {
1559
   while (s[i]) {
1554
     if ((s[i] & 0xc0) != 0x80) j++;
1560
     if ((s[i] & 0xc0) != 0x80) j++;
1557
   return j;
1563
   return j;
1558
 }
1564
 }
1559
 
1565
 
1560
-int lcd_strlen_P(const char *s) {
1566
+int lcd_strlen_P(const char* s) {
1561
   int j = 0;
1567
   int j = 0;
1562
   while (pgm_read_byte(s)) {
1568
   while (pgm_read_byte(s)) {
1563
     if ((pgm_read_byte(s) & 0xc0) != 0x80) j++;
1569
     if ((pgm_read_byte(s) & 0xc0) != 0x80) j++;
1614
     }
1620
     }
1615
 
1621
 
1616
   #endif //SDSUPPORT && SD_DETECT_PIN
1622
   #endif //SDSUPPORT && SD_DETECT_PIN
1617
-  
1623
+
1618
   millis_t ms = millis();
1624
   millis_t ms = millis();
1619
   if (ms > next_lcd_update_ms) {
1625
   if (ms > next_lcd_update_ms) {
1620
 
1626
 
1683
       }
1689
       }
1684
     }
1690
     }
1685
     #if ENABLED(DOGLCD)  // Changes due to different driver architecture of the DOGM display
1691
     #if ENABLED(DOGLCD)  // Changes due to different driver architecture of the DOGM display
1686
-      if (lcdDrawUpdate) {
1687
-        blink++;     // Variable for fan animation and alive dot
1688
-        u8g.firstPage();
1689
-        do {
1690
-          lcd_setFont(FONT_MENU);
1691
-          u8g.setPrintPos(125, 0);
1692
-          if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
1693
-          u8g.drawPixel(127, 63); // draw alive dot
1694
-          u8g.setColorIndex(1); // black on white
1695
-          (*currentMenu)();
1696
-        } while( u8g.nextPage() );
1697
-      }
1692
+        if (lcdDrawUpdate) {
1693
+          blink++;     // Variable for fan animation and alive dot
1694
+          u8g.firstPage();
1695
+          do {
1696
+            lcd_setFont(FONT_MENU);
1697
+            u8g.setPrintPos(125, 0);
1698
+            if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
1699
+            u8g.drawPixel(127, 63); // draw alive dot
1700
+            u8g.setColorIndex(1); // black on white
1701
+            (*currentMenu)();
1702
+          } while (u8g.nextPage());
1703
+        }
1698
     #else
1704
     #else
1699
       if (lcdDrawUpdate)
1705
       if (lcdDrawUpdate)
1700
         (*currentMenu)();
1706
         (*currentMenu)();
1749
   void dontExpireStatus() { expire_status_ms = 0; }
1755
   void dontExpireStatus() { expire_status_ms = 0; }
1750
 #endif
1756
 #endif
1751
 
1757
 
1752
-void set_utf_strlen(char *s, uint8_t n) {
1758
+void set_utf_strlen(char* s, uint8_t n) {
1753
   uint8_t i = 0, j = 0;
1759
   uint8_t i = 0, j = 0;
1754
   while (s[i] && (j < n)) {
1760
   while (s[i] && (j < n)) {
1755
     if ((s[i] & 0xc0u) != 0x80u) j++;
1761
     if ((s[i] & 0xc0u) != 0x80u) j++;
1763
 
1769
 
1764
 void lcd_setstatus(const char* message, bool persist) {
1770
 void lcd_setstatus(const char* message, bool persist) {
1765
   if (lcd_status_message_level > 0) return;
1771
   if (lcd_status_message_level > 0) return;
1766
-  strncpy(lcd_status_message, message, 3*LCD_WIDTH);
1772
+  strncpy(lcd_status_message, message, 3 * LCD_WIDTH);
1767
   set_utf_strlen(lcd_status_message, LCD_WIDTH);
1773
   set_utf_strlen(lcd_status_message, LCD_WIDTH);
1768
   lcd_finishstatus(persist);
1774
   lcd_finishstatus(persist);
1769
 }
1775
 }
1770
 
1776
 
1771
 void lcd_setstatuspgm(const char* message, uint8_t level) {
1777
 void lcd_setstatuspgm(const char* message, uint8_t level) {
1772
   if (level >= lcd_status_message_level) {
1778
   if (level >= lcd_status_message_level) {
1773
-    strncpy_P(lcd_status_message, message, 3*LCD_WIDTH);
1779
+    strncpy_P(lcd_status_message, message, 3 * LCD_WIDTH);
1774
     set_utf_strlen(lcd_status_message, LCD_WIDTH);
1780
     set_utf_strlen(lcd_status_message, LCD_WIDTH);
1775
     lcd_status_message_level = level;
1781
     lcd_status_message_level = level;
1776
     lcd_finishstatus(level > 0);
1782
     lcd_finishstatus(level > 0);
1825
       #endif
1831
       #endif
1826
       #if ENABLED(REPRAPWORLD_KEYPAD)
1832
       #if ENABLED(REPRAPWORLD_KEYPAD)
1827
         // for the reprapworld_keypad
1833
         // for the reprapworld_keypad
1828
-        uint8_t newbutton_reprapworld_keypad=0;
1834
+        uint8_t newbutton_reprapworld_keypad = 0;
1829
         WRITE(SHIFT_LD, LOW);
1835
         WRITE(SHIFT_LD, LOW);
1830
         WRITE(SHIFT_LD, HIGH);
1836
         WRITE(SHIFT_LD, HIGH);
1831
-        for(int8_t i = 0; i < 8; i++) {
1837
+        for (int8_t i = 0; i < 8; i++) {
1832
           newbutton_reprapworld_keypad >>= 1;
1838
           newbutton_reprapworld_keypad >>= 1;
1833
           if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7);
1839
           if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7);
1834
           WRITE(SHIFT_CLK, HIGH);
1840
           WRITE(SHIFT_CLK, HIGH);
1835
           WRITE(SHIFT_CLK, LOW);
1841
           WRITE(SHIFT_CLK, LOW);
1836
         }
1842
         }
1837
-        buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
1843
+        buttons_reprapworld_keypad = ~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
1838
       #endif
1844
       #endif
1839
     #else   //read it from the shift register
1845
     #else   //read it from the shift register
1840
       uint8_t newbutton = 0;
1846
       uint8_t newbutton = 0;
1841
       WRITE(SHIFT_LD, LOW);
1847
       WRITE(SHIFT_LD, LOW);
1842
       WRITE(SHIFT_LD, HIGH);
1848
       WRITE(SHIFT_LD, HIGH);
1843
       unsigned char tmp_buttons = 0;
1849
       unsigned char tmp_buttons = 0;
1844
-      for(int8_t i=0; i<8; i++) {
1850
+      for (int8_t i = 0; i < 8; i++) {
1845
         newbutton >>= 1;
1851
         newbutton >>= 1;
1846
         if (READ(SHIFT_OUT)) newbutton |= BIT(7);
1852
         if (READ(SHIFT_OUT)) newbutton |= BIT(7);
1847
         WRITE(SHIFT_CLK, HIGH);
1853
         WRITE(SHIFT_CLK, HIGH);
1851
     #endif //!NEWPANEL
1857
     #endif //!NEWPANEL
1852
 
1858
 
1853
     //manage encoder rotation
1859
     //manage encoder rotation
1854
-    uint8_t enc=0;
1860
+    uint8_t enc = 0;
1855
     if (buttons & EN_A) enc |= B01;
1861
     if (buttons & EN_A) enc |= B01;
1856
     if (buttons & EN_B) enc |= B10;
1862
     if (buttons & EN_B) enc |= B10;
1857
     if (enc != lastEncoderBits) {
1863
     if (enc != lastEncoderBits) {
1858
-      switch(enc) {
1864
+      switch (enc) {
1859
         case encrot0:
1865
         case encrot0:
1860
-          if (lastEncoderBits==encrot3) encoderDiff++;
1861
-          else if (lastEncoderBits==encrot1) encoderDiff--;
1866
+          if (lastEncoderBits == encrot3) encoderDiff++;
1867
+          else if (lastEncoderBits == encrot1) encoderDiff--;
1862
           break;
1868
           break;
1863
         case encrot1:
1869
         case encrot1:
1864
-          if (lastEncoderBits==encrot0) encoderDiff++;
1865
-          else if (lastEncoderBits==encrot2) encoderDiff--;
1870
+          if (lastEncoderBits == encrot0) encoderDiff++;
1871
+          else if (lastEncoderBits == encrot2) encoderDiff--;
1866
           break;
1872
           break;
1867
         case encrot2:
1873
         case encrot2:
1868
-          if (lastEncoderBits==encrot1) encoderDiff++;
1869
-          else if (lastEncoderBits==encrot3) encoderDiff--;
1874
+          if (lastEncoderBits == encrot1) encoderDiff++;
1875
+          else if (lastEncoderBits == encrot3) encoderDiff--;
1870
           break;
1876
           break;
1871
         case encrot3:
1877
         case encrot3:
1872
-          if (lastEncoderBits==encrot2) encoderDiff++;
1873
-          else if (lastEncoderBits==encrot0) encoderDiff--;
1878
+          if (lastEncoderBits == encrot2) encoderDiff++;
1879
+          else if (lastEncoderBits == encrot0) encoderDiff--;
1874
           break;
1880
           break;
1875
       }
1881
       }
1876
     }
1882
     }
1896
 char conv[8];
1902
 char conv[8];
1897
 
1903
 
1898
 // Convert float to string with +123.4 format
1904
 // Convert float to string with +123.4 format
1899
-char *ftostr3(const float &x) {
1905
+char* ftostr3(const float& x) {
1900
   return itostr3((int)x);
1906
   return itostr3((int)x);
1901
 }
1907
 }
1902
 
1908
 
1903
 // Convert int to string with 12 format
1909
 // Convert int to string with 12 format
1904
-char *itostr2(const uint8_t &x) {
1910
+char* itostr2(const uint8_t& x) {
1905
   //sprintf(conv,"%5.1f",x);
1911
   //sprintf(conv,"%5.1f",x);
1906
   int xx = x;
1912
   int xx = x;
1907
   conv[0] = (xx / 10) % 10 + '0';
1913
   conv[0] = (xx / 10) % 10 + '0';
1911
 }
1917
 }
1912
 
1918
 
1913
 // Convert float to string with +123.4 format
1919
 // Convert float to string with +123.4 format
1914
-char *ftostr31(const float &x) {
1920
+char* ftostr31(const float& x) {
1915
   int xx = abs(x * 10);
1921
   int xx = abs(x * 10);
1916
   conv[0] = (x >= 0) ? '+' : '-';
1922
   conv[0] = (x >= 0) ? '+' : '-';
1917
   conv[1] = (xx / 1000) % 10 + '0';
1923
   conv[1] = (xx / 1000) % 10 + '0';
1924
 }
1930
 }
1925
 
1931
 
1926
 // Convert float to string with 123.4 format, dropping sign
1932
 // Convert float to string with 123.4 format, dropping sign
1927
-char *ftostr31ns(const float &x) {
1933
+char* ftostr31ns(const float& x) {
1928
   int xx = abs(x * 10);
1934
   int xx = abs(x * 10);
1929
   conv[0] = (xx / 1000) % 10 + '0';
1935
   conv[0] = (xx / 1000) % 10 + '0';
1930
   conv[1] = (xx / 100) % 10 + '0';
1936
   conv[1] = (xx / 100) % 10 + '0';
1936
 }
1942
 }
1937
 
1943
 
1938
 // Convert float to string with 123.4 format
1944
 // Convert float to string with 123.4 format
1939
-char *ftostr32(const float &x) {
1945
+char* ftostr32(const float& x) {
1940
   long xx = abs(x * 100);
1946
   long xx = abs(x * 100);
1941
   conv[0] = x >= 0 ? (xx / 10000) % 10 + '0' : '-';
1947
   conv[0] = x >= 0 ? (xx / 10000) % 10 + '0' : '-';
1942
   conv[1] = (xx / 1000) % 10 + '0';
1948
   conv[1] = (xx / 1000) % 10 + '0';
1949
 }
1955
 }
1950
 
1956
 
1951
 // Convert float to string with 1.234 format
1957
 // Convert float to string with 1.234 format
1952
-char *ftostr43(const float &x) {
1953
-	long xx = x * 1000;
1954
-    if (xx >= 0)
1955
-		conv[0] = (xx / 1000) % 10 + '0';
1956
-	else
1957
-		conv[0] = '-';
1958
-	xx = abs(xx);
1959
-	conv[1] = '.';
1960
-	conv[2] = (xx / 100) % 10 + '0';
1961
-	conv[3] = (xx / 10) % 10 + '0';
1962
-	conv[4] = (xx) % 10 + '0';
1963
-	conv[5] = 0;
1964
-	return conv;
1958
+char* ftostr43(const float& x) {
1959
+  long xx = x * 1000;
1960
+  if (xx >= 0)
1961
+    conv[0] = (xx / 1000) % 10 + '0';
1962
+  else
1963
+    conv[0] = '-';
1964
+  xx = abs(xx);
1965
+  conv[1] = '.';
1966
+  conv[2] = (xx / 100) % 10 + '0';
1967
+  conv[3] = (xx / 10) % 10 + '0';
1968
+  conv[4] = (xx) % 10 + '0';
1969
+  conv[5] = 0;
1970
+  return conv;
1965
 }
1971
 }
1966
 
1972
 
1967
 // Convert float to string with 1.23 format
1973
 // Convert float to string with 1.23 format
1968
-char *ftostr12ns(const float &x) {
1969
-  long xx=x*100;
1970
-  
1971
-  xx=abs(xx);
1972
-  conv[0]=(xx/100)%10+'0';
1973
-  conv[1]='.';
1974
-  conv[2]=(xx/10)%10+'0';
1975
-  conv[3]=(xx)%10+'0';
1976
-  conv[4]=0;
1974
+char* ftostr12ns(const float& x) {
1975
+  long xx = x * 100;
1976
+  xx = abs(xx);
1977
+  conv[0] = (xx / 100) % 10 + '0';
1978
+  conv[1] = '.';
1979
+  conv[2] = (xx / 10) % 10 + '0';
1980
+  conv[3] = (xx) % 10 + '0';
1981
+  conv[4] = 0;
1977
   return conv;
1982
   return conv;
1978
 }
1983
 }
1979
 
1984
 
1980
 // Convert float to space-padded string with -_23.4_ format
1985
 // Convert float to space-padded string with -_23.4_ format
1981
-char *ftostr32sp(const float &x) {
1986
+char* ftostr32sp(const float& x) {
1982
   long xx = abs(x * 100);
1987
   long xx = abs(x * 100);
1983
   uint8_t dig;
1988
   uint8_t dig;
1984
-
1985
   if (x < 0) { // negative val = -_0
1989
   if (x < 0) { // negative val = -_0
1986
     conv[0] = '-';
1990
     conv[0] = '-';
1987
     dig = (xx / 1000) % 10;
1991
     dig = (xx / 1000) % 10;
2024
 }
2028
 }
2025
 
2029
 
2026
 // Convert int to lj string with +123.0 format
2030
 // Convert int to lj string with +123.0 format
2027
-char *itostr31(const int &x) {
2031
+char* itostr31(const int& x) {
2028
   conv[0] = x >= 0 ? '+' : '-';
2032
   conv[0] = x >= 0 ? '+' : '-';
2029
   int xx = abs(x);
2033
   int xx = abs(x);
2030
   conv[1] = (xx / 100) % 10 + '0';
2034
   conv[1] = (xx / 100) % 10 + '0';
2037
 }
2041
 }
2038
 
2042
 
2039
 // Convert int to rj string with 123 or -12 format
2043
 // Convert int to rj string with 123 or -12 format
2040
-char *itostr3(const int &x) {
2044
+char* itostr3(const int& x) {
2041
   int xx = x;
2045
   int xx = x;
2042
   if (xx < 0) {
2046
   if (xx < 0) {
2043
-     conv[0] = '-';
2044
-     xx = -xx;
2047
+    conv[0] = '-';
2048
+    xx = -xx;
2045
   }
2049
   }
2046
   else
2050
   else
2047
     conv[0] = xx >= 100 ? (xx / 100) % 10 + '0' : ' ';
2051
     conv[0] = xx >= 100 ? (xx / 100) % 10 + '0' : ' ';
2053
 }
2057
 }
2054
 
2058
 
2055
 // Convert int to lj string with 123 format
2059
 // Convert int to lj string with 123 format
2056
-char *itostr3left(const int &xx) {
2060
+char* itostr3left(const int& xx) {
2057
   if (xx >= 100) {
2061
   if (xx >= 100) {
2058
     conv[0] = (xx / 100) % 10 + '0';
2062
     conv[0] = (xx / 100) % 10 + '0';
2059
     conv[1] = (xx / 10) % 10 + '0';
2063
     conv[1] = (xx / 10) % 10 + '0';
2073
 }
2077
 }
2074
 
2078
 
2075
 // Convert int to rj string with 1234 format
2079
 // Convert int to rj string with 1234 format
2076
-char *itostr4(const int &xx) {
2080
+char* itostr4(const int& xx) {
2077
   conv[0] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' ';
2081
   conv[0] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' ';
2078
   conv[1] = xx >= 100 ? (xx / 100) % 10 + '0' : ' ';
2082
   conv[1] = xx >= 100 ? (xx / 100) % 10 + '0' : ' ';
2079
   conv[2] = xx >= 10 ? (xx / 10) % 10 + '0' : ' ';
2083
   conv[2] = xx >= 10 ? (xx / 10) % 10 + '0' : ' ';
2083
 }
2087
 }
2084
 
2088
 
2085
 // Convert float to rj string with 12345 format
2089
 // Convert float to rj string with 12345 format
2086
-char *ftostr5(const float &x) {
2090
+char* ftostr5(const float& x) {
2087
   long xx = abs(x);
2091
   long xx = abs(x);
2088
   conv[0] = xx >= 10000 ? (xx / 10000) % 10 + '0' : ' ';
2092
   conv[0] = xx >= 10000 ? (xx / 10000) % 10 + '0' : ' ';
2089
   conv[1] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' ';
2093
   conv[1] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' ';
2095
 }
2099
 }
2096
 
2100
 
2097
 // Convert float to string with +1234.5 format
2101
 // Convert float to string with +1234.5 format
2098
-char *ftostr51(const float &x) {
2102
+char* ftostr51(const float& x) {
2099
   long xx = abs(x * 10);
2103
   long xx = abs(x * 10);
2100
   conv[0] = (x >= 0) ? '+' : '-';
2104
   conv[0] = (x >= 0) ? '+' : '-';
2101
   conv[1] = (xx / 10000) % 10 + '0';
2105
   conv[1] = (xx / 10000) % 10 + '0';
2109
 }
2113
 }
2110
 
2114
 
2111
 // Convert float to string with +123.45 format
2115
 // Convert float to string with +123.45 format
2112
-char *ftostr52(const float &x) {
2116
+char* ftostr52(const float& x) {
2113
   conv[0] = (x >= 0) ? '+' : '-';
2117
   conv[0] = (x >= 0) ? '+' : '-';
2114
   long xx = abs(x * 100);
2118
   long xx = abs(x * 100);
2115
   conv[1] = (xx / 10000) % 10 + '0';
2119
   conv[1] = (xx / 10000) % 10 + '0';
2151
         if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
2155
         if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
2152
         mbl.set_z(ix, iy, current_position[Z_AXIS]);
2156
         mbl.set_z(ix, iy, current_position[Z_AXIS]);
2153
         _lcd_level_bed_position++;
2157
         _lcd_level_bed_position++;
2154
-        if (_lcd_level_bed_position == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS) {
2158
+        if (_lcd_level_bed_position == MESH_NUM_X_POINTS * MESH_NUM_Y_POINTS) {
2155
           current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
2159
           current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
2156
           line_to_current(Z_AXIS);
2160
           line_to_current(Z_AXIS);
2157
           mbl.active = 1;
2161
           mbl.active = 1;

+ 37
- 37
Marlin/ultralcd.h Переглянути файл

5
 #if ENABLED(ULTRA_LCD)
5
 #if ENABLED(ULTRA_LCD)
6
   #include "buzzer.h"
6
   #include "buzzer.h"
7
 
7
 
8
-  int lcd_strlen(char *s);
9
-  int lcd_strlen_P(const char *s);
8
+  int lcd_strlen(char* s);
9
+  int lcd_strlen_P(const char* s);
10
   void lcd_update();
10
   void lcd_update();
11
   void lcd_init();
11
   void lcd_init();
12
   bool lcd_hasstatus();
12
   bool lcd_hasstatus();
53
   extern int absPreheatFanSpeed;
53
   extern int absPreheatFanSpeed;
54
 
54
 
55
   extern bool cancel_heatup;
55
   extern bool cancel_heatup;
56
-  
56
+
57
   #if ENABLED(FILAMENT_LCD_DISPLAY)
57
   #if ENABLED(FILAMENT_LCD_DISPLAY)
58
     extern millis_t previous_lcd_status_ms;
58
     extern millis_t previous_lcd_status_ms;
59
   #endif
59
   #endif
69
 
69
 
70
     #define LCD_CLICKED (buttons&EN_C)
70
     #define LCD_CLICKED (buttons&EN_C)
71
     #if ENABLED(REPRAPWORLD_KEYPAD)
71
     #if ENABLED(REPRAPWORLD_KEYPAD)
72
-  	  #define EN_REPRAPWORLD_KEYPAD_F3 (BIT(BLEN_REPRAPWORLD_KEYPAD_F3))
73
-  	  #define EN_REPRAPWORLD_KEYPAD_F2 (BIT(BLEN_REPRAPWORLD_KEYPAD_F2))
74
-  	  #define EN_REPRAPWORLD_KEYPAD_F1 (BIT(BLEN_REPRAPWORLD_KEYPAD_F1))
75
-  	  #define EN_REPRAPWORLD_KEYPAD_UP (BIT(BLEN_REPRAPWORLD_KEYPAD_UP))
76
-  	  #define EN_REPRAPWORLD_KEYPAD_RIGHT (BIT(BLEN_REPRAPWORLD_KEYPAD_RIGHT))
77
-  	  #define EN_REPRAPWORLD_KEYPAD_MIDDLE (BIT(BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
78
-  	  #define EN_REPRAPWORLD_KEYPAD_DOWN (BIT(BLEN_REPRAPWORLD_KEYPAD_DOWN))
79
-  	  #define EN_REPRAPWORLD_KEYPAD_LEFT (BIT(BLEN_REPRAPWORLD_KEYPAD_LEFT))
80
-
81
-  	  #define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
82
-  	  #define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2)
83
-  	  #define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3)
84
-  	  #define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT)
85
-  	  #define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT)
86
-  	  #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
87
-  	  #define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
88
-  	  #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
72
+      #define EN_REPRAPWORLD_KEYPAD_F3 (BIT(BLEN_REPRAPWORLD_KEYPAD_F3))
73
+      #define EN_REPRAPWORLD_KEYPAD_F2 (BIT(BLEN_REPRAPWORLD_KEYPAD_F2))
74
+      #define EN_REPRAPWORLD_KEYPAD_F1 (BIT(BLEN_REPRAPWORLD_KEYPAD_F1))
75
+      #define EN_REPRAPWORLD_KEYPAD_UP (BIT(BLEN_REPRAPWORLD_KEYPAD_UP))
76
+      #define EN_REPRAPWORLD_KEYPAD_RIGHT (BIT(BLEN_REPRAPWORLD_KEYPAD_RIGHT))
77
+      #define EN_REPRAPWORLD_KEYPAD_MIDDLE (BIT(BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
78
+      #define EN_REPRAPWORLD_KEYPAD_DOWN (BIT(BLEN_REPRAPWORLD_KEYPAD_DOWN))
79
+      #define EN_REPRAPWORLD_KEYPAD_LEFT (BIT(BLEN_REPRAPWORLD_KEYPAD_LEFT))
80
+
81
+      #define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
82
+      #define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2)
83
+      #define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3)
84
+      #define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT)
85
+      #define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT)
86
+      #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
87
+      #define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
88
+      #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
89
     #endif //REPRAPWORLD_KEYPAD
89
     #endif //REPRAPWORLD_KEYPAD
90
   #else
90
   #else
91
     //atomic, do not change
91
     //atomic, do not change
97
     #define B_ST BIT(BL_ST)
97
     #define B_ST BIT(BL_ST)
98
     #define EN_B BIT(BLEN_B)
98
     #define EN_B BIT(BLEN_B)
99
     #define EN_A BIT(BLEN_A)
99
     #define EN_A BIT(BLEN_A)
100
-    
100
+
101
     #define LCD_CLICKED ((buttons&B_MI)||(buttons&B_ST))
101
     #define LCD_CLICKED ((buttons&B_MI)||(buttons&B_ST))
102
   #endif//NEWPANEL
102
   #endif//NEWPANEL
103
 
103
 
116
 
116
 
117
 #endif //ULTRA_LCD
117
 #endif //ULTRA_LCD
118
 
118
 
119
-char *itostr2(const uint8_t &x);
120
-char *itostr31(const int &xx);
121
-char *itostr3(const int &xx);
122
-char *itostr3left(const int &xx);
123
-char *itostr4(const int &xx);
124
-
125
-char *ftostr3(const float &x);
126
-char *ftostr31ns(const float &x); // float to string without sign character
127
-char *ftostr31(const float &x);
128
-char *ftostr32(const float &x);
129
-char *ftostr43(const float &x);
130
-char *ftostr12ns(const float &x); 
131
-char *ftostr32sp(const float &x); // remove zero-padding from ftostr32
132
-char *ftostr5(const float &x);
133
-char *ftostr51(const float &x);
134
-char *ftostr52(const float &x);
119
+char* itostr2(const uint8_t& x);
120
+char* itostr31(const int& xx);
121
+char* itostr3(const int& xx);
122
+char* itostr3left(const int& xx);
123
+char* itostr4(const int& xx);
124
+
125
+char* ftostr3(const float& x);
126
+char* ftostr31ns(const float& x); // float to string without sign character
127
+char* ftostr31(const float& x);
128
+char* ftostr32(const float& x);
129
+char* ftostr43(const float& x);
130
+char* ftostr12ns(const float& x);
131
+char* ftostr32sp(const float& x); // remove zero-padding from ftostr32
132
+char* ftostr5(const float& x);
133
+char* ftostr51(const float& x);
134
+char* ftostr52(const float& x);
135
 
135
 
136
 #endif //ULTRALCD_H
136
 #endif //ULTRALCD_H

+ 90
- 90
Marlin/ultralcd_implementation_hitachi_HD44780.h Переглянути файл

20
 // via a shift/i2c register.
20
 // via a shift/i2c register.
21
 
21
 
22
 #if ENABLED(ULTIPANEL)
22
 #if ENABLED(ULTIPANEL)
23
-// All UltiPanels might have an encoder - so this is always be mapped onto first two bits
24
-#define BLEN_B 1
25
-#define BLEN_A 0
23
+  // All UltiPanels might have an encoder - so this is always be mapped onto first two bits
24
+  #define BLEN_B 1
25
+  #define BLEN_A 0
26
 
26
 
27
-#define EN_B BIT(BLEN_B) // The two encoder pins are connected through BTN_EN1 and BTN_EN2
28
-#define EN_A BIT(BLEN_A)
29
-
30
-#if defined(BTN_ENC) && BTN_ENC > -1
31
-  // encoder click is directly connected
32
-  #define BLEN_C 2 
33
-  #define EN_C BIT(BLEN_C) 
34
-#endif
35
-  
36
-//
37
-// Setup other button mappings of each panel
38
-//
39
-#if ENABLED(LCD_I2C_VIKI)
40
-  #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
41
-
42
-  // button and encoder bit positions within 'buttons'
43
-  #define B_LE (BUTTON_LEFT<<B_I2C_BTN_OFFSET)    // The remaining normalized buttons are all read via I2C
44
-  #define B_UP (BUTTON_UP<<B_I2C_BTN_OFFSET)
45
-  #define B_MI (BUTTON_SELECT<<B_I2C_BTN_OFFSET)
46
-  #define B_DW (BUTTON_DOWN<<B_I2C_BTN_OFFSET)
47
-  #define B_RI (BUTTON_RIGHT<<B_I2C_BTN_OFFSET)
27
+  #define EN_B BIT(BLEN_B) // The two encoder pins are connected through BTN_EN1 and BTN_EN2
28
+  #define EN_A BIT(BLEN_A)
48
 
29
 
49
   #if defined(BTN_ENC) && BTN_ENC > -1
30
   #if defined(BTN_ENC) && BTN_ENC > -1
50
-    // the pause/stop/restart button is connected to BTN_ENC when used
51
-    #define B_ST (EN_C)                            // Map the pause/stop/resume button into its normalized functional name
52
-    #define LCD_CLICKED (buttons&(B_MI|B_RI|B_ST)) // pause/stop button also acts as click until we implement proper pause/stop.
53
-  #else
54
-    #define LCD_CLICKED (buttons&(B_MI|B_RI))
31
+    // encoder click is directly connected
32
+    #define BLEN_C 2
33
+    #define EN_C BIT(BLEN_C)
55
   #endif
34
   #endif
56
 
35
 
57
-  // I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update
58
-  #define LCD_HAS_SLOW_BUTTONS
59
-
60
-#elif ENABLED(LCD_I2C_PANELOLU2)
61
-  // encoder click can be read through I2C if not directly connected
62
-  #if BTN_ENC <= 0
36
+  //
37
+  // Setup other button mappings of each panel
38
+  //
39
+  #if ENABLED(LCD_I2C_VIKI)
63
     #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
40
     #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
64
 
41
 
65
-    #define B_MI (PANELOLU2_ENCODER_C<<B_I2C_BTN_OFFSET) // requires LiquidTWI2 library v1.2.3 or later
66
-
67
-    #define LCD_CLICKED (buttons&B_MI)
42
+    // button and encoder bit positions within 'buttons'
43
+    #define B_LE (BUTTON_LEFT<<B_I2C_BTN_OFFSET)    // The remaining normalized buttons are all read via I2C
44
+    #define B_UP (BUTTON_UP<<B_I2C_BTN_OFFSET)
45
+    #define B_MI (BUTTON_SELECT<<B_I2C_BTN_OFFSET)
46
+    #define B_DW (BUTTON_DOWN<<B_I2C_BTN_OFFSET)
47
+    #define B_RI (BUTTON_RIGHT<<B_I2C_BTN_OFFSET)
48
+
49
+    #if defined(BTN_ENC) && BTN_ENC > -1
50
+      // the pause/stop/restart button is connected to BTN_ENC when used
51
+      #define B_ST (EN_C)                            // Map the pause/stop/resume button into its normalized functional name
52
+      #define LCD_CLICKED (buttons&(B_MI|B_RI|B_ST)) // pause/stop button also acts as click until we implement proper pause/stop.
53
+    #else
54
+      #define LCD_CLICKED (buttons&(B_MI|B_RI))
55
+    #endif
68
 
56
 
69
     // I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update
57
     // I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update
70
     #define LCD_HAS_SLOW_BUTTONS
58
     #define LCD_HAS_SLOW_BUTTONS
71
-  #else
72
-    #define LCD_CLICKED (buttons&EN_C)
73
-  #endif
74
 
59
 
75
-#elif ENABLED(REPRAPWORLD_KEYPAD)
60
+  #elif ENABLED(LCD_I2C_PANELOLU2)
61
+    // encoder click can be read through I2C if not directly connected
62
+    #if BTN_ENC <= 0
63
+      #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C)
64
+
65
+      #define B_MI (PANELOLU2_ENCODER_C<<B_I2C_BTN_OFFSET) // requires LiquidTWI2 library v1.2.3 or later
66
+
67
+      #define LCD_CLICKED (buttons&B_MI)
68
+
69
+      // I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update
70
+      #define LCD_HAS_SLOW_BUTTONS
71
+    #else
72
+      #define LCD_CLICKED (buttons&EN_C)
73
+    #endif
74
+
75
+  #elif ENABLED(REPRAPWORLD_KEYPAD)
76
     // define register bit values, don't change it
76
     // define register bit values, don't change it
77
     #define BLEN_REPRAPWORLD_KEYPAD_F3 0
77
     #define BLEN_REPRAPWORLD_KEYPAD_F3 0
78
     #define BLEN_REPRAPWORLD_KEYPAD_F2 1
78
     #define BLEN_REPRAPWORLD_KEYPAD_F2 1
82
     #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
82
     #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
83
     #define BLEN_REPRAPWORLD_KEYPAD_DOWN 3
83
     #define BLEN_REPRAPWORLD_KEYPAD_DOWN 3
84
     #define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
84
     #define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
85
-    
85
+
86
     #define REPRAPWORLD_BTN_OFFSET 0 // bit offset into buttons for shift register values
86
     #define REPRAPWORLD_BTN_OFFSET 0 // bit offset into buttons for shift register values
87
 
87
 
88
     #define EN_REPRAPWORLD_KEYPAD_F3 BIT((BLEN_REPRAPWORLD_KEYPAD_F3+REPRAPWORLD_BTN_OFFSET))
88
     #define EN_REPRAPWORLD_KEYPAD_F3 BIT((BLEN_REPRAPWORLD_KEYPAD_F3+REPRAPWORLD_BTN_OFFSET))
99
     //#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons&EN_REPRAPWORLD_KEYPAD_UP)
99
     //#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons&EN_REPRAPWORLD_KEYPAD_UP)
100
     //#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons&EN_REPRAPWORLD_KEYPAD_MIDDLE)
100
     //#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons&EN_REPRAPWORLD_KEYPAD_MIDDLE)
101
 
101
 
102
-#elif ENABLED(NEWPANEL)
103
-  #define LCD_CLICKED (buttons&EN_C)
104
-
105
-#else // old style ULTIPANEL
106
-  //bits in the shift register that carry the buttons for:
107
-  // left up center down right red(stop)
108
-  #define BL_LE 7
109
-  #define BL_UP 6
110
-  #define BL_MI 5
111
-  #define BL_DW 4
112
-  #define BL_RI 3
113
-  #define BL_ST 2
114
-
115
-  //automatic, do not change
116
-  #define B_LE BIT(BL_LE)
117
-  #define B_UP BIT(BL_UP)
118
-  #define B_MI BIT(BL_MI)
119
-  #define B_DW BIT(BL_DW)
120
-  #define B_RI BIT(BL_RI)
121
-  #define B_ST BIT(BL_ST)
122
-  
123
-  #define LCD_CLICKED (buttons&(B_MI|B_ST))
124
-#endif
102
+  #elif ENABLED(NEWPANEL)
103
+    #define LCD_CLICKED (buttons&EN_C)
104
+
105
+  #else // old style ULTIPANEL
106
+    //bits in the shift register that carry the buttons for:
107
+    // left up center down right red(stop)
108
+    #define BL_LE 7
109
+    #define BL_UP 6
110
+    #define BL_MI 5
111
+    #define BL_DW 4
112
+    #define BL_RI 3
113
+    #define BL_ST 2
114
+
115
+    //automatic, do not change
116
+    #define B_LE BIT(BL_LE)
117
+    #define B_UP BIT(BL_UP)
118
+    #define B_MI BIT(BL_MI)
119
+    #define B_DW BIT(BL_DW)
120
+    #define B_RI BIT(BL_RI)
121
+    #define B_ST BIT(BL_ST)
122
+
123
+    #define LCD_CLICKED (buttons&(B_MI|B_ST))
124
+  #endif
125
 
125
 
126
 #endif //ULTIPANEL
126
 #endif //ULTIPANEL
127
 
127
 
137
   #define LCD_I2C_PIN_D5  5
137
   #define LCD_I2C_PIN_D5  5
138
   #define LCD_I2C_PIN_D6  6
138
   #define LCD_I2C_PIN_D6  6
139
   #define LCD_I2C_PIN_D7  7
139
   #define LCD_I2C_PIN_D7  7
140
-
140
+  
141
   #include <Wire.h>
141
   #include <Wire.h>
142
   #include <LCD.h>
142
   #include <LCD.h>
143
   #include <LiquidCrystal_I2C.h>
143
   #include <LiquidCrystal_I2C.h>
144
   #define LCD_CLASS LiquidCrystal_I2C
144
   #define LCD_CLASS LiquidCrystal_I2C
145
-  LCD_CLASS lcd(LCD_I2C_ADDRESS,LCD_I2C_PIN_EN,LCD_I2C_PIN_RW,LCD_I2C_PIN_RS,LCD_I2C_PIN_D4,LCD_I2C_PIN_D5,LCD_I2C_PIN_D6,LCD_I2C_PIN_D7);
145
+  LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_I2C_PIN_EN, LCD_I2C_PIN_RW, LCD_I2C_PIN_RS, LCD_I2C_PIN_D4, LCD_I2C_PIN_D5, LCD_I2C_PIN_D6, LCD_I2C_PIN_D7);
146
 
146
 
147
 #elif ENABLED(LCD_I2C_TYPE_MCP23017)
147
 #elif ENABLED(LCD_I2C_TYPE_MCP23017)
148
   //for the LED indicators (which maybe mapped to different things in lcd_implementation_update_indicators())
148
   //for the LED indicators (which maybe mapped to different things in lcd_implementation_update_indicators())
172
   #endif
172
   #endif
173
 
173
 
174
 #elif ENABLED(LCD_I2C_TYPE_PCA8574)
174
 #elif ENABLED(LCD_I2C_TYPE_PCA8574)
175
-    #include <LiquidCrystal_I2C.h>
176
-    #define LCD_CLASS LiquidCrystal_I2C
177
-    LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT);
175
+  #include <LiquidCrystal_I2C.h>
176
+  #define LCD_CLASS LiquidCrystal_I2C
177
+  LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT);
178
 
178
 
179
 // 2 wire Non-latching LCD SR from:
179
 // 2 wire Non-latching LCD SR from:
180
 // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
180
 // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
188
   // Standard directly connected LCD implementations
188
   // Standard directly connected LCD implementations
189
   #include <LiquidCrystal.h>
189
   #include <LiquidCrystal.h>
190
   #define LCD_CLASS LiquidCrystal
190
   #define LCD_CLASS LiquidCrystal
191
-  LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5,LCD_PINS_D6,LCD_PINS_D7);  //RS,Enable,D4,D5,D6,D7
191
+  LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5, LCD_PINS_D6, LCD_PINS_D7); //RS,Enable,D4,D5,D6,D7
192
 #endif
192
 #endif
193
 
193
 
194
 #include "utf_mapper.h"
194
 #include "utf_mapper.h"
208
 
208
 
209
 static void lcd_set_custom_characters(
209
 static void lcd_set_custom_characters(
210
   #if ENABLED(LCD_PROGRESS_BAR)
210
   #if ENABLED(LCD_PROGRESS_BAR)
211
-    bool progress_bar_set=true
211
+    bool progress_bar_set = true
212
   #endif
212
   #endif
213
 ) {
213
 ) {
214
   byte bedTemp[8] = {
214
   byte bedTemp[8] = {
331
       lcd.createChar(LCD_STR_CLOCK[0], clock);
331
       lcd.createChar(LCD_STR_CLOCK[0], clock);
332
       if (progress_bar_set) {
332
       if (progress_bar_set) {
333
         // Progress bar characters for info screen
333
         // Progress bar characters for info screen
334
-        for (int i=3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]);
334
+        for (int i = 3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]);
335
       }
335
       }
336
       else {
336
       else {
337
         // Custom characters for submenus
337
         // Custom characters for submenus
354
 
354
 
355
 static void lcd_implementation_init(
355
 static void lcd_implementation_init(
356
   #if ENABLED(LCD_PROGRESS_BAR)
356
   #if ENABLED(LCD_PROGRESS_BAR)
357
-    bool progress_bar_set=true
357
+    bool progress_bar_set = true
358
   #endif
358
   #endif
359
 ) {
359
 ) {
360
 
360
 
416
 #if ENABLED(SHOW_BOOTSCREEN)
416
 #if ENABLED(SHOW_BOOTSCREEN)
417
   void lcd_erase_line(int line) {
417
   void lcd_erase_line(int line) {
418
     lcd.setCursor(0, 3);
418
     lcd.setCursor(0, 3);
419
-    for (int i=0; i < LCD_WIDTH; i++)
419
+    for (int i = 0; i < LCD_WIDTH; i++)
420
       lcd_print(' ');
420
       lcd_print(' ');
421
   }
421
   }
422
 
422
 
423
-  // scrol the PSTR'text' in a 'len' wide field for 'time' milliseconds at position col,line
424
-  void lcd_scroll(int col, int line, const char * text, int len, int time) {
425
-    char tmp[LCD_WIDTH+1] = {0};
423
+  // Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line
424
+  void lcd_scroll(int col, int line, const char* text, int len, int time) {
425
+    char tmp[LCD_WIDTH + 1] = {0};
426
     int n = max(lcd_strlen_P(text) - len, 0);
426
     int n = max(lcd_strlen_P(text) - len, 0);
427
     for (int i = 0; i <= n; i++) {
427
     for (int i = 0; i <= n; i++) {
428
-      strncpy_P(tmp, text+i, min(len, LCD_WIDTH));
428
+      strncpy_P(tmp, text + i, min(len, LCD_WIDTH));
429
       lcd.setCursor(col, line);
429
       lcd.setCursor(col, line);
430
       lcd_print(tmp);
430
       lcd_print(tmp);
431
       delay(time / max(n, 1));
431
       delay(time / max(n, 1));
667
     lcd.setCursor(LCD_WIDTH - 6, 2);
667
     lcd.setCursor(LCD_WIDTH - 6, 2);
668
     lcd.print(LCD_STR_CLOCK[0]);
668
     lcd.print(LCD_STR_CLOCK[0]);
669
     if (print_job_start_ms != 0) {
669
     if (print_job_start_ms != 0) {
670
-      uint16_t time = millis()/60000 - print_job_start_ms/60000;
671
-      lcd.print(itostr2(time/60));
670
+      uint16_t time = millis() / 60000 - print_job_start_ms / 60000;
671
+      lcd.print(itostr2(time / 60));
672
       lcd.print(':');
672
       lcd.print(':');
673
-      lcd.print(itostr2(time%60));
673
+      lcd.print(itostr2(time % 60));
674
     }
674
     }
675
     else {
675
     else {
676
       lcd_printPGM(PSTR("--:--"));
676
       lcd_printPGM(PSTR("--:--"));
693
       if (millis() >= progress_bar_ms + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) {
693
       if (millis() >= progress_bar_ms + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) {
694
         int tix = (int)(card.percentDone() * LCD_WIDTH * 3) / 100,
694
         int tix = (int)(card.percentDone() * LCD_WIDTH * 3) / 100,
695
           cel = tix / 3, rem = tix % 3, i = LCD_WIDTH;
695
           cel = tix / 3, rem = tix % 3, i = LCD_WIDTH;
696
-        char msg[LCD_WIDTH+1], b = ' ';
696
+        char msg[LCD_WIDTH + 1], b = ' ';
697
         msg[i] = '\0';
697
         msg[i] = '\0';
698
         while (i--) {
698
         while (i--) {
699
           if (i == cel - 1)
699
           if (i == cel - 1)
700
             b = LCD_STR_PROGRESS[2];
700
             b = LCD_STR_PROGRESS[2];
701
           else if (i == cel && rem != 0)
701
           else if (i == cel && rem != 0)
702
-            b = LCD_STR_PROGRESS[rem-1];
702
+            b = LCD_STR_PROGRESS[rem - 1];
703
           msg[i] = b;
703
           msg[i] = b;
704
         }
704
         }
705
         lcd.print(msg);
705
         lcd.print(msg);
715
       lcd_printPGM(PSTR("Dia "));
715
       lcd_printPGM(PSTR("Dia "));
716
       lcd.print(ftostr12ns(filament_width_meas));
716
       lcd.print(ftostr12ns(filament_width_meas));
717
       lcd_printPGM(PSTR(" V"));
717
       lcd_printPGM(PSTR(" V"));
718
-      lcd.print(itostr3(100.0*volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
718
+      lcd.print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]));
719
   	  lcd.print('%');
719
   	  lcd.print('%');
720
   	  return;
720
   	  return;
721
     }
721
     }
734
     n -= lcd_print(c);
734
     n -= lcd_print(c);
735
     pstr++;
735
     pstr++;
736
   }
736
   }
737
-  while(n--) lcd.print(' ');
737
+  while (n--) lcd.print(' ');
738
   lcd.print(post_char);
738
   lcd.print(post_char);
739
 }
739
 }
740
 
740
 
859
       uint8_t slow_buttons;
859
       uint8_t slow_buttons;
860
       // Reading these buttons this is likely to be too slow to call inside interrupt context
860
       // Reading these buttons this is likely to be too slow to call inside interrupt context
861
       // so they are called during normal lcd_update
861
       // so they are called during normal lcd_update
862
-      slow_buttons = lcd.readButtons() << B_I2C_BTN_OFFSET; 
862
+      slow_buttons = lcd.readButtons() << B_I2C_BTN_OFFSET;
863
       #if ENABLED(LCD_I2C_VIKI)
863
       #if ENABLED(LCD_I2C_VIKI)
864
-        if ((slow_buttons & (B_MI|B_RI)) && millis() < next_button_update_ms) // LCD clicked
865
-          slow_buttons &= ~(B_MI|B_RI); // Disable LCD clicked buttons if screen is updated
864
+        if ((slow_buttons & (B_MI | B_RI)) && millis() < next_button_update_ms) // LCD clicked
865
+          slow_buttons &= ~(B_MI | B_RI); // Disable LCD clicked buttons if screen is updated
866
       #endif
866
       #endif
867
       return slow_buttons;
867
       return slow_buttons;
868
     #endif
868
     #endif

+ 58
- 71
Marlin/ultralcd_st7920_u8glib_rrd.h Переглянути файл

21
 
21
 
22
 #include <U8glib.h>
22
 #include <U8glib.h>
23
 
23
 
24
-static void ST7920_SWSPI_SND_8BIT(uint8_t val)
25
-{
24
+static void ST7920_SWSPI_SND_8BIT(uint8_t val) {
26
   uint8_t i;
25
   uint8_t i;
27
-  for( i=0; i<8; i++ )
28
-  {
26
+  for (i = 0; i < 8; i++) {
29
     WRITE(ST7920_CLK_PIN,0);
27
     WRITE(ST7920_CLK_PIN,0);
30
     #if F_CPU == 20000000
28
     #if F_CPU == 20000000
31
-      __asm__("nop\n\t"); 
29
+      __asm__("nop\n\t");
32
     #endif
30
     #endif
33
-    WRITE(ST7920_DAT_PIN,val&0x80); 
31
+    WRITE(ST7920_DAT_PIN,val&0x80);
34
     val<<=1;
32
     val<<=1;
35
     WRITE(ST7920_CLK_PIN,1);
33
     WRITE(ST7920_CLK_PIN,1);
36
     #if F_CPU == 20000000
34
     #if F_CPU == 20000000
37
-      __asm__("nop\n\t""nop\n\t"); 
35
+      __asm__("nop\n\t""nop\n\t");
38
     #endif
36
     #endif
39
   }
37
   }
40
 }
38
 }
46
 #define ST7920_WRITE_BYTE(a)     {ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xf0u));ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u));u8g_10MicroDelay();}
44
 #define ST7920_WRITE_BYTE(a)     {ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xf0u));ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u));u8g_10MicroDelay();}
47
 #define ST7920_WRITE_BYTES(p,l)  {uint8_t i;for(i=0;i<l;i++){ST7920_SWSPI_SND_8BIT(*p&0xf0);ST7920_SWSPI_SND_8BIT(*p<<4);p++;}u8g_10MicroDelay();}
45
 #define ST7920_WRITE_BYTES(p,l)  {uint8_t i;for(i=0;i<l;i++){ST7920_SWSPI_SND_8BIT(*p&0xf0);ST7920_SWSPI_SND_8BIT(*p<<4);p++;}u8g_10MicroDelay();}
48
 
46
 
49
-uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
50
-{
51
-  uint8_t i,y;
52
-  switch(msg)
53
-  {
54
-    case U8G_DEV_MSG_INIT:
55
-      {
56
-        OUT_WRITE(ST7920_CS_PIN,LOW);
57
-        OUT_WRITE(ST7920_DAT_PIN,LOW);
58
-        OUT_WRITE(ST7920_CLK_PIN,HIGH);
59
-
60
-        ST7920_CS();
61
-        u8g_Delay(120);                 //initial delay for boot up
47
+uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
48
+  uint8_t i, y;
49
+  switch (msg) {
50
+    case U8G_DEV_MSG_INIT: {
51
+      OUT_WRITE(ST7920_CS_PIN, LOW);
52
+      OUT_WRITE(ST7920_DAT_PIN, LOW);
53
+      OUT_WRITE(ST7920_CLK_PIN, HIGH);
54
+
55
+      ST7920_CS();
56
+      u8g_Delay(120);                 //initial delay for boot up
57
+      ST7920_SET_CMD();
58
+      ST7920_WRITE_BYTE(0x08);       //display off, cursor+blink off
59
+      ST7920_WRITE_BYTE(0x01);       //clear CGRAM ram
60
+      u8g_Delay(15);                 //delay for CGRAM clear
61
+      ST7920_WRITE_BYTE(0x3E);       //extended mode + GDRAM active
62
+      for (y = 0; y < LCD_PIXEL_HEIGHT / 2; y++) { //clear GDRAM
63
+        ST7920_WRITE_BYTE(0x80 | y); //set y
64
+        ST7920_WRITE_BYTE(0x80);     //set x = 0
65
+        ST7920_SET_DAT();
66
+        for (i = 0; i < 2 * LCD_PIXEL_WIDTH / 8; i++) //2x width clears both segments
67
+          ST7920_WRITE_BYTE(0);
62
         ST7920_SET_CMD();
68
         ST7920_SET_CMD();
63
-        ST7920_WRITE_BYTE(0x08);       //display off, cursor+blink off
64
-        ST7920_WRITE_BYTE(0x01);       //clear CGRAM ram
65
-        u8g_Delay(15);                 //delay for CGRAM clear
66
-        ST7920_WRITE_BYTE(0x3E);       //extended mode + GDRAM active
67
-        for(y=0;y<LCD_PIXEL_HEIGHT/2;y++)        //clear GDRAM
68
-        {
69
-          ST7920_WRITE_BYTE(0x80|y);   //set y
70
-          ST7920_WRITE_BYTE(0x80);     //set x = 0
71
-          ST7920_SET_DAT();
72
-          for(i=0;i<2*LCD_PIXEL_WIDTH/8;i++)     //2x width clears both segments
73
-            ST7920_WRITE_BYTE(0);
74
-          ST7920_SET_CMD();
75
-        }
76
-        ST7920_WRITE_BYTE(0x0C); //display on, cursor+blink off
77
-        ST7920_NCS();
78
       }
69
       }
79
-      break;
80
-
70
+      ST7920_WRITE_BYTE(0x0C); //display on, cursor+blink off
71
+      ST7920_NCS();
72
+    }
73
+    break;
81
     case U8G_DEV_MSG_STOP:
74
     case U8G_DEV_MSG_STOP:
82
       break;
75
       break;
83
-    case U8G_DEV_MSG_PAGE_NEXT:
84
-      {
85
-        uint8_t *ptr;
86
-        u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
87
-        y = pb->p.page_y0;
88
-        ptr = (uint8_t*)pb->buf;
89
-
90
-        ST7920_CS();
91
-        for( i = 0; i < PAGE_HEIGHT; i ++ )
92
-        {
93
-          ST7920_SET_CMD();
94
-          if ( y < 32 )
95
-          {
96
-            ST7920_WRITE_BYTE(0x80 | y);       //y
97
-            ST7920_WRITE_BYTE(0x80);           //x=0
98
-          }
99
-          else
100
-          {
101
-            ST7920_WRITE_BYTE(0x80 | (y-32));  //y
102
-            ST7920_WRITE_BYTE(0x80 | 8);       //x=64
103
-          }
104
-
105
-          ST7920_SET_DAT();
106
-          ST7920_WRITE_BYTES(ptr,LCD_PIXEL_WIDTH/8); //ptr is incremented inside of macro
107
-          y++;
76
+    case U8G_DEV_MSG_PAGE_NEXT: {
77
+      uint8_t* ptr;
78
+      u8g_pb_t* pb = (u8g_pb_t*)(dev->dev_mem);
79
+      y = pb->p.page_y0;
80
+      ptr = (uint8_t*)pb->buf;
81
+
82
+      ST7920_CS();
83
+      for (i = 0; i < PAGE_HEIGHT; i ++) {
84
+        ST7920_SET_CMD();
85
+        if (y < 32) {
86
+          ST7920_WRITE_BYTE(0x80 | y);       //y
87
+          ST7920_WRITE_BYTE(0x80);           //x=0
88
+        }
89
+        else {
90
+          ST7920_WRITE_BYTE(0x80 | (y - 32)); //y
91
+          ST7920_WRITE_BYTE(0x80 | 8);       //x=64
108
         }
92
         }
109
-        ST7920_NCS();
93
+        ST7920_SET_DAT();
94
+        ST7920_WRITE_BYTES(ptr, LCD_PIXEL_WIDTH / 8); //ptr is incremented inside of macro
95
+        y++;
110
       }
96
       }
111
-      break;
97
+      ST7920_NCS();
98
+    }
99
+    break;
112
   }
100
   }
113
 #if PAGE_HEIGHT == 8
101
 #if PAGE_HEIGHT == 8
114
   return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
102
   return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
119
 #endif
107
 #endif
120
 }
108
 }
121
 
109
 
122
-uint8_t   u8g_dev_st7920_128x64_rrd_buf[LCD_PIXEL_WIDTH*(PAGE_HEIGHT/8)] U8G_NOCOMMON;
123
-u8g_pb_t  u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT,LCD_PIXEL_HEIGHT,0,0,0},LCD_PIXEL_WIDTH,u8g_dev_st7920_128x64_rrd_buf};
124
-u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = {u8g_dev_rrd_st7920_128x64_fn,&u8g_dev_st7920_128x64_rrd_pb,&u8g_com_null_fn};
110
+uint8_t   u8g_dev_st7920_128x64_rrd_buf[LCD_PIXEL_WIDTH * (PAGE_HEIGHT / 8)] U8G_NOCOMMON;
111
+u8g_pb_t  u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT, LCD_PIXEL_HEIGHT, 0, 0, 0}, LCD_PIXEL_WIDTH, u8g_dev_st7920_128x64_rrd_buf};
112
+u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = {u8g_dev_rrd_st7920_128x64_fn, &u8g_dev_st7920_128x64_rrd_pb, &u8g_com_null_fn};
125
 
113
 
126
-class U8GLIB_ST7920_128X64_RRD : public U8GLIB
127
-{
128
-  public:
129
-    U8GLIB_ST7920_128X64_RRD(uint8_t dummy) : U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi) {}
114
+class U8GLIB_ST7920_128X64_RRD : public U8GLIB {
115
+ public:
116
+  U8GLIB_ST7920_128X64_RRD(uint8_t dummy) : U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi) {}
130
 };
117
 };
131
 
118
 
132
 
119
 

+ 3
- 3
Marlin/utf_mapper.h Переглянути файл

67
   //          À    Á    Â    Ã    Ä    Å    Æ    Ç    È    É    Ê    Ë    Ì    Í    Î    Ï
67
   //          À    Á    Â    Ã    Ä    Å    Æ    Ç    È    É    Ê    Ë    Ì    Í    Î    Ï
68
              0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,  // c39 ÐÑÓÔÕÖ×ØÙÚÛÜÝÞß
68
              0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,  // c39 ÐÑÓÔÕÖ×ØÙÚÛÜÝÞß
69
   //          Ð    Ñ    Ò    Ó    Ô    Õ    Ö    ×    Ø    Ù    Ú    Û    Ü    Ý    Þ    ß
69
   //          Ð    Ñ    Ò    Ó    Ô    Õ    Ö    ×    Ø    Ù    Ú    Û    Ü    Ý    Þ    ß
70
-             0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,  // c3a àáãäåæçèéêëìíîï 
70
+             0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,  // c3a àáãäåæçèéêëìíîï
71
   //          à    á    â    ã    ä    å    æ    ç    è    é    ê    ë    ì    í    î    ï
71
   //          à    á    â    ã    ä    å    æ    ç    è    é    ê    ë    ì    í    î    ï
72
              0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff   // c3b ðñóôõö÷øùúûüýþÿ
72
              0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff   // c3b ðñóôõö÷øùúûüýþÿ
73
   //          ð    ñ    ò    ó    ô    õ    ö    ÷    ø    ù    ú    û    ü    ý    þ    ÿ
73
   //          ð    ñ    ò    ó    ô    õ    ö    ÷    ø    ù    ú    û    ü    ý    þ    ÿ
190
 #elif ENABLED(MAPPER_D0D1)
190
 #elif ENABLED(MAPPER_D0D1)
191
   uint8_t utf_hi_char; // UTF-8 high part
191
   uint8_t utf_hi_char; // UTF-8 high part
192
   bool seen_d5 = false;
192
   bool seen_d5 = false;
193
-  char charset_mapper(char c){
193
+  char charset_mapper(char c) {
194
     uint8_t d = c;
194
     uint8_t d = c;
195
     if ( d >= 0x80u ) { // UTF-8 handling
195
     if ( d >= 0x80u ) { // UTF-8 handling
196
       if ((d >= 0xd0u) && (!seen_d5)) {
196
       if ((d >= 0xd0u) && (!seen_d5)) {
218
   bool seen_e3 = false;
218
   bool seen_e3 = false;
219
   bool seen_82_83 = false;
219
   bool seen_82_83 = false;
220
   char charset_mapper(char c){
220
   char charset_mapper(char c){
221
-  uint8_t d = c;
221
+    uint8_t d = c;
222
     if ( d >= 0x80 ) { // UTF-8 handling
222
     if ( d >= 0x80 ) { // UTF-8 handling
223
       if ( (d == 0xe3) && (seen_e3 == false)) {
223
       if ( (d == 0xe3) && (seen_e3 == false)) {
224
         seen_e3 = true;
224
         seen_e3 = true;

+ 43
- 43
Marlin/vector_3.cpp Переглянути файл

27
 vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { }
27
 vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { }
28
 
28
 
29
 vector_3 vector_3::cross(vector_3 left, vector_3 right) {
29
 vector_3 vector_3::cross(vector_3 left, vector_3 right) {
30
-	return vector_3(left.y * right.z - left.z * right.y,
31
-		left.z * right.x - left.x * right.z,
32
-		left.x * right.y - left.y * right.x);
30
+  return vector_3(left.y * right.z - left.z * right.y,
31
+                  left.z * right.x - left.x * right.z,
32
+                  left.x * right.y - left.y * right.x);
33
 }
33
 }
34
 
34
 
35
 vector_3 vector_3::operator+(vector_3 v) { return vector_3((x + v.x), (y + v.y), (z + v.z)); }
35
 vector_3 vector_3::operator+(vector_3 v) { return vector_3((x + v.x), (y + v.y), (z + v.z)); }
36
 vector_3 vector_3::operator-(vector_3 v) { return vector_3((x - v.x), (y - v.y), (z - v.z)); }
36
 vector_3 vector_3::operator-(vector_3 v) { return vector_3((x - v.x), (y - v.y), (z - v.z)); }
37
 
37
 
38
 vector_3 vector_3::get_normal() {
38
 vector_3 vector_3::get_normal() {
39
-	vector_3 normalized = vector_3(x, y, z);
40
-	normalized.normalize();
41
-	return normalized;
39
+  vector_3 normalized = vector_3(x, y, z);
40
+  normalized.normalize();
41
+  return normalized;
42
 }
42
 }
43
 
43
 
44
 float vector_3::get_length() { return sqrt((x * x) + (y * y) + (z * z)); }
44
 float vector_3::get_length() { return sqrt((x * x) + (y * y) + (z * z)); }
45
 
45
 
46
 void vector_3::normalize() {
46
 void vector_3::normalize() {
47
-	float length = get_length();
48
-	x /= length;
49
-	y /= length;
50
-	z /= length;
47
+  float length = get_length();
48
+  x /= length;
49
+  y /= length;
50
+  z /= length;
51
 }
51
 }
52
 
52
 
53
 void vector_3::apply_rotation(matrix_3x3 matrix) {
53
 void vector_3::apply_rotation(matrix_3x3 matrix) {
54
-	float resultX = x * matrix.matrix[3*0+0] + y * matrix.matrix[3*1+0] + z * matrix.matrix[3*2+0];
55
-	float resultY = x * matrix.matrix[3*0+1] + y * matrix.matrix[3*1+1] + z * matrix.matrix[3*2+1];
56
-	float resultZ = x * matrix.matrix[3*0+2] + y * matrix.matrix[3*1+2] + z * matrix.matrix[3*2+2];
57
-	x = resultX;
58
-	y = resultY;
59
-	z = resultZ;
54
+  float resultX = x * matrix.matrix[3 * 0 + 0] + y * matrix.matrix[3 * 1 + 0] + z * matrix.matrix[3 * 2 + 0];
55
+  float resultY = x * matrix.matrix[3 * 0 + 1] + y * matrix.matrix[3 * 1 + 1] + z * matrix.matrix[3 * 2 + 1];
56
+  float resultZ = x * matrix.matrix[3 * 0 + 2] + y * matrix.matrix[3 * 1 + 2] + z * matrix.matrix[3 * 2 + 2];
57
+  x = resultX;
58
+  y = resultY;
59
+  z = resultZ;
60
 }
60
 }
61
 
61
 
62
 void vector_3::debug(const char title[]) {
62
 void vector_3::debug(const char title[]) {
63
-	SERIAL_PROTOCOL(title);
64
-	SERIAL_PROTOCOLPGM(" x: ");
65
-	SERIAL_PROTOCOL_F(x, 6);
66
-	SERIAL_PROTOCOLPGM(" y: ");
67
-	SERIAL_PROTOCOL_F(y, 6);
68
-	SERIAL_PROTOCOLPGM(" z: ");
69
-	SERIAL_PROTOCOL_F(z, 6);
70
-	SERIAL_EOL;
63
+  SERIAL_PROTOCOL(title);
64
+  SERIAL_PROTOCOLPGM(" x: ");
65
+  SERIAL_PROTOCOL_F(x, 6);
66
+  SERIAL_PROTOCOLPGM(" y: ");
67
+  SERIAL_PROTOCOL_F(y, 6);
68
+  SERIAL_PROTOCOLPGM(" z: ");
69
+  SERIAL_PROTOCOL_F(z, 6);
70
+  SERIAL_EOL;
71
 }
71
 }
72
 
72
 
73
-void apply_rotation_xyz(matrix_3x3 matrix, float &x, float& y, float& z) {
74
-	vector_3 vector = vector_3(x, y, z);
75
-	vector.apply_rotation(matrix);
76
-	x = vector.x;
77
-	y = vector.y;
78
-	z = vector.z;
73
+void apply_rotation_xyz(matrix_3x3 matrix, float& x, float& y, float& z) {
74
+  vector_3 vector = vector_3(x, y, z);
75
+  vector.apply_rotation(matrix);
76
+  x = vector.x;
77
+  y = vector.y;
78
+  z = vector.z;
79
 }
79
 }
80
 
80
 
81
 matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) {
81
 matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) {
82
   //row_0.debug("row_0");
82
   //row_0.debug("row_0");
83
   //row_1.debug("row_1");
83
   //row_1.debug("row_1");
84
   //row_2.debug("row_2");
84
   //row_2.debug("row_2");
85
-	matrix_3x3 new_matrix;
86
-	new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z; 
87
-	new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z; 
88
-	new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z; 
85
+  matrix_3x3 new_matrix;
86
+  new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z;
87
+  new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z;
88
+  new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z;
89
   //new_matrix.debug("new_matrix");
89
   //new_matrix.debug("new_matrix");
90
-	return new_matrix;
90
+  return new_matrix;
91
 }
91
 }
92
 
92
 
93
 void matrix_3x3::set_to_identity() {
93
 void matrix_3x3::set_to_identity() {
94
-	matrix[0] = 1; matrix[1] = 0; matrix[2] = 0;
95
-	matrix[3] = 0; matrix[4] = 1; matrix[5] = 0;
96
-	matrix[6] = 0; matrix[7] = 0; matrix[8] = 1;
94
+  matrix[0] = 1; matrix[1] = 0; matrix[2] = 0;
95
+  matrix[3] = 0; matrix[4] = 1; matrix[5] = 0;
96
+  matrix[6] = 0; matrix[7] = 0; matrix[8] = 1;
97
 }
97
 }
98
 
98
 
99
 matrix_3x3 matrix_3x3::create_look_at(vector_3 target) {
99
 matrix_3x3 matrix_3x3::create_look_at(vector_3 target) {
100
   vector_3 z_row = target.get_normal();
100
   vector_3 z_row = target.get_normal();
101
-  vector_3 x_row = vector_3(1, 0, -target.x/target.z).get_normal();
101
+  vector_3 x_row = vector_3(1, 0, -target.x / target.z).get_normal();
102
   vector_3 y_row = vector_3::cross(z_row, x_row).get_normal();
102
   vector_3 y_row = vector_3::cross(z_row, x_row).get_normal();
103
 
103
 
104
   // x_row.debug("x_row");
104
   // x_row.debug("x_row");
114
 
114
 
115
 matrix_3x3 matrix_3x3::transpose(matrix_3x3 original) {
115
 matrix_3x3 matrix_3x3::transpose(matrix_3x3 original) {
116
   matrix_3x3 new_matrix;
116
   matrix_3x3 new_matrix;
117
-  new_matrix.matrix[0] = original.matrix[0]; new_matrix.matrix[1] = original.matrix[3]; new_matrix.matrix[2] = original.matrix[6]; 
118
-  new_matrix.matrix[3] = original.matrix[1]; new_matrix.matrix[4] = original.matrix[4]; new_matrix.matrix[5] = original.matrix[7]; 
117
+  new_matrix.matrix[0] = original.matrix[0]; new_matrix.matrix[1] = original.matrix[3]; new_matrix.matrix[2] = original.matrix[6];
118
+  new_matrix.matrix[3] = original.matrix[1]; new_matrix.matrix[4] = original.matrix[4]; new_matrix.matrix[5] = original.matrix[7];
119
   new_matrix.matrix[6] = original.matrix[2]; new_matrix.matrix[7] = original.matrix[5]; new_matrix.matrix[8] = original.matrix[8];
119
   new_matrix.matrix[6] = original.matrix[2]; new_matrix.matrix[7] = original.matrix[5]; new_matrix.matrix[8] = original.matrix[8];
120
   return new_matrix;
120
   return new_matrix;
121
 }
121
 }
123
 void matrix_3x3::debug(const char title[]) {
123
 void matrix_3x3::debug(const char title[]) {
124
   SERIAL_PROTOCOLLN(title);
124
   SERIAL_PROTOCOLLN(title);
125
   int count = 0;
125
   int count = 0;
126
-  for(int i=0; i<3; i++) {
127
-    for(int j=0; j<3; j++) {
126
+  for (int i = 0; i < 3; i++) {
127
+    for (int j = 0; j < 3; j++) {
128
       if (matrix[count] >= 0.0) SERIAL_PROTOCOLCHAR('+');
128
       if (matrix[count] >= 0.0) SERIAL_PROTOCOLCHAR('+');
129
       SERIAL_PROTOCOL_F(matrix[count], 6);
129
       SERIAL_PROTOCOL_F(matrix[count], 6);
130
       SERIAL_PROTOCOLCHAR(' ');
130
       SERIAL_PROTOCOLCHAR(' ');

+ 21
- 23
Marlin/vector_3.h Переглянути файл

22
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
22
 #if ENABLED(AUTO_BED_LEVELING_FEATURE)
23
 class matrix_3x3;
23
 class matrix_3x3;
24
 
24
 
25
-struct vector_3
26
-{
27
-	float x, y, z;
25
+struct vector_3 {
26
+  float x, y, z;
28
 
27
 
29
-        vector_3();
30
-	vector_3(float x, float y, float z);
28
+  vector_3();
29
+  vector_3(float x, float y, float z);
31
 
30
 
32
-	static vector_3 cross(vector_3 a, vector_3 b);
31
+  static vector_3 cross(vector_3 a, vector_3 b);
33
 
32
 
34
-	vector_3 operator+(vector_3 v);
35
-	vector_3 operator-(vector_3 v);
36
-	void normalize();
37
-	float get_length();
38
-	vector_3 get_normal();
33
+  vector_3 operator+(vector_3 v);
34
+  vector_3 operator-(vector_3 v);
35
+  void normalize();
36
+  float get_length();
37
+  vector_3 get_normal();
39
 
38
 
40
-	void debug(const char title[]);
41
-	
42
-	void apply_rotation(matrix_3x3 matrix);
39
+  void debug(const char title[]);
40
+
41
+  void apply_rotation(matrix_3x3 matrix);
43
 };
42
 };
44
 
43
 
45
-struct matrix_3x3
46
-{
47
-	float matrix[9];
44
+struct matrix_3x3 {
45
+  float matrix[9];
48
 
46
 
49
-	static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2);
50
-	static matrix_3x3 create_look_at(vector_3 target);
51
-	static matrix_3x3 transpose(matrix_3x3 original);
47
+  static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2);
48
+  static matrix_3x3 create_look_at(vector_3 target);
49
+  static matrix_3x3 transpose(matrix_3x3 original);
52
 
50
 
53
-	void set_to_identity();
51
+  void set_to_identity();
54
 
52
 
55
-	void debug(const char title[]);
53
+  void debug(const char title[]);
56
 };
54
 };
57
 
55
 
58
 
56
 
59
-void apply_rotation_xyz(matrix_3x3 rotationMatrix, float &x, float& y, float& z);
57
+void apply_rotation_xyz(matrix_3x3 rotationMatrix, float& x, float& y, float& z);
60
 #endif // AUTO_BED_LEVELING_FEATURE
58
 #endif // AUTO_BED_LEVELING_FEATURE
61
 
59
 
62
 #endif // VECTOR_3_H
60
 #endif // VECTOR_3_H

+ 0
- 0
Marlin/watchdog.cpp Переглянути файл


Деякі файли не було показано, через те що забагато файлів було змінено

Завантаження…
Відмінити
Зберегти