parent
9cee81d47e
commit
9a56d90150
@ -52,11 +52,13 @@ int freeMemory() {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// scan command line for code
|
||||||
|
// return index into pin map array if found and the pin is valid.
|
||||||
|
// return dval if not found or not a valid pin.
|
||||||
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
|
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
|
||||||
const uint16_t val = (uint16_t)parser.intval(code), port = val / 100, pin = val % 100;
|
const uint16_t val = (uint16_t)parser.intval(code, -1), port = val / 100, pin = val % 100;
|
||||||
const int16_t ind = (port < (NUM_DIGITAL_PINS >> 5) && (pin < 32))
|
const int16_t ind = (port < ((NUM_DIGITAL_PINS) >> 5) && pin < 32) ? GET_PIN_MAP_INDEX((port << 5) | pin) : -2;
|
||||||
? GET_PIN_MAP_INDEX(port << 5 | pin) : -2;
|
return ind > -1 ? ind : dval;
|
||||||
return ind > -2 ? ind : dval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void flashFirmware(int16_t value) {
|
void flashFirmware(int16_t value) {
|
||||||
|
@ -40,6 +40,12 @@
|
|||||||
#define PRINT_PIN(p) do {sprintf_P(buffer, PSTR("%d.%02d"), LPC1768_PIN_PORT(p), LPC1768_PIN_PIN(p)); SERIAL_ECHO(buffer);} while (0)
|
#define PRINT_PIN(p) do {sprintf_P(buffer, PSTR("%d.%02d"), LPC1768_PIN_PORT(p), LPC1768_PIN_PIN(p)); SERIAL_ECHO(buffer);} while (0)
|
||||||
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
|
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
|
||||||
|
|
||||||
|
// pins that will cause hang/reset/disconnect in M43 Toggle and Watch utilities
|
||||||
|
// uses pin index
|
||||||
|
#ifndef M43_NEVER_TOUCH
|
||||||
|
#define M43_NEVER_TOUCH(Q) ((Q) == 29 || (Q) == 30 || (Q) == 73) // USB pins
|
||||||
|
#endif
|
||||||
|
|
||||||
// active ADC function/mode/code values for PINSEL registers
|
// active ADC function/mode/code values for PINSEL registers
|
||||||
constexpr int8_t ADC_pin_mode(pin_t pin) {
|
constexpr int8_t ADC_pin_mode(pin_t pin) {
|
||||||
return (LPC1768_PIN_PORT(pin) == 0 && LPC1768_PIN_PIN(pin) == 2 ? 2 :
|
return (LPC1768_PIN_PORT(pin) == 0 && LPC1768_PIN_PIN(pin) == 2 ? 2 :
|
||||||
|
@ -47,13 +47,13 @@ inline void toggle_pins() {
|
|||||||
|
|
||||||
for (uint8_t i = start; i <= end; i++) {
|
for (uint8_t i = start; i <= end; i++) {
|
||||||
pin_t pin = GET_PIN_MAP_PIN(i);
|
pin_t pin = GET_PIN_MAP_PIN(i);
|
||||||
//report_pin_state_extended(pin, ignore_protection, false);
|
|
||||||
if (!VALID_PIN(pin)) continue;
|
if (!VALID_PIN(pin)) continue;
|
||||||
if (!ignore_protection && pin_is_protected(pin)) {
|
if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) {
|
||||||
report_pin_state_extended(pin, ignore_protection, true, "Untouched ");
|
report_pin_state_extended(pin, ignore_protection, true, "Untouched ");
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
watchdog_reset();
|
||||||
report_pin_state_extended(pin, ignore_protection, true, "Pulsing ");
|
report_pin_state_extended(pin, ignore_protection, true, "Pulsing ");
|
||||||
#if AVR_AT90USB1286_FAMILY // Teensy IDEs don't know about these pins so must use FASTIO
|
#if AVR_AT90USB1286_FAMILY // Teensy IDEs don't know about these pins so must use FASTIO
|
||||||
if (pin == TEENSY_E2) {
|
if (pin == TEENSY_E2) {
|
||||||
@ -77,12 +77,12 @@ inline void toggle_pins() {
|
|||||||
{
|
{
|
||||||
pinMode(pin, OUTPUT);
|
pinMode(pin, OUTPUT);
|
||||||
for (int16_t j = 0; j < repeat; j++) {
|
for (int16_t j = 0; j < repeat; j++) {
|
||||||
extDigitalWrite(pin, 0); safe_delay(wait);
|
watchdog_reset(); extDigitalWrite(pin, 0); safe_delay(wait);
|
||||||
extDigitalWrite(pin, 1); safe_delay(wait);
|
watchdog_reset(); extDigitalWrite(pin, 1); safe_delay(wait);
|
||||||
extDigitalWrite(pin, 0); safe_delay(wait);
|
watchdog_reset(); extDigitalWrite(pin, 0); safe_delay(wait);
|
||||||
|
watchdog_reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
SERIAL_EOL();
|
SERIAL_EOL();
|
||||||
}
|
}
|
||||||
@ -277,7 +277,7 @@ void GcodeSuite::M43() {
|
|||||||
for (uint8_t i = first_pin; i <= last_pin; i++) {
|
for (uint8_t i = first_pin; i <= last_pin; i++) {
|
||||||
pin_t pin = GET_PIN_MAP_PIN(i);
|
pin_t pin = GET_PIN_MAP_PIN(i);
|
||||||
if (!VALID_PIN(pin)) continue;
|
if (!VALID_PIN(pin)) continue;
|
||||||
if (!ignore_protection && pin_is_protected(pin)) continue;
|
if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue;
|
||||||
pinMode(pin, INPUT_PULLUP);
|
pinMode(pin, INPUT_PULLUP);
|
||||||
delay(1);
|
delay(1);
|
||||||
/*
|
/*
|
||||||
@ -300,7 +300,7 @@ void GcodeSuite::M43() {
|
|||||||
for (uint8_t i = first_pin; i <= last_pin; i++) {
|
for (uint8_t i = first_pin; i <= last_pin; i++) {
|
||||||
pin_t pin = GET_PIN_MAP_PIN(i);
|
pin_t pin = GET_PIN_MAP_PIN(i);
|
||||||
if (!VALID_PIN(pin)) continue;
|
if (!VALID_PIN(pin)) continue;
|
||||||
if (!ignore_protection && pin_is_protected(pin)) continue;
|
if (M43_NEVER_TOUCH(i) || (!ignore_protection && pin_is_protected(pin))) continue;
|
||||||
const byte val =
|
const byte val =
|
||||||
/*
|
/*
|
||||||
IS_ANALOG(pin)
|
IS_ANALOG(pin)
|
||||||
|
@ -102,6 +102,9 @@ const PinInfo pin_array[] PROGMEM = {
|
|||||||
|
|
||||||
#include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU
|
#include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU
|
||||||
|
|
||||||
|
#ifndef M43_NEVER_TOUCH
|
||||||
|
#define M43_NEVER_TOUCH(Q) false
|
||||||
|
#endif
|
||||||
|
|
||||||
static void print_input_or_output(const bool isout) {
|
static void print_input_or_output(const bool isout) {
|
||||||
serialprintPGM(isout ? PSTR("Output = ") : PSTR("Input = "));
|
serialprintPGM(isout ? PSTR("Output = ") : PSTR("Input = "));
|
||||||
|
Loading…
Reference in New Issue
Block a user