diff options
author | smcauliffe <smcauliffe@cb376a5e-1013-0410-a455-b6b1f9ac8223> | 2006-06-17 10:57:15 +0000 |
---|---|---|
committer | smcauliffe <smcauliffe@cb376a5e-1013-0410-a455-b6b1f9ac8223> | 2006-06-17 10:57:15 +0000 |
commit | d0b76782af104fadcc5e31ad135720e75cb5e8cb (patch) | |
tree | 9be4fe8751718b7b20cfd7594a2e70f2c511cda1 /branches | |
parent | 9d94e704617b5131c03780cfe0b679ae1175457a (diff) | |
download | reprap-backup-d0b76782af104fadcc5e31ad135720e75cb5e8cb.tar.gz reprap-backup-d0b76782af104fadcc5e31ad135720e75cb5e8cb.zip |
Added two additional parameters to heater output setting to
allow an additional temperature zone to be specified.
git-svn-id: https://reprap.svn.sourceforge.net/svnroot/reprap@391 cb376a5e-1013-0410-a455-b6b1f9ac8223
Diffstat (limited to 'branches')
-rw-r--r-- | branches/autoconf-firmware/devices/extruder/extruder2.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/branches/autoconf-firmware/devices/extruder/extruder2.c b/branches/autoconf-firmware/devices/extruder/extruder2.c index bd47a10e..eeddce76 100644 --- a/branches/autoconf-firmware/devices/extruder/extruder2.c +++ b/branches/autoconf-firmware/devices/extruder/extruder2.c @@ -45,9 +45,11 @@ volatile static byte seekNotify = 255; volatile static byte lastPortB = 0; -static byte requestedHeat = 0; +static byte requestedHeat0 = 0; +static byte requestedHeat1 = 0; volatile static byte heatCounter = 0; -static byte temperatureLimit = 0; +static byte temperatureLimit0 = 0; +static byte temperatureLimit1 = 0; volatile static byte delay_counter; static byte lastTemperature = 0; @@ -98,7 +100,8 @@ void init2() currentPosition.bytes[1] = 0; seekPosition.bytes[0] = 0; seekPosition.bytes[1] = 0; - requestedHeat = 0; + requestedHeat0 = 0; + requestedHeat1 = 0; heatCounter = 0; lastTemperature = 0; lastTemperatureRef = 0; @@ -150,12 +153,22 @@ void setSpeed(byte speed, byte direction) #pragma nooverlay void timerTick() { - - if (lastTemperature <= temperatureLimit) { + // There are two temperatures temperatureLimit0 and temperatureLimit1. + // When colder than temperatureLimit0, the heater runs at + // the power specified by requestedHeat1. If it is between + // temperatureLimit0 and temperatureLimit1 then it runs at the + // lower power setting requestedHeat0. If it is hotter than + // temperatureLimit1, the power shuts down completely. + if (lastTemperature <= temperatureLimit1) { // Reached critical limit, so power off PORTB0 = 0; - } else if (heatCounter >= requestedHeat && requestedHeat != 255) { - // Heater off + } else if (lastTemperature <= temperatureLimit0 && + heatCounter >= requestedHeat0 && requestedHeat0 != 255) { + // In medium zone, heater off period (based on low heat) + PORTB0 = 0; + } else if (lastTemperature > temperatureLimit0 && + heatCounter >= requestedHeat1 && requestedHeat1 != 255) { + // In low zone, heater off period (based on high heat) PORTB0 = 0; } else { // Heater on @@ -425,8 +438,10 @@ void processCommand() break; case CMD_SETHEAT: - requestedHeat = buffer[1]; - temperatureLimit = buffer[2]; + requestedHeat0 = buffer[1]; + requestedHeat1 = buffer[2]; + temperatureLimit0 = buffer[3]; + temperatureLimit1 = buffer[4]; break; case CMD_GETTEMP: |