Browse Source

Revert measurement loop

Scott Lahteine 10 years ago
parent
commit
1fac388664
1 changed files with 77 additions and 127 deletions
  1. 77
    127
      Marlin/temperature.cpp

+ 77
- 127
Marlin/temperature.cpp View File

1145
   for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
1145
   for (int i=0; i<EXTRUDERS; i++) setTargetHotend(0, i);
1146
   setTargetBed(0);
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
   #if HAS_TEMP_0
1154
   #if HAS_TEMP_0
1149
     target_temperature[0] = 0;
1155
     target_temperature[0] = 0;
1150
     soft_pwm[0] = 0;
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
   #endif
1158
   #endif
1153
 
1159
 
1154
   #if EXTRUDERS > 1 && HAS_TEMP_1
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
   #endif
1162
   #endif
1159
 
1163
 
1160
   #if EXTRUDERS > 2 && HAS_TEMP_2
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
   #endif
1166
   #endif
1165
 
1167
 
1166
   #if EXTRUDERS > 3 && HAS_TEMP_3
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
   #endif
1170
   #endif
1171
 
1171
 
1172
   #if HAS_TEMP_BED
1172
   #if HAS_TEMP_BED
1240
 enum TempState {
1240
 enum TempState {
1241
   PrepareTemp_0,
1241
   PrepareTemp_0,
1242
   MeasureTemp_0,
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
   StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
1253
   StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
1264
 };
1254
 };
1265
 
1255
 
1483
       #if HAS_TEMP_0
1473
       #if HAS_TEMP_0
1484
         raw_temp_value[0] += ADC;
1474
         raw_temp_value[0] += ADC;
1485
       #endif
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
       break;
1477
       break;
1502
 
1478
 
1503
-    #if HAS_TEMP_BED
1504
-      case PrepareTemp_BED:
1479
+    case PrepareTemp_BED:
1480
+      #if HAS_TEMP_BED
1505
         START_ADC(TEMP_BED_PIN);
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
         raw_temp_bed_value += ADC;
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
         START_ADC(TEMP_1_PIN);
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
         raw_temp_value[1] += ADC;
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
         START_ADC(TEMP_2_PIN);
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
         raw_temp_value[2] += ADC;
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
         START_ADC(TEMP_3_PIN);
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
         raw_temp_value[3] += ADC;
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
         START_ADC(FILWIDTH_PIN);
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
         // raw_filwidth_value += ADC;  //remove to use an IIR filter approach
1544
         // raw_filwidth_value += ADC;  //remove to use an IIR filter approach
1595
         if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
1545
         if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data.
1596
           raw_filwidth_value -= (raw_filwidth_value>>7);  //multiply raw_filwidth_value by 127/128
1546
           raw_filwidth_value -= (raw_filwidth_value>>7);  //multiply raw_filwidth_value by 127/128
1597
           raw_filwidth_value += ((unsigned long)ADC<<7);  //add new ADC reading
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
     case StartupDelay:
1554
     case StartupDelay:
1605
       temp_state = PrepareTemp_0;
1555
       temp_state = PrepareTemp_0;

Loading…
Cancel
Save