|
@@ -23,8 +23,21 @@
|
23
|
23
|
|
24
|
24
|
#include "../../inc/MarlinConfig.h"
|
25
|
25
|
|
26
|
|
-#define OVERSAMPLENR 16
|
27
|
|
-#define OV(N) int16_t((N) * (OVERSAMPLENR))
|
|
26
|
+#define THERMISTOR_TABLE_ADC_RESOLUTION 1024
|
|
27
|
+#define THERMISTOR_TABLE_SCALE (HAL_ADC_RANGE / (THERMISTOR_TABLE_ADC_RESOLUTION))
|
|
28
|
+#if ENABLED(HAL_ADC_FILTERED)
|
|
29
|
+ #define OVERSAMPLENR 1
|
|
30
|
+#else
|
|
31
|
+ #define OVERSAMPLENR 16
|
|
32
|
+#endif
|
|
33
|
+#define MAX_RAW_THERMISTOR_VALUE (HAL_ADC_RANGE * (OVERSAMPLENR) - 1)
|
|
34
|
+
|
|
35
|
+// Currently Marlin stores all oversampled ADC values as int16_t, make sure the HAL settings do not overflow 15bit
|
|
36
|
+#if MAX_RAW_THERMISTOR_VALUE > ((1 << 15) - 1)
|
|
37
|
+ #error "MAX_RAW_THERMISTOR_VALUE is too large for int16_t. Reduce OVERSAMPLENR or HAL_ADC_RESOLUTION."
|
|
38
|
+#endif
|
|
39
|
+
|
|
40
|
+#define OV(N) int16_t((N) * (OVERSAMPLENR) * (THERMISTOR_TABLE_SCALE))
|
28
|
41
|
|
29
|
42
|
#define ANY_THERMISTOR_IS(n) (THERMISTOR_HEATER_0 == n || THERMISTOR_HEATER_1 == n || THERMISTOR_HEATER_2 == n || THERMISTOR_HEATER_3 == n || THERMISTOR_HEATER_4 == n || THERMISTOR_HEATER_5 == n || THERMISTORBED == n || THERMISTORCHAMBER == n)
|
30
|
43
|
|
|
@@ -251,74 +264,74 @@ static_assert(
|
251
|
264
|
// For thermocouples the highest temperature results in the highest ADC value
|
252
|
265
|
#ifndef HEATER_0_RAW_HI_TEMP
|
253
|
266
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_0_USES_THERMISTOR)
|
254
|
|
- #define HEATER_0_RAW_HI_TEMP 16383
|
|
267
|
+ #define HEATER_0_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
255
|
268
|
#define HEATER_0_RAW_LO_TEMP 0
|
256
|
269
|
#else
|
257
|
270
|
#define HEATER_0_RAW_HI_TEMP 0
|
258
|
|
- #define HEATER_0_RAW_LO_TEMP 16383
|
|
271
|
+ #define HEATER_0_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
259
|
272
|
#endif
|
260
|
273
|
#endif
|
261
|
274
|
#ifndef HEATER_1_RAW_HI_TEMP
|
262
|
275
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_1_USES_THERMISTOR)
|
263
|
|
- #define HEATER_1_RAW_HI_TEMP 16383
|
|
276
|
+ #define HEATER_1_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
264
|
277
|
#define HEATER_1_RAW_LO_TEMP 0
|
265
|
278
|
#else
|
266
|
279
|
#define HEATER_1_RAW_HI_TEMP 0
|
267
|
|
- #define HEATER_1_RAW_LO_TEMP 16383
|
|
280
|
+ #define HEATER_1_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
268
|
281
|
#endif
|
269
|
282
|
#endif
|
270
|
283
|
#ifndef HEATER_2_RAW_HI_TEMP
|
271
|
284
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_2_USES_THERMISTOR)
|
272
|
|
- #define HEATER_2_RAW_HI_TEMP 16383
|
|
285
|
+ #define HEATER_2_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
273
|
286
|
#define HEATER_2_RAW_LO_TEMP 0
|
274
|
287
|
#else
|
275
|
288
|
#define HEATER_2_RAW_HI_TEMP 0
|
276
|
|
- #define HEATER_2_RAW_LO_TEMP 16383
|
|
289
|
+ #define HEATER_2_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
277
|
290
|
#endif
|
278
|
291
|
#endif
|
279
|
292
|
#ifndef HEATER_3_RAW_HI_TEMP
|
280
|
293
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_3_USES_THERMISTOR)
|
281
|
|
- #define HEATER_3_RAW_HI_TEMP 16383
|
|
294
|
+ #define HEATER_3_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
282
|
295
|
#define HEATER_3_RAW_LO_TEMP 0
|
283
|
296
|
#else
|
284
|
297
|
#define HEATER_3_RAW_HI_TEMP 0
|
285
|
|
- #define HEATER_3_RAW_LO_TEMP 16383
|
|
298
|
+ #define HEATER_3_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
286
|
299
|
#endif
|
287
|
300
|
#endif
|
288
|
301
|
#ifndef HEATER_4_RAW_HI_TEMP
|
289
|
302
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_4_USES_THERMISTOR)
|
290
|
|
- #define HEATER_4_RAW_HI_TEMP 16383
|
|
303
|
+ #define HEATER_4_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
291
|
304
|
#define HEATER_4_RAW_LO_TEMP 0
|
292
|
305
|
#else
|
293
|
306
|
#define HEATER_4_RAW_HI_TEMP 0
|
294
|
|
- #define HEATER_4_RAW_LO_TEMP 16383
|
|
307
|
+ #define HEATER_4_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
295
|
308
|
#endif
|
296
|
309
|
#endif
|
297
|
310
|
#ifndef HEATER_5_RAW_HI_TEMP
|
298
|
311
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_5_USES_THERMISTOR)
|
299
|
|
- #define HEATER_5_RAW_HI_TEMP 16383
|
|
312
|
+ #define HEATER_5_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
300
|
313
|
#define HEATER_5_RAW_LO_TEMP 0
|
301
|
314
|
#else
|
302
|
315
|
#define HEATER_5_RAW_HI_TEMP 0
|
303
|
|
- #define HEATER_5_RAW_LO_TEMP 16383
|
|
316
|
+ #define HEATER_5_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
304
|
317
|
#endif
|
305
|
318
|
#endif
|
306
|
319
|
#ifndef HEATER_BED_RAW_HI_TEMP
|
307
|
320
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_BED_USES_THERMISTOR)
|
308
|
|
- #define HEATER_BED_RAW_HI_TEMP 16383
|
|
321
|
+ #define HEATER_BED_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
309
|
322
|
#define HEATER_BED_RAW_LO_TEMP 0
|
310
|
323
|
#else
|
311
|
324
|
#define HEATER_BED_RAW_HI_TEMP 0
|
312
|
|
- #define HEATER_BED_RAW_LO_TEMP 16383
|
|
325
|
+ #define HEATER_BED_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
313
|
326
|
#endif
|
314
|
327
|
#endif
|
315
|
328
|
#ifndef HEATER_CHAMBER_RAW_HI_TEMP
|
316
|
329
|
#if defined(REVERSE_TEMP_SENSOR_RANGE) || !defined(HEATER_CHAMBER_USES_THERMISTOR)
|
317
|
|
- #define HEATER_CHAMBER_RAW_HI_TEMP 16383
|
|
330
|
+ #define HEATER_CHAMBER_RAW_HI_TEMP MAX_RAW_THERMISTOR_VALUE
|
318
|
331
|
#define HEATER_CHAMBER_RAW_LO_TEMP 0
|
319
|
332
|
#else
|
320
|
333
|
#define HEATER_CHAMBER_RAW_HI_TEMP 0
|
321
|
|
- #define HEATER_CHAMBER_RAW_LO_TEMP 16383
|
|
334
|
+ #define HEATER_CHAMBER_RAW_LO_TEMP MAX_RAW_THERMISTOR_VALUE
|
322
|
335
|
#endif
|
323
|
336
|
#endif
|
324
|
337
|
|