Version 0.65b. This version fixes the incompatibility between the

code in the web interface and the firmware.  The web expects to select tool T1
when it changes temperatures.  The firmware now also uses T1.
This commit is contained in:
Adrian Bowyer 2014-05-07 18:42:54 +01:00
parent 4104ff461b
commit ad4a451bed
3 changed files with 21 additions and 21 deletions

View file

@ -24,7 +24,7 @@ Licence: GPL
#define CONFIGURATION_H
#define NAME "RepRapFirmware"
#define VERSION "0.65a"
#define VERSION "0.65b"
#define DATE "2014-05-07"
#define LAST_AUTHOR "reprappro"

View file

@ -75,7 +75,7 @@ void GCodes::Init()
offSetSet = false;
dwellWaiting = false;
stackPointer = 0;
selectedHead = 0; //default to zero so parameter setting gcodes (eg M906) work for tools prior to tools being selected
selectedHead = -1;
gFeedRate = platform->MaxFeedrate(Z_AXIS); // Typically the slowest
zProbesSet = false;
probeCount = 0;
@ -354,7 +354,7 @@ void GCodes::LoadMoveBufferFromGCode(GCodeBuffer *gb, bool doingG92, bool applyL
* moveBuffer[AXES+selectedHead) = n.n
* moveBuffer[AXES+selectedHead+1) = m.m
* moveBuffer[AXES+selectedHead+2) = o.o
* so if selectedHead=0 move buffer ends up looking like this for a 5 extruder drive setup:
* so if selectedHead=1 move buffer ends up looking like this for a 5 extruder drive setup:
* {x.x, y.y, z.z, n.n, m.m, o.o, 0.0,0.0, f.f}
* where x,y,z are the axes and f is the feedrate.
* If selected head > 0 then there is the possibility that more drives can be set than
@ -365,7 +365,7 @@ void GCodes::LoadMoveBufferFromGCode(GCodeBuffer *gb, bool doingG92, bool applyL
* would leave the move buffer on a 4 extruder drive setup looking like this:
* {x.x, y.y, z.z, 0.0, 0.0, 0.0, n.n,m.m, f.f}
*/
if(gb->Seen('E')&& ((i-AXES) == selectedHead))
if(gb->Seen('E')&& ((i-AXES) == selectedHead-1))
{
//the number of mixing drives set (by M160)
int numDrives = platform->GetMixingDrives();
@ -1158,7 +1158,7 @@ bool GCodes::SetOffsets(GCodeBuffer *gb)
int8_t head;
if(gb->Seen('P'))
{
head = gb->GetIValue() + 1; // 0 is the Bed
head = gb->GetIValue(); // 0 is the Bed
if(gb->Seen('R'))
reprap.GetHeat()->SetStandbyTemperature(head, gb->GetFValue());
@ -1577,9 +1577,9 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
}
//FIXME handle selectedHead=-1 case
//Just sets the currently selected head.
else if(gb->Seen('E')&& ((drive-AXES) == selectedHead))//then do active extruder
else if(gb->Seen('E')&& ((drive-AXES) == selectedHead - 1))//then do active extruder
{
platform->SetDriveStepsPerUnit(AXES+selectedHead, gb->GetFValue());
platform->SetDriveStepsPerUnit(AXES+selectedHead - 1, gb->GetFValue());
seen=true;
}
}
@ -1612,8 +1612,8 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
if(gb->Seen('S'))
{
//only sets the selected head (As set by T#)
reprap.GetHeat()->SetActiveTemperature(selectedHead+1, gb->GetFValue()); // 0 is the bed
reprap.GetHeat()->Activate(selectedHead+1);
reprap.GetHeat()->SetActiveTemperature(selectedHead, gb->GetFValue()); // 0 is the bed
reprap.GetHeat()->Activate(selectedHead);
}
break;
@ -1668,11 +1668,11 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
case 109: // Deprecated
if(gb->Seen('S'))
{
reprap.GetHeat()->SetActiveTemperature(selectedHead+1, gb->GetFValue()); // 0 is the bed
reprap.GetHeat()->Activate(selectedHead+1);
reprap.GetHeat()->SetActiveTemperature(selectedHead, gb->GetFValue()); // 0 is the bed
reprap.GetHeat()->Activate(selectedHead);
}
//check here rather than falling through to M116, we want to just wait for the extruder we specified (otherwise use M116 not M109)
result = reprap.GetHeat()->HeaterAtSetTemperature(selectedHead+1);
result = reprap.GetHeat()->HeaterAtSetTemperature(selectedHead);
break;
case 116: // Wait for everything, especially set temperatures
if(!AllMovesAreFinishedAndMoveBufferIsLoaded())
@ -1746,8 +1746,8 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
{
platform->SetAcceleration(drive, gb->GetFValue());
//then do active extruder
}else if(gb->Seen('E')&& ((drive-AXES) == selectedHead)){
platform->SetAcceleration(AXES+selectedHead, gb->GetFValue()); //Set the E acceleration for the currently selected tool
}else if(gb->Seen('E')&& ((drive-AXES) == selectedHead-1)){
platform->SetAcceleration(AXES+selectedHead-1, gb->GetFValue()); //Set the E acceleration for the currently selected tool
}else{
platform->SetAcceleration(drive, -1);
}
@ -1763,10 +1763,10 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
float value = gb->GetFValue()*distanceScale*0.016666667; // G Code feedrates are in mm/minute; we need mm/sec;
platform->SetMaxFeedrate(drive, value);
}
else if(gb->Seen('E')&& ((drive-AXES) == selectedHead))//then do active extruder
else if(gb->Seen('E')&& ((drive-AXES) == selectedHead-1))//then do active extruder
{
float value = gb->GetFValue()*distanceScale*0.016666667; // G Code feedrates are in mm/minute; we need mm/sec;
platform->SetMaxFeedrate(AXES+selectedHead, value); //Set the E Steps for the currently selected tool
platform->SetMaxFeedrate(AXES+selectedHead-1, value); //Set the E Steps for the currently selected tool
}
}
break;
@ -1989,7 +1989,7 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
{
if(gb->Seen(gCodeLetters[i])){
float value = gb->GetFValue(); // mA
platform->SetMotorCurrent(AXES+selectedHead, value);
platform->SetMotorCurrent(AXES+selectedHead-1, value);
}
}
}
@ -2025,15 +2025,15 @@ bool GCodes::ActOnGcode(GCodeBuffer *gb)
error = true;
for(int8_t i = AXES; i < DRIVES; i++)
{
if(selectedHead == i - AXES)
reprap.GetHeat()->Standby(selectedHead + 1); // + 1 because 0 is the Bed
if(selectedHead == i - AXES + 1)
reprap.GetHeat()->Standby(selectedHead);
}
for(int8_t i = AXES; i < DRIVES; i++)
{
if(code == i - AXES)
if(code == i - AXES + 1)
{
selectedHead = code;
reprap.GetHeat()->Activate(selectedHead + 1); // 0 is the Bed
reprap.GetHeat()->Activate(selectedHead);
error = false;
}
}

Binary file not shown.