chiark / gitweb /
Buffer size > 16
authorErik van der Zalm <erik@vdzalm.eu>
Mon, 14 Nov 2011 17:53:09 +0000 (18:53 +0100)
committerErik van der Zalm <erik@vdzalm.eu>
Mon, 14 Nov 2011 17:53:09 +0000 (18:53 +0100)
Marlin/Configuration.h
Marlin/temperature.cpp
Marlin/ultralcd.h

index 2d890b721516959fd3c1540e9ddb3b5bcd96eeb3..89104fde9ba526f1f44d9d962658eedaaee06e9b 100644 (file)
@@ -311,9 +311,9 @@ const int dropsegments=0; //everything with less than this number of steps  will
 // The number of linear motions that can be in the plan at any give time.  
 // THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ringbuffering.
 #if defined SDSUPPORT
-  #define BLOCK_BUFFER_SIZE 8   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
+  #define BLOCK_BUFFER_SIZE 16   // SD,LCD,Buttons take more memory, block buffer needs to be smaller
 #else
-  #define BLOCK_BUFFER_SIZE 8 // maximize block buffer
+  #define BLOCK_BUFFER_SIZE 16 // maximize block buffer
 #endif
 
 
index 89ee47d8470e2374c54034ed634d495ed6378b5f..42064104b4d6c0dd993ed7f7a81c50419958c6da 100644 (file)
@@ -203,6 +203,7 @@ void manage_heater()
   #endif
 }
 
+#define PGM_RD_W(x)   (short)pgm_read_word(&x)
 // Takes hot end temperature value as input and returns corresponding raw value. 
 // For a thermistor, it uses the RepRap thermistor temp table.
 // This is needed because PID in hydra firmware hovers around a given analog value, not a temp value.
@@ -214,18 +215,18 @@ int temp2analog(int celsius) {
 
     for (i=1; i<NUMTEMPS_HEATER_0; i++)
     {
-      if (pgm_read_word(&(heater_0_temptable[i][1])) < celsius)
+      if (PGM_RD_W(heater_0_temptable[i][1]) < celsius)
       {
-        raw = pgm_read_word(&(heater_0_temptable[i-1][0])) + 
-          (celsius - pgm_read_word(&(heater_0_temptable[i-1][1]))) * 
-          (pgm_read_word(&(heater_0_temptable[i][0])) - pgm_read_word(&(heater_0_temptable[i-1][0]))) /
-          (pgm_read_word(&(heater_0_temptable[i][1])) - pgm_read_word(&(heater_0_temptable[i-1][1])));  
+        raw = PGM_RD_W(heater_0_temptable[i-1][0]) + 
+          (celsius - PGM_RD_W(heater_0_temptable[i-1][1])) * 
+          (PGM_RD_W(heater_0_temptable[i][0]) - PGM_RD_W(heater_0_temptable[i-1][0])) /
+          (PGM_RD_W(heater_0_temptable[i][1]) - PGM_RD_W(heater_0_temptable[i-1][1]));  
         break;
       }
     }
 
     // Overflow: Set to last value in the table
-    if (i == NUMTEMPS_HEATER_0) raw = pgm_read_word(&(heater_0_temptable[i-1][0]));
+    if (i == NUMTEMPS_HEATER_0) raw = PGM_RD_W(heater_0_temptable[i-1][0]);
 
     return (1023 * OVERSAMPLENR) - raw;
   #elif defined HEATER_0_USES_AD595
@@ -245,19 +246,19 @@ int temp2analogBed(int celsius) {
     
     for (i=1; i<BNUMTEMPS; i++)
     {
-      if (pgm_read_word(&)bedtemptable[i][1])) < celsius)
+      if (PGM_RD_W(bedtemptable[i][1]) < celsius)
       {
-        raw = pgm_read_word(&(bedtemptable[i-1][0])) + 
-          (celsius - pgm_read_word(&(bedtemptable[i-1][1]))) * 
-          (pgm_read_word(&(bedtemptable[i][0])) - pgm_read_word(&(bedtemptable[i-1][0]))) /
-          (pgm_read_word(&(bedtemptable[i][1])) - pgm_read_word(&(bedtemptable[i-1][1])));
+        raw = PGM_RD_W(bedtemptable[i-1][0]) + 
+          (celsius - PGM_RD_W(bedtemptable[i-1][1])) * 
+          (PGM_RD_W(bedtemptable[i][0]) - PGM_RD_W(bedtemptable[i-1][0])) /
+          (PGM_RD_W(bedtemptable[i][1]) - PGM_RD_W(bedtemptable[i-1][1]));
       
         break;
       }
     }
 
     // Overflow: Set to last value in the table
-    if (i == BNUMTEMPS) raw = pgm_read_word(&(bedtemptable[i-1][0]));
+    if (i == BNUMTEMPS) raw = PGM_RD_W(bedtemptable[i-1][0]);
 
     return (1023 * OVERSAMPLENR) - raw;
   #elif defined BED_USES_AD595
@@ -274,18 +275,18 @@ float analog2temp(int raw) {
     raw = (1023 * OVERSAMPLENR) - raw;
     for (i=1; i<NUMTEMPS_HEATER_0; i++)
     {
-      if ((short)pgm_read_word(&heater_0_temptable[i][0]) > raw)
+      if (PGM_RD_W(heater_0_temptable[i][0]) > raw)
       {
-        celsius  = (short)pgm_read_word(&heater_0_temptable[i-1][1]) + 
-          (raw - (short)pgm_read_word(&heater_0_temptable[i-1][0])) * 
-          (float)((short)pgm_read_word(&heater_0_temptable[i][1]) - (short)pgm_read_word(&heater_0_temptable[i-1][1])) /
-          (float)((short)pgm_read_word(&heater_0_temptable[i][0]) - (short)pgm_read_word(&heater_0_temptable[i-1][0]));
+        celsius  = PGM_RD_W(heater_0_temptable[i-1][1]) + 
+          (raw - PGM_RD_W(heater_0_temptable[i-1][0])) * 
+          (float)(PGM_RD_W(heater_0_temptable[i][1]) - PGM_RD_W(heater_0_temptable[i-1][1])) /
+          (float)(PGM_RD_W(heater_0_temptable[i][0]) - PGM_RD_W(heater_0_temptable[i-1][0]));
         break;
       }
     }
 
     // Overflow: Set to last value in the table
-    if (i == NUMTEMPS_HEATER_0) celsius = (short)pgm_read_word(&(heater_0_temptable[i-1][1]));
+    if (i == NUMTEMPS_HEATER_0) celsius = PGM_RD_W(heater_0_temptable[i-1][1]);
 
     return celsius;
   #elif defined HEATER_0_USES_AD595
@@ -304,19 +305,19 @@ float analog2tempBed(int raw) {
 
     for (i=1; i<BNUMTEMPS; i++)
     {
-      if (pgm_read_word(&(bedtemptable[i][0])) > raw)
+      if (PGM_RD_W(bedtemptable[i][0]) > raw)
       {
-        celsius  = pgm_read_word(&(bedtemptable[i-1][1])) + 
-          (raw - pgm_read_word(&(bedtemptable[i-1][0]))) * 
-          (pgm_read_word(&(bedtemptable[i][1])) - pgm_read_word(&(bedtemptable[i-1][1]))) /
-          (pgm_read_word(&(bedtemptable[i][0])) - pgm_read_word(&(bedtemptable[i-1][0])));
+        celsius  = PGM_RD_W(bedtemptable[i-1][1]) + 
+          (raw - PGM_RD_W(bedtemptable[i-1][0])) * 
+          (PGM_RD_W(bedtemptable[i][1]) - PGM_RD_W(bedtemptable[i-1][1])) /
+          (PGM_RD_W(bedtemptable[i][0]) - PGM_RD_W(bedtemptable[i-1][0]));
 
         break;
       }
     }
 
     // Overflow: Set to last value in the table
-    if (i == BNUMTEMPS) celsius = pgm_read_word(&(bedtemptable[i-1][1]));
+    if (i == BNUMTEMPS) celsius = PGM_RD_W(bedtemptable[i-1][1]);
 
     return celsius;
     
index 4c725329df1f6cccacc084871c5e4166a2206eb9..bc07c25a82fb60c145e83eb56b4afd42602d17cb 100644 (file)
-#ifndef __ULTRALCDH\r
-#define __ULTRALCDH\r
-#include "Configuration.h"\r
-\r
-#ifdef ULTRA_LCD\r
-\r
-  void lcd_status();\r
-  void lcd_init();\r
-  void lcd_status(const char* message);\r
-  void beep();\r
-  void buttons_check();\r
-\r
-\r
-  #define LCD_UPDATE_INTERVAL 100\r
-  #define STATUSTIMEOUT 15000\r
-\r
-\r
-  #include <LiquidCrystal.h>\r
-  extern LiquidCrystal lcd;\r
-\r
-\r
-  #ifdef NEWPANEL\r
-\r
-    \r
-    #define EN_C (1<<BLEN_C)\r
-    #define EN_B (1<<BLEN_B)\r
-    #define EN_A (1<<BLEN_A)\r
-    \r
-    #define CLICKED (buttons&EN_C)\r
-    #define BLOCK {blocking=millis()+blocktime;}\r
-    #define CARDINSERTED (READ(SDCARDDETECT)==0)\r
-    \r
-  #else\r
-\r
-    //atomatic, do not change\r
-    #define B_LE (1<<BL_LE)\r
-    #define B_UP (1<<BL_UP)\r
-    #define B_MI (1<<BL_MI)\r
-    #define B_DW (1<<BL_DW)\r
-    #define B_RI (1<<BL_RI)\r
-    #define B_ST (1<<BL_ST)\r
-    #define EN_B (1<<BLEN_B)\r
-    #define EN_A (1<<BLEN_A)\r
-    \r
-    #define CLICKED ((buttons&B_MI)||(buttons&B_ST))\r
-    #define BLOCK {blocking[BL_MI]=millis()+blocktime;blocking[BL_ST]=millis()+blocktime;}\r
-    \r
-  #endif\r
-    \r
-  // blocking time for recognizing a new keypress of one key, ms\r
-  #define blocktime 500\r
-  #define lcdslow 5\r
-    \r
-  enum MainStatus{Main_Status, Main_Menu, Main_Prepare, Main_Control, Main_SD};\r
-\r
-  class MainMenu{\r
-  public:\r
-    MainMenu();\r
-    void update();\r
-    uint8_t activeline;\r
-    MainStatus status;\r
-    uint8_t displayStartingRow;\r
-    \r
-    void showStatus();\r
-    void showMainMenu();\r
-    void showPrepare();\r
-    void showControl();\r
-    void showSD();\r
-    bool force_lcd_update;\r
-    int lastencoderpos;\r
-    int8_t lineoffset;\r
-    int8_t lastlineoffset;\r
-    \r
-    bool linechanging;\r
-  };\r
-\r
-  //conversion routines, could need some overworking\r
-  char *fillto(int8_t n,char *c);\r
-  char *ftostr51(const float &x);\r
-  char *ftostr31(const float &x);\r
-  char *ftostr3(const float &x);\r
-\r
-\r
-\r
-  #define LCD_MESSAGE(x) lcd_status(x);\r
-  #define LCD_MESSAGEPGM(x) lcd_statuspgm(PSTR(x));\r
-  #define LCD_STATUS lcd_status()\r
-#else //no lcd\r
-  #define LCD_STATUS\r
-  #define LCD_MESSAGE(x)\r
-  inline void lcd_status() {};\r
-#endif\r
-  \r
-#ifndef ULTIPANEL  \r
- #define CLICKED false\r
-  #define BLOCK ;\r
-#endif \r
-  \r
-  \r
-  \r
-#endif //ULTRALCD\r
+#ifndef __ULTRALCDH
+#define __ULTRALCDH
+#include "Configuration.h"
+
+#ifdef ULTRA_LCD
+
+  void lcd_status();
+  void lcd_init();
+  void lcd_status(const char* message);
+  void beep();
+  void buttons_check();
+
+
+  #define LCD_UPDATE_INTERVAL 100
+  #define STATUSTIMEOUT 15000
+
+
+  #include <LiquidCrystal.h>
+  extern LiquidCrystal lcd;
+
+
+  #ifdef NEWPANEL
+
+    
+    #define EN_C (1<<BLEN_C)
+    #define EN_B (1<<BLEN_B)
+    #define EN_A (1<<BLEN_A)
+    
+    #define CLICKED (buttons&EN_C)
+    #define BLOCK {blocking=millis()+blocktime;}
+    #define CARDINSERTED (READ(SDCARDDETECT)==0)
+    
+  #else
+
+    //atomatic, do not change
+    #define B_LE (1<<BL_LE)
+    #define B_UP (1<<BL_UP)
+    #define B_MI (1<<BL_MI)
+    #define B_DW (1<<BL_DW)
+    #define B_RI (1<<BL_RI)
+    #define B_ST (1<<BL_ST)
+    #define EN_B (1<<BLEN_B)
+    #define EN_A (1<<BLEN_A)
+    
+    #define CLICKED ((buttons&B_MI)||(buttons&B_ST))
+    #define BLOCK {blocking[BL_MI]=millis()+blocktime;blocking[BL_ST]=millis()+blocktime;}
+    
+  #endif
+    
+  // blocking time for recognizing a new keypress of one key, ms
+  #define blocktime 500
+  #define lcdslow 5
+    
+  enum MainStatus{Main_Status, Main_Menu, Main_Prepare, Main_Control, Main_SD};
+
+  class MainMenu{
+  public:
+    MainMenu();
+    void update();
+    uint8_t activeline;
+    MainStatus status;
+    uint8_t displayStartingRow;
+    
+    void showStatus();
+    void showMainMenu();
+    void showPrepare();
+    void showControl();
+    void showSD();
+    bool force_lcd_update;
+    int lastencoderpos;
+    int8_t lineoffset;
+    int8_t lastlineoffset;
+    
+    bool linechanging;
+  };
+
+  //conversion routines, could need some overworking
+  char *fillto(int8_t n,char *c);
+  char *ftostr51(const float &x);
+  char *ftostr31(const float &x);
+  char *ftostr3(const float &x);
+
+
+
+  #define LCD_MESSAGE(x) lcd_status(x);
+  #define LCD_MESSAGEPGM(x) lcd_statuspgm(PSTR(x));
+  #define LCD_STATUS lcd_status()
+#else //no lcd
+  #define LCD_STATUS
+  #define LCD_MESSAGE(x)
+  #define LCD_MESSAGEPGM(x)
+  inline void lcd_status() {};
+#endif
+  
+#ifndef ULTIPANEL  
+ #define CLICKED false
+  #define BLOCK ;
+#endif 
+  
+  
+  
+#endif //ULTRALCD
 \r