#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.
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
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
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
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;
-#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