Version 1.18.2

Support new production DueX5 and DueX2 boards and Fan 8
Fix M21
Queue M42 commands
Fix M106 incorrect P parameter check
This commit is contained in:
David Crocker 2017-06-16 13:39:28 +01:00
parent a168bc307b
commit 7a05e499fc
10 changed files with 39 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 MiB

View file

@ -18,17 +18,20 @@ namespace DuetExpansion
const uint8_t DueXnAddress = 0x3E; // address of the SX1509B on the DueX0/DueX2/DueX5
const uint16_t BoardTypePins = (1u << 14) | (1u << 15);
// The original DueX2 and DueX5 boards had 2 board ID pins, bits 14 an 15.
// The new ones use bit 15 for fan 8, so not we just have bit 14.
// If we want any more variants, they will have to use a different I2C address.
const uint16_t BoardTypePins = (1u << 14);
const unsigned int BoardTypeShift = 14;
const ExpansionBoardType boardTypes[] =
{ ExpansionBoardType::DueX5, ExpansionBoardType::DueX2, ExpansionBoardType::DueX0, ExpansionBoardType::none };
const ExpansionBoardType boardTypes[] = { ExpansionBoardType::DueX5, ExpansionBoardType::DueX2 };
const unsigned int Fan3Bit = 12;
const unsigned int Fan4Bit = 7;
const unsigned int Fan5Bit = 6;
const unsigned int Fan6Bit = 5;
const unsigned int Fan7Bit = 4;
const uint16_t AllFanBits = (1u << Fan3Bit) | (1u << Fan4Bit) | (1u << Fan5Bit) | (1u << Fan6Bit) | (1u << Fan7Bit);
const unsigned int Fan8Bit = 15;
const uint16_t AllFanBits = (1u << Fan3Bit) | (1u << Fan4Bit) | (1u << Fan5Bit) | (1u << Fan6Bit) | (1u << Fan7Bit) | (1 << Fan8Bit);
const unsigned int E2StopBit = 0;
const unsigned int E3StopBit = 3;

View file

@ -114,8 +114,8 @@ const Pin VssaSensePin = 103;
const Pin Z_PROBE_MOD_PIN = 34; // Digital pin number to turn the IR LED on (high) or off (low) on Duet v0.6 and v1.0 (PB21)
// COOLING FANS
const size_t NUM_FANS = 8;
const Pin COOLING_FAN_PINS[NUM_FANS] = { 55, 58, 00, 212, 207, 206, 205, 204 };
const size_t NUM_FANS = 9;
const Pin COOLING_FAN_PINS[NUM_FANS] = { 55, 58, 00, 212, 207, 206, 205, 204, 215 };
const Pin COOLING_FAN_RPM_PIN = 102; // PB6 on expansion connector
// SD cards

View file

@ -42,32 +42,42 @@ bool GCodeQueue::QueueCode(GCodeBuffer &gb, uint32_t segmentsLeft)
bool queueCode = false;
switch (gb.GetCommandLetter())
{
case 'G':
case 'G':
{
const int code = gb.GetIValue();
// Set active/standby temperatures
queueCode = (code == 10 && gb.Seen('P'));
break;
}
break;
case 'M':
case 'M':
{
const int code = gb.GetIValue();
switch(code)
{
case 3: // spindle control
case 4:
case 5:
case 42: // set IO pin
case 106: // fan control
case 107:
case 104: // set temperatures and return immediately
case 140:
case 141:
case 144:
case 117: // display message
case 280: // set servo
case 300: // beep
case 420: // set RGB colour
queueCode = true;
break;
// Fan control
queueCode |= (code == 106 || code == 107);
// Set temperatures and return immediately
queueCode |= (code == 104 || code == 140 || code == 141 || code == 144);
// Display Message (LCD), Beep, RGB colour, Set servo position
queueCode |= (code == 117 || code == 300 || code == 280 || code == 420);
// Valve control
queueCode |= (code == 126 || code == 127);
break;
default:
break;
}
}
break;
}
// Does it make sense to queue this code?

View file

@ -958,9 +958,9 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, StringRef& reply)
bool seenFanNum = false;
int32_t fanNum = 0; // Default to the first fan
gb.TryGetIValue('P', fanNum, seenFanNum);
if (fanNum < 0 || fanNum > (int)NUM_FANS)
if (fanNum < 0 || fanNum >= (int)NUM_FANS)
{
reply.printf("Fan number %d is invalid, must be between 0 and %u", fanNum, NUM_FANS);
reply.printf("Fan number %d is invalid, must be between 0 and %u", fanNum, NUM_FANS - 1);
}
else
{

View file

@ -366,6 +366,7 @@ bool MassStorage::Mount(size_t card, StringRef& reply, bool reportSuccess)
else
{
// Mount the file systems
memset(&fileSystems[card], 0, sizeof(FATFS)); // f_mount doesn't initialise the file structure, we must do it ourselves
FRESULT mounted = f_mount(card, &fileSystems[card]);
if (mounted != FR_OK)
{

View file

@ -9,11 +9,11 @@
#define SRC_VERSION_H_
#ifndef VERSION
# define VERSION "1.18.1"
# define VERSION "1.18.2"
#endif
#ifndef DATE
# define DATE "2017-04-09"
# define DATE "2017-06-16"
#endif
#define AUTHORS "reprappro, dc42, chrishamm, t3p3, dnewman"