|
@@ -1145,28 +1145,28 @@ void disable_heater() {
|
1145
|
1145
|
for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
|
1146
|
1146
|
setTargetBed(0);
|
1147
|
1147
|
|
|
1148
|
+ #define DISABLE_HEATER(NR) { \
|
|
1149
|
+ target_temperature[NR] = 0; \
|
|
1150
|
+ soft_pwm[NR] = 0; \
|
|
1151
|
+ WRITE_HEATER_ ## NR (LOW); \
|
|
1152
|
+ }
|
|
1153
|
+
|
1148
|
1154
|
#if HAS_TEMP_0
|
1149
|
1155
|
target_temperature[0] = 0;
|
1150
|
1156
|
soft_pwm[0] = 0;
|
1151
|
|
- WRITE_HEATER_0P(LOW); // If HEATERS_PARALLEL should apply, change to WRITE_HEATER_0
|
|
1157
|
+ WRITE_HEATER_0P(LOW); // Should HEATERS_PARALLEL apply here? Then change to DISABLE_HEATER(0)
|
1152
|
1158
|
#endif
|
1153
|
1159
|
|
1154
|
1160
|
#if EXTRUDERS > 1 && HAS_TEMP_1
|
1155
|
|
- target_temperature[1] = 0;
|
1156
|
|
- soft_pwm[1] = 0;
|
1157
|
|
- WRITE_HEATER_1(LOW);
|
|
1161
|
+ DISABLE_HEATER(1);
|
1158
|
1162
|
#endif
|
1159
|
1163
|
|
1160
|
1164
|
#if EXTRUDERS > 2 && HAS_TEMP_2
|
1161
|
|
- target_temperature[2] = 0;
|
1162
|
|
- soft_pwm[2] = 0;
|
1163
|
|
- WRITE_HEATER_2(LOW);
|
|
1165
|
+ DISABLE_HEATER(2);
|
1164
|
1166
|
#endif
|
1165
|
1167
|
|
1166
|
1168
|
#if EXTRUDERS > 3 && HAS_TEMP_3
|
1167
|
|
- target_temperature[3] = 0;
|
1168
|
|
- soft_pwm[3] = 0;
|
1169
|
|
- WRITE_HEATER_3(LOW);
|
|
1169
|
+ DISABLE_HEATER(3);
|
1170
|
1170
|
#endif
|
1171
|
1171
|
|
1172
|
1172
|
#if HAS_TEMP_BED
|
|
@@ -1240,26 +1240,16 @@ void disable_heater() {
|
1240
|
1240
|
enum TempState {
|
1241
|
1241
|
PrepareTemp_0,
|
1242
|
1242
|
MeasureTemp_0,
|
1243
|
|
- #if HAS_TEMP_BED
|
1244
|
|
- PrepareTemp_BED,
|
1245
|
|
- MeasureTemp_BED,
|
1246
|
|
- #endif
|
1247
|
|
- #if HAS_TEMP_1
|
1248
|
|
- PrepareTemp_1,
|
1249
|
|
- MeasureTemp_1,
|
1250
|
|
- #endif
|
1251
|
|
- #if HAS_TEMP_2
|
1252
|
|
- PrepareTemp_2,
|
1253
|
|
- MeasureTemp_2,
|
1254
|
|
- #endif
|
1255
|
|
- #if HAS_TEMP_3
|
1256
|
|
- PrepareTemp_3,
|
1257
|
|
- MeasureTemp_3,
|
1258
|
|
- #endif
|
1259
|
|
- #if HAS_FILAMENT_SENSOR
|
1260
|
|
- Prepare_FILWIDTH,
|
1261
|
|
- Measure_FILWIDTH,
|
1262
|
|
- #endif
|
|
1243
|
+ PrepareTemp_BED,
|
|
1244
|
+ MeasureTemp_BED,
|
|
1245
|
+ PrepareTemp_1,
|
|
1246
|
+ MeasureTemp_1,
|
|
1247
|
+ PrepareTemp_2,
|
|
1248
|
+ MeasureTemp_2,
|
|
1249
|
+ PrepareTemp_3,
|
|
1250
|
+ MeasureTemp_3,
|
|
1251
|
+ Prepare_FILWIDTH,
|
|
1252
|
+ Measure_FILWIDTH,
|
1263
|
1253
|
StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
|
1264
|
1254
|
};
|
1265
|
1255
|
|
|
@@ -1483,123 +1473,83 @@ ISR(TIMER0_COMPB_vect) {
|
1483
|
1473
|
#if HAS_TEMP_0
|
1484
|
1474
|
raw_temp_value[0] += ADC;
|
1485
|
1475
|
#endif
|
1486
|
|
- temp_state =
|
1487
|
|
- #if HAS_TEMP_BED
|
1488
|
|
- PrepareTemp_BED
|
1489
|
|
- #elif HAS_TEMP_1
|
1490
|
|
- PrepareTemp_1
|
1491
|
|
- #elif HAS_TEMP_2
|
1492
|
|
- PrepareTemp_2
|
1493
|
|
- #elif HAS_TEMP_3
|
1494
|
|
- PrepareTemp_3
|
1495
|
|
- #elif HAS_FILAMENT_SENSOR
|
1496
|
|
- Prepare_FILWIDTH
|
1497
|
|
- #else
|
1498
|
|
- PrepareTemp_0
|
1499
|
|
- #endif
|
1500
|
|
- ;
|
|
1476
|
+ temp_state = PrepareTemp_BED;
|
1501
|
1477
|
break;
|
1502
|
1478
|
|
1503
|
|
- #if HAS_TEMP_BED
|
1504
|
|
- case PrepareTemp_BED:
|
|
1479
|
+ case PrepareTemp_BED:
|
|
1480
|
+ #if HAS_TEMP_BED
|
1505
|
1481
|
START_ADC(TEMP_BED_PIN);
|
1506
|
|
- lcd_buttons_update();
|
1507
|
|
- temp_state = MeasureTemp_BED;
|
1508
|
|
- break;
|
1509
|
|
- case MeasureTemp_BED:
|
|
1482
|
+ #endif
|
|
1483
|
+ lcd_buttons_update();
|
|
1484
|
+ temp_state = MeasureTemp_BED;
|
|
1485
|
+ break;
|
|
1486
|
+ case MeasureTemp_BED:
|
|
1487
|
+ #if HAS_TEMP_BED
|
1510
|
1488
|
raw_temp_bed_value += ADC;
|
1511
|
|
- temp_state =
|
1512
|
|
- #if HAS_TEMP_1
|
1513
|
|
- PrepareTemp_1
|
1514
|
|
- #elif HAS_TEMP_2
|
1515
|
|
- PrepareTemp_2
|
1516
|
|
- #elif HAS_TEMP_3
|
1517
|
|
- PrepareTemp_3
|
1518
|
|
- #elif HAS_FILAMENT_SENSOR
|
1519
|
|
- Prepare_FILWIDTH
|
1520
|
|
- #else
|
1521
|
|
- PrepareTemp_0
|
1522
|
|
- #endif
|
1523
|
|
- ;
|
1524
|
|
- break;
|
1525
|
|
- #endif
|
|
1489
|
+ #endif
|
|
1490
|
+ temp_state = PrepareTemp_1;
|
|
1491
|
+ break;
|
1526
|
1492
|
|
1527
|
|
- #if HAS_TEMP_1
|
1528
|
|
- case PrepareTemp_1:
|
|
1493
|
+ case PrepareTemp_1:
|
|
1494
|
+ #if HAS_TEMP_1
|
1529
|
1495
|
START_ADC(TEMP_1_PIN);
|
1530
|
|
- lcd_buttons_update();
|
1531
|
|
- temp_state = MeasureTemp_1;
|
1532
|
|
- break;
|
1533
|
|
- case MeasureTemp_1:
|
|
1496
|
+ #endif
|
|
1497
|
+ lcd_buttons_update();
|
|
1498
|
+ temp_state = MeasureTemp_1;
|
|
1499
|
+ break;
|
|
1500
|
+ case MeasureTemp_1:
|
|
1501
|
+ #if HAS_TEMP_1
|
1534
|
1502
|
raw_temp_value[1] += ADC;
|
1535
|
|
- temp_state =
|
1536
|
|
- #if HAS_TEMP_2
|
1537
|
|
- PrepareTemp_2
|
1538
|
|
- #elif HAS_TEMP_3
|
1539
|
|
- PrepareTemp_3
|
1540
|
|
- #elif HAS_FILAMENT_SENSOR
|
1541
|
|
- Prepare_FILWIDTH
|
1542
|
|
- #else
|
1543
|
|
- PrepareTemp_0
|
1544
|
|
- #endif
|
1545
|
|
- ;
|
1546
|
|
- break;
|
1547
|
|
- #endif
|
|
1503
|
+ #endif
|
|
1504
|
+ temp_state = PrepareTemp_2;
|
|
1505
|
+ break;
|
1548
|
1506
|
|
1549
|
|
- #if HAS_TEMP_2
|
1550
|
|
- case PrepareTemp_2:
|
|
1507
|
+ case PrepareTemp_2:
|
|
1508
|
+ #if HAS_TEMP_2
|
1551
|
1509
|
START_ADC(TEMP_2_PIN);
|
1552
|
|
- lcd_buttons_update();
|
1553
|
|
- temp_state = MeasureTemp_2;
|
1554
|
|
- break;
|
1555
|
|
- case MeasureTemp_2:
|
|
1510
|
+ #endif
|
|
1511
|
+ lcd_buttons_update();
|
|
1512
|
+ temp_state = MeasureTemp_2;
|
|
1513
|
+ break;
|
|
1514
|
+ case MeasureTemp_2:
|
|
1515
|
+ #if HAS_TEMP_2
|
1556
|
1516
|
raw_temp_value[2] += ADC;
|
1557
|
|
- temp_state =
|
1558
|
|
- #if HAS_TEMP_3
|
1559
|
|
- PrepareTemp_3
|
1560
|
|
- #elif HAS_FILAMENT_SENSOR
|
1561
|
|
- Prepare_FILWIDTH
|
1562
|
|
- #else
|
1563
|
|
- PrepareTemp_0
|
1564
|
|
- #endif
|
1565
|
|
- ;
|
1566
|
|
- break;
|
1567
|
|
- #endif
|
|
1517
|
+ #endif
|
|
1518
|
+ temp_state = PrepareTemp_3;
|
|
1519
|
+ break;
|
1568
|
1520
|
|
1569
|
|
- #if HAS_TEMP_3
|
1570
|
|
- case PrepareTemp_3:
|
|
1521
|
+ case PrepareTemp_3:
|
|
1522
|
+ #if HAS_TEMP_3
|
1571
|
1523
|
START_ADC(TEMP_3_PIN);
|
1572
|
|
- lcd_buttons_update();
|
1573
|
|
- temp_state = MeasureTemp_3;
|
1574
|
|
- break;
|
1575
|
|
- case MeasureTemp_3:
|
|
1524
|
+ #endif
|
|
1525
|
+ lcd_buttons_update();
|
|
1526
|
+ temp_state = MeasureTemp_3;
|
|
1527
|
+ break;
|
|
1528
|
+ case MeasureTemp_3:
|
|
1529
|
+ #if HAS_TEMP_3
|
1576
|
1530
|
raw_temp_value[3] += ADC;
|
1577
|
|
- temp_state =
|
1578
|
|
- #if HAS_FILAMENT_SENSOR
|
1579
|
|
- Prepare_FILWIDTH
|
1580
|
|
- #else
|
1581
|
|
- PrepareTemp_0
|
1582
|
|
- #endif
|
1583
|
|
- ;
|
1584
|
|
- break;
|
1585
|
|
- #endif
|
|
1531
|
+ #endif
|
|
1532
|
+ temp_state = Prepare_FILWIDTH;
|
|
1533
|
+ break;
|
1586
|
1534
|
|
1587
|
|
- #if HAS_FILAMENT_SENSOR
|
1588
|
|
- case Prepare_FILWIDTH:
|
|
1535
|
+ case Prepare_FILWIDTH:
|
|
1536
|
+ #if HAS_FILAMENT_SENSOR
|
1589
|
1537
|
START_ADC(FILWIDTH_PIN);
|
1590
|
|
- lcd_buttons_update();
|
1591
|
|
- temp_state = Measure_FILWIDTH;
|
1592
|
|
- break;
|
1593
|
|
- case Measure_FILWIDTH:
|
|
1538
|
+ #endif
|
|
1539
|
+ lcd_buttons_update();
|
|
1540
|
+ temp_state = Measure_FILWIDTH;
|
|
1541
|
+ break;
|
|
1542
|
+ case Measure_FILWIDTH:
|
|
1543
|
+ #if HAS_FILAMENT_SENSOR
|
1594
|
1544
|
// raw_filwidth_value += ADC; //remove to use an IIR filter approach
|
1595
|
1545
|
if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
|
1596
|
1546
|
raw_filwidth_value -= (raw_filwidth_value>>7); //multiply raw_filwidth_value by 127/128
|
1597
|
1547
|
raw_filwidth_value += ((unsigned long)ADC<<7); //add new ADC reading
|
1598
|
1548
|
}
|
1599
|
|
- temp_state = PrepareTemp_0;
|
1600
|
|
- temp_count++;
|
1601
|
|
- break;
|
1602
|
|
- #endif
|
|
1549
|
+ #endif
|
|
1550
|
+ temp_state = PrepareTemp_0;
|
|
1551
|
+ temp_count++;
|
|
1552
|
+ break;
|
1603
|
1553
|
|
1604
|
1554
|
case StartupDelay:
|
1605
|
1555
|
temp_state = PrepareTemp_0;
|