/* Notice to developers: this file is intentionally included twice. */
\r
/*\r
- CPU clock rate\r
+ CPU clock rate\r
*/\r
-#ifndef F_CPU\r
- #define F_CPU 16000000L\r
+#ifndef F_CPU\r
+ #define F_CPU 16000000L\r
#endif\r
\r
/*\r
- other fallbacks for the Arduino IDE\r
+ other fallbacks for the Arduino IDE\r
*/\r
#define EXTRUDER\r
#define GEN3\r
\r
-#include "arduino.h"\r
+#include "arduino.h"\r
\r
// controller index- bus is multidrop after all\r
-#define THIS_CONTROLLER_NUM 0\r
+#define THIS_CONTROLLER_NUM 0\r
\r
//RS485 Interface pins\r
#define RX_ENABLE_PIN DIO4\r
#define TEMP_BED_PIN AIO6\r
#define TEMP_BED_PIN_CHANNEL 6\r
\r
+//Read digital temperature from DS18B20\r
+#define ONEWIRE_PIN DIO2\r
\r
-#define REFERENCE REFERENCE_AVCC\r
+#define REFERENCE REFERENCE_AVCC\r
\r
-#define TEMP_THERMISTOR\r
+#define TEMP_THERMISTOR\r
+#define TEMP_DS1820\r
\r
-//~ //original code\r
-//~ #define HEATER_PIN DIO11\r
-//~ #define BED_PIN AIO1\r
-//~ #define FAN_PIN DIO12\r
-// r3: exchange HEATER and BED (we don't have bed right now, and heater-mosfet is shot)\r
-#define BED_PIN DIO11\r
-#define HEATER_PIN AIO1\r
-#define FAN_PIN DIO12\r
+//e.e.: TechZoneRemix Gen3 Extruder Board:\r
+// 12V screw terminal C: DIO12\r
+// 12V screw terminal B: DIO11\r
+// 12V screw terminal A: AIO1\r
\r
-// extruder settings\r
-#define TEMP_HYSTERESIS 5
-#define TEMP_RESIDENCY_TIME 60\r
+#define HEATER_PIN DIO12\r
+#define BED_PIN AIO1\r
+#define FAN_PIN DIO11\r
\r
-#ifdef DEFINE_TEMP_SENSOR\r
-DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, TEMP_PIN_CHANNEL, THERMISTOR_EXTRUDER)\r
-DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, TEMP_BED_PIN_CHANNEL, THERMISTOR_EXTRUDER)\r
+// extruder settings\r
+#define TEMP_HYSTERESIS 5
+#define TEMP_RESIDENCY_TIME 60\r
+\r
+#ifdef DEFINE_TEMP_SENSOR\r
+DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, TEMP_PIN_CHANNEL, THERMISTOR_EXTRUDER)\r
+//DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, TEMP_BED_PIN_CHANNEL, THERMISTOR_EXTRUDER)\r
+ //9 bits accuracy for faster conversion time\r
+DEFINE_TEMP_SENSOR(bed, TT_DS1820, 0, 12)\r
// dummy temp sensor so analog_mask includes trim pot\r
-DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, TRIM_POT_CHANNEL, 0)\r
+DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, TRIM_POT_CHANNEL, 0)\r
#endif\r
-\r
-#ifdef DEFINE_HEATER\r
-//~ //original code\r
-//~ DEFINE_HEATER(extruder, DIO11)\r
-//~ DEFINE_HEATER(bed, AIO1)\r
-// r3: exchange HEATER and BED\r
-DEFINE_HEATER(extruder, AIO1)\r
-DEFINE_HEATER(bed, DIO11)\r
-DEFINE_HEATER(fan, DIO12)\r
+// DEFINE_HEATER(<name>, <pin>, <invert?>, <fan startup threshold pwm value>)\r
+// fan startup threshold: FANs usually take more power to start spinning than to keep spinning,\r
+// so, below a given pwm value we start the fan with full power and after
+// 50ms lower the output to the requested value.\r
+#ifdef DEFINE_HEATER\r
+DEFINE_HEATER(extruder, DIO12, 0, 0)\r
+DEFINE_HEATER(bed, AIO1, 1, 0)\r
+DEFINE_HEATER(fan, DIO11, 0, 150)\r
#endif\r
\r
// list of PWM-able pins and corresponding timers\r
// timer1 is used for step timing so don't use OC1A/OC1B (DIO9/DIO10)\r
-// OC0A DIO6\r
-// OC0B DIO5\r
-// OC1A DIO9\r
-// OC1B DIO10\r
-// OC2A DIO11\r
-// OC2B DIO3\r
+// OC0A DIO6\r
+// OC0B DIO5\r
+// OC1A DIO9\r
+// OC1B DIO10\r
+// OC2A DIO11\r
+// OC2B DIO3\r
\r
-#define TH_COUNT 8\r
-#define PID_SCALE 1024L\r
+#define TH_COUNT 8\r
+#define PID_SCALE 1024L\r
\r
\r
/*\r
- Motors\r
+ Motors\r
*/\r
\r
-#define enable_motors() do { TCCR0A |= MASK(COM0A1) | MASK(COM0B1); } while (0)\r
-#define disable_motors() do { TCCR0A &= ~MASK(COM0A1) & ~MASK(COM0B1); } while (0)\r
+#define enable_motors() do { TCCR0A |= MASK(COM0A1) | MASK(COM0B1); } while (0)\r
+#define disable_motors() do { TCCR0A &= ~MASK(COM0A1) & ~MASK(COM0B1); } while (0)\r