Compare commits
5 Commits
e1fcd0b7fe
...
test
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
040853e7dc | ||
|
|
ad33d0de79 | ||
|
|
1d62691973 | ||
|
|
dda98860d1 | ||
|
|
30264698b8 |
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
[submodule "PCB_Charger"]
|
||||
path = PCB_Charger
|
||||
url = https://git.rd12.ru/Razvalyaev/Charger.git
|
||||
branch = master
|
||||
@@ -19,7 +19,7 @@ constexpr uint8_t MENU_OPTICAL_CALIBRATION_ITEM = 7;
|
||||
const char *uiFailName(FailReason reason);
|
||||
|
||||
const char *appStateName(AppState state) {
|
||||
static const char *names[] = {"IDLE", "MENU", "BOARD_TEST", "SOLO_MEASURE", "SOLO_DRIVER", "MASTER_DISCOVER",
|
||||
static const char *names[] = {"IDLE", "MENU", "BOARD_TEST", "PWM_OUTPUT", "SOLO_MEASURE", "SOLO_DRIVER", "MASTER_DISCOVER",
|
||||
"MASTER_WAIT_READY", "MASTER_WAIT_RESULT", "MASTER_FINALIZE", "SLAVE_READY", "SLAVE_WAIT_START",
|
||||
"SLAVE_MEASURE", "SLAVE_WAIT_ACK", "FINISHED"};
|
||||
const uint8_t index = static_cast<uint8_t>(state);
|
||||
@@ -250,9 +250,12 @@ uint8_t cycleIndex(uint8_t value, uint8_t first, uint8_t last, int direction) {
|
||||
return value <= first ? last : static_cast<uint8_t>(value - 1U);
|
||||
}
|
||||
|
||||
uint8_t nextMenuItem(uint8_t current, TestGroup group) {
|
||||
uint8_t nextMenuItem(uint8_t current, TestGroup group, TestKind kind) {
|
||||
if (group == TestGroup::BOARD)
|
||||
return current == 0U ? MENU_OPTICAL_CALIBRATION_ITEM : 0U;
|
||||
if (kind == TestKind::PWM_OUTPUT)
|
||||
return current == 0U ? 1U : current == 1U ? 2U
|
||||
: current == 2U ? MENU_OPTICAL_CALIBRATION_ITEM : 0U;
|
||||
return current >= MENU_OPTICAL_CALIBRATION_ITEM ? 0U
|
||||
: static_cast<uint8_t>(current + 1U);
|
||||
}
|
||||
@@ -356,6 +359,12 @@ void App::update() {
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (state_ == AppState::PWM_OUTPUT) {
|
||||
if (startEvent == ButtonEvent::LONG) stopPwmOutput();
|
||||
else if (modeEvent != ButtonEvent::NONE)
|
||||
Log::event("ACTION", "MODE ignored while PWM output is active");
|
||||
return;
|
||||
}
|
||||
if (state_ != AppState::IDLE && state_ != AppState::MENU && state_ != AppState::FINISHED &&
|
||||
startEvent == ButtonEvent::LONG) { abortTest(); return; }
|
||||
if (state_ != AppState::IDLE && state_ != AppState::MENU && state_ != AppState::FINISHED &&
|
||||
@@ -399,7 +408,8 @@ void App::update() {
|
||||
if (modeEvent == ButtonEvent::SHORT) {
|
||||
leaveOpticalCalibration();
|
||||
menuItem_ = nextMenuItem(menuItem_,
|
||||
static_cast<TestGroup>(settings_.testGroup));
|
||||
static_cast<TestGroup>(settings_.testGroup),
|
||||
static_cast<TestKind>(settings_.testKind));
|
||||
Log::printf("ACTION", "menu item selected index=%u", menuItem_);
|
||||
showMenu();
|
||||
}
|
||||
@@ -529,12 +539,12 @@ void App::printSerialHelp() {
|
||||
Serial.println(" set group optics|board");
|
||||
Serial.println(" set boardtest adc|pwm|rx");
|
||||
Serial.println(" set role solo|master|slave");
|
||||
Serial.println(" set test optical|driver");
|
||||
Serial.println(" set frequency 500|1000|2000|5000|10000|25000");
|
||||
Serial.println(" set max 2000|5000|10000|20000|50000|100000|200000|500000");
|
||||
Serial.println(" set test optical|driver|pwm (driver/pwm: SOLO only)");
|
||||
Serial.println(" set frequency 500|1000|2000|5000|10000");
|
||||
Serial.println(" set max 2000|5000|10000|50000|100000|500000 (PWM pulse in SOLO PWM)");
|
||||
Serial.println(" set min 250|500|1000|2000|5000|10000|50000");
|
||||
Serial.println(" set accuracy 1|2|5|10");
|
||||
Serial.println(" set time 100|250|500|1000|2000|5000 (ms)");
|
||||
Serial.println(" set time 100|250|500|1000|2000|5000|60000 (ms)");
|
||||
Serial.println(" set light HH|HL|LH|LL (DRIVER only)");
|
||||
}
|
||||
|
||||
@@ -605,6 +615,9 @@ void App::handleSerialCommand(char *line) {
|
||||
else if (state_ == AppState::BOARD_TEST) {
|
||||
Serial.println("OK board test stopped");
|
||||
stopBoardTest();
|
||||
} else if (state_ == AppState::PWM_OUTPUT) {
|
||||
Serial.println("OK PWM output stopped");
|
||||
stopPwmOutput();
|
||||
} else if (state_ == AppState::MENU) {
|
||||
leaveOpticalCalibration();
|
||||
state_ = AppState::IDLE; showIdle(); Serial.println("OK menu closed");
|
||||
@@ -659,6 +672,9 @@ void App::handleSerialCommand(char *line) {
|
||||
else if (!strcmp(value, "driver") && !TARGET_IS_C3 &&
|
||||
static_cast<Role>(settings_.role) == Role::SOLO) {
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::DRIVER); accepted = true;
|
||||
} else if (!strcmp(value, "pwm") &&
|
||||
static_cast<Role>(settings_.role) == Role::SOLO) {
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::PWM_OUTPUT); accepted = true;
|
||||
}
|
||||
} else if ((!strcmp(name, "frequency") || !strcmp(name, "freq")) && parseUnsigned(value, numeric)) {
|
||||
const int index = optionIndex(PWM_FREQUENCY_OPTIONS_HZ, numeric);
|
||||
@@ -705,6 +721,8 @@ void App::cycleRunMode() {
|
||||
const TestKind kind = static_cast<TestKind>(settings_.testKind);
|
||||
if (role == Role::SOLO && kind == TestKind::OPTICAL && !TARGET_IS_C3) {
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::DRIVER);
|
||||
} else if (role == Role::SOLO && kind != TestKind::PWM_OUTPUT) {
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::PWM_OUTPUT);
|
||||
} else if (role == Role::SOLO) {
|
||||
settings_.role = static_cast<uint8_t>(Role::MASTER);
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
|
||||
@@ -725,11 +743,12 @@ void App::sanitizeRange() {
|
||||
settings_.boardTest = static_cast<uint8_t>(defaultBoardTest());
|
||||
if (settings_.role > static_cast<uint8_t>(Role::SLAVE))
|
||||
settings_.role = static_cast<uint8_t>(Role::SOLO);
|
||||
if (settings_.testKind > static_cast<uint8_t>(TestKind::DRIVER))
|
||||
if (settings_.testKind > static_cast<uint8_t>(TestKind::PWM_OUTPUT))
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
|
||||
if (settings_.lightCode > static_cast<uint8_t>(LightCode::LL))
|
||||
settings_.lightCode = static_cast<uint8_t>(LightCode::HH);
|
||||
if (settings_.role != static_cast<uint8_t>(Role::SOLO) ||
|
||||
if ((settings_.role != static_cast<uint8_t>(Role::SOLO) &&
|
||||
settings_.testKind != static_cast<uint8_t>(TestKind::OPTICAL)) ||
|
||||
(TARGET_IS_C3 && settings_.testKind == static_cast<uint8_t>(TestKind::DRIVER)))
|
||||
settings_.testKind = static_cast<uint8_t>(TestKind::OPTICAL);
|
||||
settings_.frequencyIndex %= countOf(PWM_FREQUENCY_OPTIONS_HZ);
|
||||
@@ -760,8 +779,8 @@ void App::changeMenu(int d) {
|
||||
} else if (menuItem_ == 2) {
|
||||
const uint8_t last = lastValidMaxPulseIndex(
|
||||
PWM_FREQUENCY_OPTIONS_HZ[settings_.frequencyIndex]);
|
||||
const uint8_t first = firstMaxPulseIndexAtLeast(
|
||||
MIN_PULSE_OPTIONS_NS[settings_.minPulseIndex], last);
|
||||
const uint8_t first = static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT
|
||||
? 0U : firstMaxPulseIndexAtLeast(MIN_PULSE_OPTIONS_NS[settings_.minPulseIndex], last);
|
||||
settings_.maxPulseIndex = cycleIndex(settings_.maxPulseIndex,
|
||||
first, last, d);
|
||||
} else if (menuItem_ == 3) {
|
||||
@@ -811,7 +830,8 @@ void App::showMenu() {
|
||||
break;
|
||||
case 2:
|
||||
Display::formatPulse(params_.maxPulseNs, value, sizeof(value));
|
||||
label = UiText::MENU_MAX_PULSE;
|
||||
label = static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT
|
||||
? UiText::MENU_PWM_PULSE : UiText::MENU_MAX_PULSE;
|
||||
break;
|
||||
case 3:
|
||||
Display::formatPulse(params_.minPulseNs, value, sizeof(value));
|
||||
@@ -847,7 +867,8 @@ void App::showMenu() {
|
||||
default: return;
|
||||
}
|
||||
formatMenuLine(label, value, one, sizeof(one));
|
||||
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD)
|
||||
if (static_cast<TestGroup>(settings_.testGroup) == TestGroup::BOARD ||
|
||||
static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT)
|
||||
snprintf(total, sizeof(total), "%s", UiText::BOARD_READY);
|
||||
else
|
||||
formatMenuLine(UiText::MENU_TOTAL_TIME, all, total, sizeof(total));
|
||||
@@ -900,6 +921,10 @@ void App::startTest() {
|
||||
startBoardTest();
|
||||
return;
|
||||
}
|
||||
if (static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT) {
|
||||
startPwmOutput();
|
||||
return;
|
||||
}
|
||||
params_ = store_.params(settings_); stageCount_ = pulseWidthPointCount(params_.maxPulseNs, params_.minPulseNs);
|
||||
stageIndex_ = 0; requestedHz_ = params_.frequencyHz; requestedPulseNs_ = 0; pendingReason_ = FailReason::NONE;
|
||||
havePeer_ = false; lastHeartbeatMs_ = 0; lastPeerSeenMs_ = 0;
|
||||
@@ -1019,6 +1044,37 @@ void App::stopBoardTest() {
|
||||
showIdle();
|
||||
}
|
||||
|
||||
void App::startPwmOutput() {
|
||||
params_ = store_.params(settings_);
|
||||
requestedHz_ = params_.frequencyHz;
|
||||
requestedPulseNs_ = params_.maxPulseNs;
|
||||
stageIndex_ = 0;
|
||||
stageCount_ = 1;
|
||||
pwm_.configureActiveLight(true);
|
||||
if (!pwm_.start(requestedHz_, requestedPulseNs_, actual_)) {
|
||||
Log::printf("PWM", "start failed: frequency=%luHz pulse=%luns",
|
||||
requestedHz_, requestedPulseNs_);
|
||||
finish(false, FailReason::RESOLUTION);
|
||||
return;
|
||||
}
|
||||
state_ = AppState::PWM_OUTPUT;
|
||||
char target[32], one[48];
|
||||
formatTarget(actual_.actualHz, actual_.actualPulseNs, target, sizeof(target));
|
||||
snprintf(one, sizeof(one), "%s: %s", uiTestName(TestKind::PWM_OUTPUT), target);
|
||||
display_.show(one, UiText::BOARD_STOP);
|
||||
Log::printf("PWM", "continuous output GPIO=%u requested=%luHz/%luns actual=%luHz/%luns duty=%.2f%%",
|
||||
GPIO_PWM, requestedHz_, requestedPulseNs_, actual_.actualHz,
|
||||
actual_.actualPulseNs, actual_.actualDutyPct);
|
||||
}
|
||||
|
||||
void App::stopPwmOutput() {
|
||||
Log::event("PWM", "continuous output stopped");
|
||||
pwm_.stop();
|
||||
state_ = AppState::IDLE;
|
||||
setActivePerformance(false);
|
||||
showIdle();
|
||||
}
|
||||
|
||||
bool App::armSlave(bool preserveDisplay) {
|
||||
setActivePerformance(false);
|
||||
pwm_.stop();
|
||||
@@ -1652,6 +1708,11 @@ void App::printConfiguration() {
|
||||
Serial.printf("MAC=%02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
Serial.printf("GPIO PWM=%u RX=%u START=%u MODE=%u SDA=%u SCL=%u\n", GPIO_PWM, GPIO_RX,
|
||||
GPIO_BUTTON_START, GPIO_BUTTON_MODE, GPIO_SDA, GPIO_SCL);
|
||||
if (static_cast<TestKind>(settings_.testKind) == TestKind::PWM_OUTPUT) {
|
||||
Serial.printf("Continuous PWM output %lu Hz, pulse %lu ns; RX unused\n",
|
||||
params_.frequencyHz, params_.maxPulseNs);
|
||||
return;
|
||||
}
|
||||
if (static_cast<TestKind>(settings_.testKind) == TestKind::DRIVER) {
|
||||
const char *code = lightCodeName(static_cast<LightCode>(settings_.lightCode));
|
||||
Serial.printf("Test %lu Hz, pulse %lu..%lu ns, accuracy %.2f%%, %lums, TX light=%c RX active light=%c\n",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "SettingsStore.h"
|
||||
|
||||
enum class AppState : uint8_t {
|
||||
IDLE, MENU, BOARD_TEST, SOLO_MEASURE, SOLO_DRIVER, MASTER_DISCOVER, MASTER_WAIT_READY,
|
||||
IDLE, MENU, BOARD_TEST, PWM_OUTPUT, SOLO_MEASURE, SOLO_DRIVER, MASTER_DISCOVER, MASTER_WAIT_READY,
|
||||
MASTER_WAIT_RESULT, MASTER_FINALIZE, SLAVE_READY, SLAVE_WAIT_START, SLAVE_MEASURE,
|
||||
SLAVE_WAIT_ACK, FINISHED
|
||||
};
|
||||
@@ -33,6 +33,8 @@ class App {
|
||||
void startBoardTest();
|
||||
void updateBoardTest(uint32_t now);
|
||||
void stopBoardTest();
|
||||
void startPwmOutput();
|
||||
void stopPwmOutput();
|
||||
bool armSlave(bool preserveDisplay = false);
|
||||
bool prepareStage(bool showProgress = true);
|
||||
bool startLocalMeasurement(float hz, float duty);
|
||||
|
||||
@@ -2,9 +2,13 @@
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
// Uncomment to build the standalone PWM/RX pulse probe instead of the tester UI.
|
||||
#define SIGNAL_PROBE_FIRMWARE
|
||||
|
||||
// ------------------------- Hardware configuration -------------------------
|
||||
// Enabled for the hand-wired prototype. Comment out for the production PCB.
|
||||
// Both profiles map S3 signals by physical header position with 5V/GND aligned.
|
||||
|
||||
#define MAKETKA
|
||||
|
||||
// Select exactly one populated receiver circuit. Use
|
||||
|
||||
@@ -18,7 +18,7 @@ constexpr const char *ROLE_NAMES[] = {
|
||||
};
|
||||
|
||||
constexpr const char *TEST_NAMES[] = {
|
||||
"ОПТИКА", "ДРАЙВЕР"
|
||||
"ОПТИКА", "ДРАЙВЕР", "ШИМ"
|
||||
};
|
||||
|
||||
constexpr const char *TEST_GROUP_NAMES[] = {
|
||||
@@ -54,6 +54,7 @@ constexpr const char *START_RUN = "ГОТОВ К ЗАПУСКУ";
|
||||
constexpr const char *MENU_FREQUENCY = "ЧАСТОТА ШИМ:";
|
||||
constexpr const char *MENU_TEST_GROUP = "ГРУППА ТЕСТОВ:";
|
||||
constexpr const char *MENU_MAX_PULSE = "МАКС. ИМПУЛЬС:";
|
||||
constexpr const char *MENU_PWM_PULSE = "ИМПУЛЬС ШИМ:";
|
||||
constexpr const char *MENU_MIN_PULSE = "МИН. ИМПУЛЬС:";
|
||||
constexpr const char *MENU_ACCURACY = "ТОЧНОСТЬ:";
|
||||
constexpr const char *MENU_TEST_TIME = "ВРЕМЯ ВЫБОРКИ:";
|
||||
@@ -97,7 +98,7 @@ constexpr const char *ROLE_NAMES[] = {
|
||||
};
|
||||
|
||||
constexpr const char *TEST_NAMES[] = {
|
||||
"OPTICAL", "DRIVER"
|
||||
"OPTICAL", "DRIVER", "PWM"
|
||||
};
|
||||
|
||||
constexpr const char *TEST_GROUP_NAMES[] = {
|
||||
@@ -133,6 +134,7 @@ constexpr const char *START_RUN = "READY TO START";
|
||||
constexpr const char *MENU_FREQUENCY = "PWM FREQUENCY:";
|
||||
constexpr const char *MENU_TEST_GROUP = "TEST GROUP:";
|
||||
constexpr const char *MENU_MAX_PULSE = "MAX PULSE:";
|
||||
constexpr const char *MENU_PWM_PULSE = "PWM PULSE:";
|
||||
constexpr const char *MENU_MIN_PULSE = "MIN PULSE:";
|
||||
constexpr const char *MENU_ACCURACY = "ACCURACY:";
|
||||
constexpr const char *MENU_TEST_TIME = "TEST TIME:";
|
||||
|
||||
@@ -16,9 +16,9 @@ const char *testGroupName(TestGroup group) {
|
||||
}
|
||||
|
||||
const char *testKindName(TestKind kind) {
|
||||
static const char *names[] = {"OPTICAL", "DRIVER"};
|
||||
static const char *names[] = {"OPTICAL", "DRIVER", "PWM OUTPUT"};
|
||||
const uint8_t i = static_cast<uint8_t>(kind);
|
||||
return i < 2 ? names[i] : "?";
|
||||
return i < 3 ? names[i] : "?";
|
||||
}
|
||||
|
||||
const char *boardTestName(BoardTest test) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
enum class Role : uint8_t { SOLO, MASTER, SLAVE };
|
||||
enum class TestGroup : uint8_t { OPTICS, BOARD };
|
||||
enum class TestKind : uint8_t { OPTICAL, DRIVER };
|
||||
enum class TestKind : uint8_t { OPTICAL, DRIVER, PWM_OUTPUT };
|
||||
enum class BoardTest : uint8_t { ADC, PWM_OUTPUT, RX_INPUT };
|
||||
enum class LightCode : uint8_t { HH, HL, LH, LL };
|
||||
enum class FailReason : uint8_t {
|
||||
|
||||
@@ -8,17 +8,29 @@
|
||||
#include <esp_task_wdt.h>
|
||||
#include <esp_timer.h>
|
||||
#include <esp32-hal-cpu.h>
|
||||
#include <soc/gpio_struct.h>
|
||||
#include <soc/gpio_reg.h>
|
||||
#include <soc/soc.h>
|
||||
#include <string.h>
|
||||
#if CONFIG_IDF_TARGET_ESP32C3
|
||||
#include <riscv/rv_utils.h>
|
||||
#endif
|
||||
|
||||
static inline uint32_t IRAM_ATTR maskAllInterrupts() {
|
||||
#if CONFIG_IDF_TARGET_ESP32C3
|
||||
return RV_CLEAR_CSR(mstatus, MSTATUS_MIE);
|
||||
#else
|
||||
uint32_t state;
|
||||
asm volatile("rsil %0, 15" : "=a"(state) :: "memory");
|
||||
return state;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void IRAM_ATTR restoreInterrupts(uint32_t state) {
|
||||
#if CONFIG_IDF_TARGET_ESP32C3
|
||||
RV_SET_CSR(mstatus, state & MSTATUS_MIE);
|
||||
#else
|
||||
asm volatile("wsr %0, ps\nrsync" :: "a"(state) : "memory");
|
||||
#endif
|
||||
}
|
||||
|
||||
void DriverEdgeStats::reset() {
|
||||
@@ -193,7 +205,7 @@ void IRAM_ATTR DriverTest::pollTaskLoop() {
|
||||
constexpr uint32_t PIN_MASK = (1UL << GPIO_PWM) | (1UL << GPIO_RX);
|
||||
for (;;) {
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
uint32_t levels = GPIO.in & PIN_MASK;
|
||||
uint32_t levels = REG_READ(GPIO_IN_REG) & PIN_MASK;
|
||||
uint32_t nextStart = 0;
|
||||
uint32_t windowEnd = 0;
|
||||
uint32_t lastTxStart = 0;
|
||||
@@ -205,7 +217,7 @@ void IRAM_ATTR DriverTest::pollTaskLoop() {
|
||||
uint32_t interruptState = 0;
|
||||
|
||||
auto sampleOnce = [&]() {
|
||||
const uint32_t current = GPIO.in & PIN_MASK;
|
||||
const uint32_t current = REG_READ(GPIO_IN_REG) & PIN_MASK;
|
||||
if (current == levels) return;
|
||||
const uint32_t now = esp_cpu_get_cycle_count();
|
||||
const uint32_t changed = current ^ levels;
|
||||
@@ -636,8 +648,7 @@ void IRAM_ATTR DriverTest::recordRaw(uint32_t tick, bool rising,
|
||||
return;
|
||||
}
|
||||
ring_[write] = {tick, rising, source};
|
||||
asm volatile("memw" ::: "memory");
|
||||
ringWrite_ = next;
|
||||
__atomic_store_n(&ringWrite_, next, __ATOMIC_RELEASE);
|
||||
}
|
||||
|
||||
size_t DriverTest::readRaw(TimedEvent *events, size_t capacity,
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
#include "Config.h"
|
||||
#ifdef SIGNAL_PROBE_FIRMWARE
|
||||
#include "SignalProbe.h"
|
||||
SignalProbe app;
|
||||
#else
|
||||
#include "App.h"
|
||||
App app;
|
||||
#endif
|
||||
|
||||
void setup() { app.begin(); }
|
||||
void loop() { app.update(); }
|
||||
|
||||
@@ -88,6 +88,19 @@ bool PulseReceiver::start(uint32_t expectedHz, float expectedDutyPct,
|
||||
return startCapture(false);
|
||||
}
|
||||
|
||||
bool PulseReceiver::startRaw() {
|
||||
if (!queue_ || running_) return false;
|
||||
#if OPTICAL_USE_MCPWM_CAPTURE
|
||||
if (!captureTimer_) return false;
|
||||
#endif
|
||||
#if !OPTICAL_USE_MCPWM_CAPTURE
|
||||
cpuTickHz_ = getCpuFrequencyMhz() * 1000000UL;
|
||||
if (!cpuTickHz_) return false;
|
||||
#endif
|
||||
resetStream();
|
||||
return startCapture(false);
|
||||
}
|
||||
|
||||
#if OPTICAL_USE_MCPWM_CAPTURE
|
||||
bool PulseReceiver::configureDriverTxCapture(bool risingEdge) {
|
||||
if (running_) return false;
|
||||
@@ -376,6 +389,18 @@ size_t PulseReceiver::readPeriods(PulsePeriod *periods, size_t capacity,
|
||||
return count;
|
||||
}
|
||||
|
||||
size_t PulseReceiver::readRawEdges(CaptureEvent *events, size_t capacity,
|
||||
TickType_t waitTicks) {
|
||||
if (!events || !capacity) return 0;
|
||||
size_t count = 0;
|
||||
Edge edge = {};
|
||||
while (count < capacity && nextOrderedEdge(edge, count ? 0 : waitTicks)) {
|
||||
const TimedEdge timed = extendEdge(edge);
|
||||
events[count++] = {timed.tick, timed.rising, CaptureSource::RX};
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
size_t PulseReceiver::readEvents(CaptureEvent *events, size_t capacity,
|
||||
TickType_t waitTicks) {
|
||||
if (!events || capacity < 3U || !txCaptureEnabled_ || !driverPulseTicks_ ||
|
||||
|
||||
@@ -24,11 +24,13 @@ class PulseReceiver {
|
||||
public:
|
||||
bool begin();
|
||||
bool start(uint32_t expectedHz, float expectedDutyPct, bool activeLightOn);
|
||||
bool startRaw();
|
||||
bool startDriver(uint32_t frequencyHz, uint32_t pulseNs,
|
||||
bool activeTxLightOn);
|
||||
void stop();
|
||||
void resetStream();
|
||||
size_t readPeriods(PulsePeriod *periods, size_t capacity, TickType_t waitTicks = 0);
|
||||
size_t readRawEdges(CaptureEvent *events, size_t capacity, TickType_t waitTicks = 0);
|
||||
size_t readEvents(CaptureEvent *events, size_t capacity, TickType_t waitTicks = 0);
|
||||
uint32_t takeDroppedItems();
|
||||
uint32_t tickHz() const;
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
namespace { constexpr uint16_t SETTINGS_VERSION = 11; constexpr char NAMESPACE[] = "opt-test"; }
|
||||
|
||||
void SettingsStore::defaults(Settings &s) const {
|
||||
// 2 kHz, 200 us .. 2 us, 5%, 1 s.
|
||||
// 2 kHz, 100 us .. 2 us, 5%, 1 s.
|
||||
s = {SETTINGS_VERSION, static_cast<uint8_t>(Role::SOLO),
|
||||
static_cast<uint8_t>(TestKind::OPTICAL), static_cast<uint8_t>(LightCode::HH),
|
||||
2, 6, 3, 2, 3, static_cast<uint8_t>(TestGroup::OPTICS),
|
||||
2, 4, 3, 2, 3, static_cast<uint8_t>(TestGroup::OPTICS),
|
||||
static_cast<uint8_t>(BoardTest::ADC), 0};
|
||||
s.checksum = settingsChecksum(s);
|
||||
}
|
||||
@@ -20,9 +20,9 @@ bool SettingsStore::valid(const Settings &s) const {
|
||||
return s.version == SETTINGS_VERSION && s.role <= static_cast<uint8_t>(Role::SLAVE) &&
|
||||
s.testGroup <= static_cast<uint8_t>(TestGroup::BOARD) &&
|
||||
s.boardTest <= static_cast<uint8_t>(BoardTest::RX_INPUT) &&
|
||||
s.testKind <= static_cast<uint8_t>(TestKind::DRIVER) &&
|
||||
s.testKind <= static_cast<uint8_t>(TestKind::PWM_OUTPUT) &&
|
||||
s.lightCode <= static_cast<uint8_t>(LightCode::LL) &&
|
||||
(s.testKind != static_cast<uint8_t>(TestKind::DRIVER) ||
|
||||
(s.testKind == static_cast<uint8_t>(TestKind::OPTICAL) ||
|
||||
s.role == static_cast<uint8_t>(Role::SOLO)) &&
|
||||
s.frequencyIndex < countOf(PWM_FREQUENCY_OPTIONS_HZ) &&
|
||||
s.maxPulseIndex < countOf(MAX_PULSE_OPTIONS_NS) &&
|
||||
|
||||
236
OpticalChannelTester/SignalProbe.cpp
Normal file
236
OpticalChannelTester/SignalProbe.cpp
Normal file
@@ -0,0 +1,236 @@
|
||||
#include "SignalProbe.h"
|
||||
#include "Config.h"
|
||||
#include <esp32-hal-cpu.h>
|
||||
|
||||
namespace {
|
||||
constexpr uint32_t DISPLAY_INTERVAL_MS = 250;
|
||||
constexpr uint8_t PERIOD_TOLERANCE_PCT = 10;
|
||||
|
||||
bool pwmPointAvailable(uint32_t frequencyHz, uint32_t pulseNs) {
|
||||
return static_cast<uint64_t>(frequencyHz) * pulseNs < 1000000000ULL;
|
||||
}
|
||||
|
||||
void formatWidth(uint64_t nanoseconds, char *out, size_t size) {
|
||||
if (nanoseconds < 1000ULL)
|
||||
snprintf(out, size, "%lluns", nanoseconds);
|
||||
else if (nanoseconds < 1000000ULL)
|
||||
snprintf(out, size, "%.2fus", nanoseconds / 1000.0);
|
||||
else
|
||||
snprintf(out, size, "%.2fms", nanoseconds / 1000000.0);
|
||||
}
|
||||
|
||||
void formatPulseCount(uint64_t count, char *out, size_t size) {
|
||||
if (count < 1000000ULL) snprintf(out, size, "%llu", count);
|
||||
else if (count < 1000000000ULL) snprintf(out, size, "%lluM", count / 1000000ULL);
|
||||
else snprintf(out, size, "%lluG", count / 1000000000ULL);
|
||||
}
|
||||
}
|
||||
|
||||
SignalProbe::SignalProbe() : startButton_(GPIO_BUTTON_START),
|
||||
modeButton_(GPIO_BUTTON_MODE) {}
|
||||
|
||||
void SignalProbe::begin() {
|
||||
Serial.begin(SERIAL_BAUD);
|
||||
#if ARDUINO_USB_CDC_ON_BOOT
|
||||
Serial.setTxTimeoutMs(SERIAL_TX_TIMEOUT_MS);
|
||||
#endif
|
||||
setCpuFrequencyMhz(160);
|
||||
startButton_.begin();
|
||||
modeButton_.begin();
|
||||
pwm_.begin();
|
||||
pwm_.configureActiveLight(true);
|
||||
display_.begin();
|
||||
receiverInitialized_ = receiver_.begin();
|
||||
rxReady_ = receiverInitialized_ && captureStart();
|
||||
applyPwm();
|
||||
Serial.printf("Signal probe: MODE short=frequency, MODE long=pulse, START short=reset RX minimum, START long=PWM on/off, hold both=RX active level; RX=%s\n",
|
||||
rxActiveHigh_ ? "HIGH" : "LOW");
|
||||
show();
|
||||
}
|
||||
|
||||
bool SignalProbe::captureStart() {
|
||||
if (!receiver_.startRaw()) {
|
||||
Serial.println("RX capture start failed");
|
||||
return false;
|
||||
}
|
||||
havePulseStart_ = false;
|
||||
havePulseEnd_ = false;
|
||||
extraEdgeInPeriod_ = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void SignalProbe::resetMinimum() {
|
||||
if (rxReady_) receiver_.stop();
|
||||
rxReady_ = receiverInitialized_ && captureStart();
|
||||
minTicks_ = UINT64_MAX;
|
||||
pulseCount_ = 0;
|
||||
edgeCount_ = 0;
|
||||
rejectedPeriods_ = 0;
|
||||
displayDirty_ = true;
|
||||
Serial.println("RX minimum reset");
|
||||
}
|
||||
|
||||
void SignalProbe::updateCapture() {
|
||||
if (!rxReady_) return;
|
||||
CaptureEvent edges[64];
|
||||
for (uint8_t batch = 0; batch < 8; ++batch) {
|
||||
const size_t count = receiver_.readRawEdges(edges, countOf(edges));
|
||||
if (!count) break;
|
||||
uint64_t batchMinimum = minTicks_;
|
||||
uint64_t batchPulses = 0;
|
||||
uint64_t batchRejected = 0;
|
||||
const bool activeRising = rxActiveHigh_;
|
||||
const uint32_t expectedHz = PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
|
||||
const uint64_t expectedPeriod = receiver_.tickHz() / expectedHz;
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
if (edges[i].rising == activeRising) {
|
||||
if (havePulseStart_) {
|
||||
const uint64_t period = edges[i].tick - pulseStartTick_;
|
||||
const uint64_t width = havePulseEnd_
|
||||
? pulseEndTick_ - pulseStartTick_ : 0;
|
||||
const uint64_t error = period > expectedPeriod
|
||||
? period - expectedPeriod : expectedPeriod - period;
|
||||
if (havePulseEnd_ && !extraEdgeInPeriod_ && period && width && width < period &&
|
||||
error * 100U <= expectedPeriod * PERIOD_TOLERANCE_PCT) {
|
||||
if (width < batchMinimum) batchMinimum = width;
|
||||
++batchPulses;
|
||||
} else {
|
||||
++batchRejected;
|
||||
}
|
||||
}
|
||||
pulseStartTick_ = edges[i].tick;
|
||||
havePulseStart_ = true;
|
||||
havePulseEnd_ = false;
|
||||
extraEdgeInPeriod_ = false;
|
||||
} else if (havePulseStart_ && !havePulseEnd_ &&
|
||||
edges[i].tick > pulseStartTick_) {
|
||||
pulseEndTick_ = edges[i].tick;
|
||||
havePulseEnd_ = true;
|
||||
} else if (havePulseStart_) {
|
||||
extraEdgeInPeriod_ = true;
|
||||
}
|
||||
}
|
||||
const uint32_t dropped = receiver_.takeDroppedItems();
|
||||
if (dropped) {
|
||||
Serial.printf("RX capture overflow: %lu edges lost; restarting capture\n", dropped);
|
||||
receiver_.stop();
|
||||
rxReady_ = captureStart();
|
||||
displayDirty_ = true;
|
||||
return;
|
||||
}
|
||||
edgeCount_ += count;
|
||||
pulseCount_ += batchPulses;
|
||||
rejectedPeriods_ += batchRejected;
|
||||
displayDirty_ = true;
|
||||
if (batchMinimum < minTicks_) {
|
||||
minTicks_ = batchMinimum;
|
||||
displayDirty_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SignalProbe::applyPwm() {
|
||||
pwm_.stop();
|
||||
if (!pwmEnabled_) {
|
||||
Serial.println("PWM off");
|
||||
displayDirty_ = true;
|
||||
return;
|
||||
}
|
||||
const uint32_t frequency = PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
|
||||
const uint32_t pulse = MAX_PULSE_OPTIONS_NS[pulseIndex_];
|
||||
if (!pwm_.start(frequency, pulse, actual_)) {
|
||||
Serial.printf("PWM start failed: %lu Hz, %lu ns\n", frequency, pulse);
|
||||
pwmEnabled_ = false;
|
||||
} else {
|
||||
Serial.printf("PWM GPIO=%u requested=%luHz/%luns actual=%luHz/%luns\n",
|
||||
GPIO_PWM, frequency, pulse, actual_.actualHz, actual_.actualPulseNs);
|
||||
}
|
||||
displayDirty_ = true;
|
||||
}
|
||||
|
||||
void SignalProbe::advanceFrequency() {
|
||||
const uint8_t count = static_cast<uint8_t>(countOf(PWM_FREQUENCY_OPTIONS_HZ));
|
||||
for (uint8_t step = 0; step < count; ++step) {
|
||||
frequencyIndex_ = static_cast<uint8_t>((frequencyIndex_ + 1U) % count);
|
||||
if (pwmPointAvailable(PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_],
|
||||
MAX_PULSE_OPTIONS_NS[pulseIndex_])) break;
|
||||
}
|
||||
applyPwm();
|
||||
resetMinimum();
|
||||
}
|
||||
|
||||
void SignalProbe::advancePulse() {
|
||||
const uint8_t count = static_cast<uint8_t>(countOf(MAX_PULSE_OPTIONS_NS));
|
||||
for (uint8_t step = 0; step < count; ++step) {
|
||||
pulseIndex_ = static_cast<uint8_t>((pulseIndex_ + 1U) % count);
|
||||
if (pwmPointAvailable(PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_],
|
||||
MAX_PULSE_OPTIONS_NS[pulseIndex_])) break;
|
||||
}
|
||||
applyPwm();
|
||||
resetMinimum();
|
||||
}
|
||||
|
||||
void SignalProbe::show() {
|
||||
char frequency[16], pulse[16], first[64], second[64];
|
||||
const uint32_t shownFrequency = pwm_.running() ? actual_.actualHz
|
||||
: PWM_FREQUENCY_OPTIONS_HZ[frequencyIndex_];
|
||||
const uint32_t shownPulse = pwm_.running() ? actual_.actualPulseNs
|
||||
: MAX_PULSE_OPTIONS_NS[pulseIndex_];
|
||||
Display::formatPwmFrequency(shownFrequency,
|
||||
frequency, sizeof(frequency));
|
||||
Display::formatPulse(shownPulse, pulse, sizeof(pulse));
|
||||
snprintf(first, sizeof(first), "PWM%s %s %s", pwmEnabled_ ? "" : " OFF",
|
||||
frequency, pulse);
|
||||
if (!rxReady_) {
|
||||
snprintf(second, sizeof(second), "RX: ERROR");
|
||||
} else if (minTicks_ == UINT64_MAX) {
|
||||
snprintf(second, sizeof(second), "RX E:%llu BAD:%llu", edgeCount_, rejectedPeriods_);
|
||||
} else {
|
||||
char width[24], count[12];
|
||||
const uint64_t nanoseconds =
|
||||
(minTicks_ * 1000000000ULL + receiver_.tickHz() / 2U) / receiver_.tickHz();
|
||||
formatWidth(nanoseconds, width, sizeof(width));
|
||||
formatPulseCount(pulseCount_, count, sizeof(count));
|
||||
snprintf(second, sizeof(second), "MIN:%s N:%s", width, count);
|
||||
Serial.printf("RX minimum=%lluns, periods=%llu, rejected=%llu, edges=%llu\n",
|
||||
nanoseconds, pulseCount_, rejectedPeriods_, edgeCount_);
|
||||
}
|
||||
display_.show(first, second, 0, 0, rxActiveHigh_ ? "H" : "L");
|
||||
lastDisplayMs_ = millis();
|
||||
displayDirty_ = false;
|
||||
}
|
||||
|
||||
void SignalProbe::update() {
|
||||
const uint32_t now = millis();
|
||||
const ButtonEvent start = startButton_.update(now);
|
||||
const ButtonEvent mode = modeButton_.update(now);
|
||||
if (startButton_.pressed() && modeButton_.pressed()) {
|
||||
if (!bothHeld_) {
|
||||
bothHeld_ = true;
|
||||
bothHeldSinceMs_ = now;
|
||||
startButton_.suppressUntilRelease();
|
||||
modeButton_.suppressUntilRelease();
|
||||
}
|
||||
if (!bothHeldHandled_ && now - bothHeldSinceMs_ >= BUTTON_LONG_PRESS_MS) {
|
||||
rxActiveHigh_ = !rxActiveHigh_;
|
||||
bothHeldHandled_ = true;
|
||||
resetMinimum();
|
||||
Serial.printf("RX active level=%s\n", rxActiveHigh_ ? "HIGH" : "LOW");
|
||||
}
|
||||
} else if (bothHeld_) {
|
||||
if (!startButton_.pressed() && !modeButton_.pressed()) {
|
||||
bothHeld_ = false;
|
||||
bothHeldHandled_ = false;
|
||||
}
|
||||
} else {
|
||||
if (mode == ButtonEvent::SHORT) advanceFrequency();
|
||||
else if (mode == ButtonEvent::LONG) advancePulse();
|
||||
if (start == ButtonEvent::SHORT) resetMinimum();
|
||||
else if (start == ButtonEvent::LONG) {
|
||||
pwmEnabled_ = !pwmEnabled_;
|
||||
applyPwm();
|
||||
}
|
||||
}
|
||||
updateCapture();
|
||||
if (displayDirty_ && now - lastDisplayMs_ >= DISPLAY_INTERVAL_MS) show();
|
||||
}
|
||||
49
OpticalChannelTester/SignalProbe.h
Normal file
49
OpticalChannelTester/SignalProbe.h
Normal file
@@ -0,0 +1,49 @@
|
||||
#pragma once
|
||||
|
||||
#include "Config.h"
|
||||
#include "Buttons.h"
|
||||
#include "Display.h"
|
||||
#include "Pwm.h"
|
||||
#include "Receiver.h"
|
||||
|
||||
class SignalProbe {
|
||||
public:
|
||||
SignalProbe();
|
||||
void begin();
|
||||
void update();
|
||||
|
||||
private:
|
||||
bool captureStart();
|
||||
void resetMinimum();
|
||||
void updateCapture();
|
||||
void advanceFrequency();
|
||||
void advancePulse();
|
||||
void applyPwm();
|
||||
void show();
|
||||
|
||||
Button startButton_, modeButton_;
|
||||
Display display_;
|
||||
PwmGenerator pwm_;
|
||||
PulseReceiver receiver_;
|
||||
ActualPwm actual_ = {};
|
||||
uint8_t frequencyIndex_ = 2;
|
||||
uint8_t pulseIndex_ = 0;
|
||||
bool pwmEnabled_ = true;
|
||||
bool rxActiveHigh_ = RX_LIGHT_ON_GPIO_LEVEL == HIGH;
|
||||
bool receiverInitialized_ = false;
|
||||
bool rxReady_ = false;
|
||||
bool havePulseStart_ = false;
|
||||
bool havePulseEnd_ = false;
|
||||
bool extraEdgeInPeriod_ = false;
|
||||
bool displayDirty_ = true;
|
||||
uint64_t pulseStartTick_ = 0;
|
||||
uint64_t pulseEndTick_ = 0;
|
||||
uint64_t minTicks_ = UINT64_MAX;
|
||||
uint64_t pulseCount_ = 0;
|
||||
uint64_t edgeCount_ = 0;
|
||||
uint64_t rejectedPeriods_ = 0;
|
||||
uint32_t lastDisplayMs_ = 0;
|
||||
uint32_t bothHeldSinceMs_ = 0;
|
||||
bool bothHeld_ = false;
|
||||
bool bothHeldHandled_ = false;
|
||||
};
|
||||
BIN
PCB/Libs/MSK12C02.PcbLib
Normal file
BIN
PCB/Libs/MSK12C02.PcbLib
Normal file
Binary file not shown.
BIN
PCB/Libs/MSK12C02.SchLib
Normal file
BIN
PCB/Libs/MSK12C02.SchLib
Normal file
Binary file not shown.
5352
PCB/Libs/MSK12C02.step
Normal file
5352
PCB/Libs/MSK12C02.step
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -38,23 +38,6 @@ PrefsVaultGUID=
|
||||
PrefsRevisionGUID=
|
||||
|
||||
[Document1]
|
||||
DocumentPath=..\..\..\..\SSSAlDataBaseLib\SssAccesDatbase.DbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document2]
|
||||
DocumentPath=Libs\Sensor Light.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -71,7 +54,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=XHSRCRCV
|
||||
|
||||
[Document3]
|
||||
[Document2]
|
||||
DocumentPath=Libs\ESP32-C3-SuperMini.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -86,9 +69,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=MKGCXBOF
|
||||
DocumentUniqueId=URAFKFNP
|
||||
|
||||
[Document4]
|
||||
[Document3]
|
||||
DocumentPath=Libs\ESP32-S3-SuperMini.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -103,9 +86,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=XJEJLSFH
|
||||
DocumentUniqueId=KNRSSPNM
|
||||
|
||||
[Document5]
|
||||
[Document4]
|
||||
DocumentPath=Libs\HFBR-1528Z_HFBR-2528Z.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -122,7 +105,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document6]
|
||||
[Document5]
|
||||
DocumentPath=OptoTest.PcbDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -139,7 +122,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=VJUIGDUR
|
||||
|
||||
[Document7]
|
||||
[Document6]
|
||||
DocumentPath=OptoTest.SchDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -156,7 +139,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=OSZVBCBN
|
||||
|
||||
[Document8]
|
||||
[Document7]
|
||||
DocumentPath=Libs\ESP32-C3-SuperMini.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -173,7 +156,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=SBGUKPNI
|
||||
|
||||
[Document9]
|
||||
[Document8]
|
||||
DocumentPath=Libs\ESP32-S3-SuperMini.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -190,7 +173,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=BAPDEFTM
|
||||
|
||||
[Document10]
|
||||
[Document9]
|
||||
DocumentPath=Libs\Switch Push Botton.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -207,7 +190,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document11]
|
||||
[Document10]
|
||||
DocumentPath=Libs\Switch Push Botton.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -224,7 +207,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=ITMPIRQI
|
||||
|
||||
[Document12]
|
||||
[Document11]
|
||||
DocumentPath=Libs\MOD_OLED_0.91_128x32.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -241,7 +224,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document13]
|
||||
[Document12]
|
||||
DocumentPath=Libs\MOD_OLED_0.91_128x32.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -258,7 +241,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=UNSXUFGW
|
||||
|
||||
[Document14]
|
||||
[Document13]
|
||||
DocumentPath=Libs\SN75451BP.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -273,9 +256,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=LJKXCWYK
|
||||
DocumentUniqueId=A8G5624N
|
||||
|
||||
[Document15]
|
||||
[Document14]
|
||||
DocumentPath=Libs\SN75451BP.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -292,7 +275,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document16]
|
||||
[Document15]
|
||||
DocumentPath=Libs\J_ARK2.Schlib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -307,9 +290,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=KHNXINHC
|
||||
DocumentUniqueId=HIEGOULK
|
||||
|
||||
[Document17]
|
||||
[Document16]
|
||||
DocumentPath=Libs\J_ARK2_2.54.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -326,7 +309,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document18]
|
||||
[Document17]
|
||||
DocumentPath=Libs\Sensor.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -343,7 +326,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=SCOMYVDB
|
||||
|
||||
[Document19]
|
||||
[Document18]
|
||||
DocumentPath=Libs\BPW34.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -360,7 +343,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=DEJBNXAE
|
||||
|
||||
[Document20]
|
||||
[Document19]
|
||||
DocumentPath=Libs\OPA380.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -377,7 +360,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=TPLFYPML
|
||||
|
||||
[Document21]
|
||||
[Document20]
|
||||
DocumentPath=Libs\OPA380.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -392,9 +375,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=A8G5624N
|
||||
DocumentUniqueId=MBMSOHVF
|
||||
|
||||
[Document22]
|
||||
[Document21]
|
||||
DocumentPath=Libs\J_ARK3_2.54.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -411,7 +394,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document23]
|
||||
[Document22]
|
||||
DocumentPath=Libs\J_ARK3.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -426,9 +409,9 @@ ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=HIEGOULK
|
||||
DocumentUniqueId=GMSJVYGO
|
||||
|
||||
[Document24]
|
||||
[Document23]
|
||||
DocumentPath=Libs\POT.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -445,7 +428,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=JKPGHLQK
|
||||
|
||||
[Document25]
|
||||
[Document24]
|
||||
DocumentPath=Libs\POT_RK09D1130C2P.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -462,7 +445,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document26]
|
||||
[Document25]
|
||||
DocumentPath=Libs\P_HEADER_1x5.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -479,7 +462,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=KQQWVKPH
|
||||
|
||||
[Document27]
|
||||
[Document26]
|
||||
DocumentPath=Libs\P_HEADER_1x5_2.54_ANGLE.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -496,7 +479,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document28]
|
||||
[Document27]
|
||||
DocumentPath=Libs\1208YD.PcbLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -513,7 +496,7 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document29]
|
||||
[Document28]
|
||||
DocumentPath=Libs\1208YD.SchLib
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
@@ -530,66 +513,6 @@ DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=GVWJKGKK
|
||||
|
||||
[GeneratedDocument1]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.DRR
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument2]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.EXTREP
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument3]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GBL
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument4]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GBO
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument5]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GBP
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument6]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GBS
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument7]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GKO
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument8]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GTL
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument9]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GTO
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument10]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GTP
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument11]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.GTS
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument12]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.LDP
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument13]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.REP
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument14]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.RUL
|
||||
DItemRevisionGUID=
|
||||
|
||||
[GeneratedDocument15]
|
||||
DocumentPath=Project Outputs for OptoTest\OptoTest.TXT
|
||||
DItemRevisionGUID=
|
||||
|
||||
[Configuration1]
|
||||
Name=Sources
|
||||
ParameterCount=0
|
||||
@@ -709,7 +632,7 @@ OutputDefault20=0
|
||||
[OutputGroup2]
|
||||
Name=Simulator Outputs
|
||||
Description=
|
||||
TargetPrinter=Microsoft Print to PDF
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
|
||||
[OutputGroup3]
|
||||
|
||||
Binary file not shown.
1
PCB_Charger
Submodule
1
PCB_Charger
Submodule
Submodule PCB_Charger added at adbb733cfb
BIN
PCB_Multiboard/OptoTest.MbaDoc
Normal file
BIN
PCB_Multiboard/OptoTest.MbaDoc
Normal file
Binary file not shown.
BIN
PCB_Multiboard/OptoTest.MbsDoc
Normal file
BIN
PCB_Multiboard/OptoTest.MbsDoc
Normal file
Binary file not shown.
1096
PCB_Multiboard/OptoTest.PrjMbd
Normal file
1096
PCB_Multiboard/OptoTest.PrjMbd
Normal file
@@ -0,0 +1,1096 @@
|
||||
[Design]
|
||||
Version=1.0
|
||||
HierarchyMode=0
|
||||
ChannelRoomNamingStyle=0
|
||||
ReleasesFolder=
|
||||
ChannelDesignatorFormatString=$Component_$RoomName
|
||||
ChannelRoomLevelSeperator=_
|
||||
OpenOutputs=1
|
||||
ArchiveProject=0
|
||||
TimestampOutput=0
|
||||
SeparateFolders=0
|
||||
TemplateLocationPath=
|
||||
PinSwapBy_Netlabel=1
|
||||
PinSwapBy_Pin=1
|
||||
AllowPortNetNames=0
|
||||
AllowSheetEntryNetNames=1
|
||||
AppendSheetNumberToLocalNets=0
|
||||
NetlistSinglePinNets=0
|
||||
DefaultConfiguration=Default - All Constraints
|
||||
UserID=0xFFFFFFFF
|
||||
DefaultPcbProtel=1
|
||||
DefaultPcbPcad=0
|
||||
ReorderDocumentsOnCompile=1
|
||||
NameNetsHierarchically=0
|
||||
PowerPortNamesTakePriority=0
|
||||
PushECOToAnnotationFile=1
|
||||
DItemRevisionGUID=
|
||||
ReportSuppressedErrorsInMessages=0
|
||||
FSMCodingStyle=eFMSDropDownList_OneProcess
|
||||
FSMEncodingStyle=eFMSDropDownList_OneHot
|
||||
OutputPath=
|
||||
LogFolderPath=
|
||||
ManagedProjectGUID=
|
||||
IncludeDesignInRelease=0
|
||||
|
||||
[Preferences]
|
||||
PrefsVaultGUID=
|
||||
PrefsRevisionGUID=
|
||||
|
||||
[Document1]
|
||||
DocumentPath=OptoTest.MbaDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=d82442d4-bc50-4074-9a5f-ab3433238eee
|
||||
|
||||
[Document2]
|
||||
DocumentPath=OptoTest.MbsDoc
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=8534167a-ea05-4508-a2d2-705219d53200
|
||||
|
||||
[Document3]
|
||||
DocumentPath=..\PCB\OptoTest.PrjPcb
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[Document4]
|
||||
DocumentPath=..\PCB_Charger\J5019_HW357.PrjPcb
|
||||
AnnotationEnabled=1
|
||||
AnnotateStartValue=1
|
||||
AnnotationIndexControlEnabled=0
|
||||
AnnotateSuffix=
|
||||
AnnotateScope=All
|
||||
AnnotateOrder=-1
|
||||
DoLibraryUpdate=1
|
||||
DoDatabaseUpdate=1
|
||||
ClassGenCCAutoEnabled=1
|
||||
ClassGenCCAutoRoomEnabled=1
|
||||
ClassGenNCAutoScope=None
|
||||
DItemRevisionGUID=
|
||||
GenerateClassCluster=0
|
||||
DocumentUniqueId=
|
||||
|
||||
[OutputGroup1]
|
||||
Name=Netlist Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=CadnetixNetlist
|
||||
OutputName1=Cadnetix Netlist
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
OutputType2=CalayNetlist
|
||||
OutputName2=Calay Netlist
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputDefault2=0
|
||||
OutputType3=EDIF
|
||||
OutputName3=EDIF for PCB
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputDefault3=0
|
||||
OutputType4=EESofNetlist
|
||||
OutputName4=EESof Netlist
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputDefault4=0
|
||||
OutputType5=IntergraphNetlist
|
||||
OutputName5=Intergraph Netlist
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=
|
||||
OutputDefault5=0
|
||||
OutputType6=MentorBoardStationNetlist
|
||||
OutputName6=Mentor BoardStation Netlist
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputDefault6=0
|
||||
OutputType7=MultiWire
|
||||
OutputName7=MultiWire
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputDefault7=0
|
||||
OutputType8=OrCadPCB2Netlist
|
||||
OutputName8=Orcad/PCB2 Netlist
|
||||
OutputDocumentPath8=
|
||||
OutputVariantName8=
|
||||
OutputDefault8=0
|
||||
OutputType9=PADSNetlist
|
||||
OutputName9=PADS ASCII Netlist
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
OutputType10=Pcad
|
||||
OutputName10=Pcad for PCB
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=
|
||||
OutputDefault10=0
|
||||
OutputType11=PCADNetlist
|
||||
OutputName11=PCAD Netlist
|
||||
OutputDocumentPath11=
|
||||
OutputVariantName11=
|
||||
OutputDefault11=0
|
||||
OutputType12=PCADnltNetlist
|
||||
OutputName12=PCADnlt Netlist
|
||||
OutputDocumentPath12=
|
||||
OutputVariantName12=
|
||||
OutputDefault12=0
|
||||
OutputType13=Protel2Netlist
|
||||
OutputName13=Protel2 Netlist
|
||||
OutputDocumentPath13=
|
||||
OutputVariantName13=
|
||||
OutputDefault13=0
|
||||
OutputType14=ProtelNetlist
|
||||
OutputName14=Protel
|
||||
OutputDocumentPath14=
|
||||
OutputVariantName14=
|
||||
OutputDefault14=0
|
||||
OutputType15=RacalNetlist
|
||||
OutputName15=Racal Netlist
|
||||
OutputDocumentPath15=
|
||||
OutputVariantName15=
|
||||
OutputDefault15=0
|
||||
OutputType16=RINFNetlist
|
||||
OutputName16=RINF Netlist
|
||||
OutputDocumentPath16=
|
||||
OutputVariantName16=
|
||||
OutputDefault16=0
|
||||
OutputType17=SciCardsNetlist
|
||||
OutputName17=SciCards Netlist
|
||||
OutputDocumentPath17=
|
||||
OutputVariantName17=
|
||||
OutputDefault17=0
|
||||
OutputType18=TangoNetlist
|
||||
OutputName18=Tango Netlist
|
||||
OutputDocumentPath18=
|
||||
OutputVariantName18=
|
||||
OutputDefault18=0
|
||||
OutputType19=TelesisNetlist
|
||||
OutputName19=Telesis Netlist
|
||||
OutputDocumentPath19=
|
||||
OutputVariantName19=
|
||||
OutputDefault19=0
|
||||
OutputType20=WireListNetlist
|
||||
OutputName20=WireList Netlist
|
||||
OutputDocumentPath20=
|
||||
OutputVariantName20=
|
||||
OutputDefault20=0
|
||||
|
||||
[OutputGroup2]
|
||||
Name=Simulator Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
|
||||
[OutputGroup3]
|
||||
Name=Documentation Outputs
|
||||
Description=
|
||||
TargetPrinter=Virtual Printer
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=Composite
|
||||
OutputName1=Composite Drawing
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType2=PCB 3D Print
|
||||
OutputName2=PCB 3D Print
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=[No Variations]
|
||||
OutputDefault2=0
|
||||
PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType3=PCB 3D Video
|
||||
OutputName3=PCB 3D Video
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=[No Variations]
|
||||
OutputDefault3=0
|
||||
PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType4=PCB Print
|
||||
OutputName4=PCB Prints
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputDefault4=0
|
||||
PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType5=PCBDrawing
|
||||
OutputName5=Draftsman
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=[No Variations]
|
||||
OutputDefault5=0
|
||||
PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType6=PCBLIB Print
|
||||
OutputName6=PCBLIB Prints
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputDefault6=0
|
||||
PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType7=PDF3D
|
||||
OutputName7=PDF3D
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=[No Variations]
|
||||
OutputDefault7=0
|
||||
PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType8=Report Print
|
||||
OutputName8=Report Prints
|
||||
OutputDocumentPath8=
|
||||
OutputVariantName8=
|
||||
OutputDefault8=0
|
||||
PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType9=Schematic Print
|
||||
OutputName9=Schematic Prints
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType10=SimView Print
|
||||
OutputName10=SimView Prints
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=
|
||||
OutputDefault10=0
|
||||
PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
|
||||
[OutputGroup4]
|
||||
Name=Assembly Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=Assembly
|
||||
OutputName1=Assembly Drawings
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=[No Variations]
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType2=Pick Place
|
||||
OutputName2=Generates pick and place files
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=[No Variations]
|
||||
OutputDefault2=0
|
||||
OutputType3=Test Points For Assembly
|
||||
OutputName3=Test Point Report
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=[No Variations]
|
||||
OutputDefault3=0
|
||||
|
||||
[OutputGroup5]
|
||||
Name=Fabrication Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=Board Stack Report
|
||||
OutputName1=Report Board Stack
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType2=CompositeDrill
|
||||
OutputName2=Composite Drill Drawing
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputDefault2=0
|
||||
PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType3=Drill
|
||||
OutputName3=Drill Drawing/Guides
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputDefault3=0
|
||||
PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType4=Final
|
||||
OutputName4=Final Artwork Prints
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=[No Variations]
|
||||
OutputDefault4=0
|
||||
PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType5=Gerber
|
||||
OutputName5=Gerber Files
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=[No Variations]
|
||||
OutputDefault5=0
|
||||
OutputType6=Gerber X2
|
||||
OutputName6=Gerber X2 Files
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputDefault6=0
|
||||
OutputType7=IPC2581
|
||||
OutputName7=IPC-2581 Files
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputDefault7=0
|
||||
OutputType8=Mask
|
||||
OutputName8=Solder/Paste Mask Prints
|
||||
OutputDocumentPath8=
|
||||
OutputVariantName8=
|
||||
OutputDefault8=0
|
||||
PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType9=NC Drill
|
||||
OutputName9=NC Drill Files
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
OutputType10=ODB
|
||||
OutputName10=ODB++ Files
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=[No Variations]
|
||||
OutputDefault10=0
|
||||
OutputType11=Plane
|
||||
OutputName11=Power-Plane Prints
|
||||
OutputDocumentPath11=
|
||||
OutputVariantName11=
|
||||
OutputDefault11=0
|
||||
PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType12=Test Points
|
||||
OutputName12=Test Point Report
|
||||
OutputDocumentPath12=
|
||||
OutputVariantName12=
|
||||
OutputDefault12=0
|
||||
|
||||
[OutputGroup6]
|
||||
Name=Report Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=BOM_PartType
|
||||
OutputName1=Bill of Materials
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=[No Variations]
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType2=ComponentCrossReference
|
||||
OutputName2=Component Cross Reference Report
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=[No Variations]
|
||||
OutputDefault2=0
|
||||
OutputType3=ReportHierarchy
|
||||
OutputName3=Report Project Hierarchy
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=[No Variations]
|
||||
OutputDefault3=0
|
||||
OutputType4=Script
|
||||
OutputName4=Script Output
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=[No Variations]
|
||||
OutputDefault4=0
|
||||
OutputType5=SimpleBOM
|
||||
OutputName5=Simple BOM
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=[No Variations]
|
||||
OutputDefault5=0
|
||||
OutputType6=SinglePinNetReporter
|
||||
OutputName6=Report Single Pin Nets
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=[No Variations]
|
||||
OutputDefault6=0
|
||||
|
||||
[OutputGroup7]
|
||||
Name=Other Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=Text Print
|
||||
OutputName1=Text Print
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType2=Text Print
|
||||
OutputName2=Text Print
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputDefault2=0
|
||||
PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType3=Text Print
|
||||
OutputName3=Text Print
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputDefault3=0
|
||||
PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType4=Text Print
|
||||
OutputName4=Text Print
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputDefault4=0
|
||||
PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType5=Text Print
|
||||
OutputName5=Text Print
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=
|
||||
OutputDefault5=0
|
||||
PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType6=Text Print
|
||||
OutputName6=Text Print
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputDefault6=0
|
||||
PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType7=Text Print
|
||||
OutputName7=Text Print
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputDefault7=0
|
||||
PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType8=Text Print
|
||||
OutputName8=Text Print
|
||||
OutputDocumentPath8=
|
||||
OutputVariantName8=
|
||||
OutputDefault8=0
|
||||
PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType9=Text Print
|
||||
OutputName9=Text Print
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType10=Text Print
|
||||
OutputName10=Text Print
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=
|
||||
OutputDefault10=0
|
||||
PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType11=Text Print
|
||||
OutputName11=Text Print
|
||||
OutputDocumentPath11=
|
||||
OutputVariantName11=
|
||||
OutputDefault11=0
|
||||
PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType12=Text Print
|
||||
OutputName12=Text Print
|
||||
OutputDocumentPath12=
|
||||
OutputVariantName12=
|
||||
OutputDefault12=0
|
||||
PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType13=Text Print
|
||||
OutputName13=Text Print
|
||||
OutputDocumentPath13=
|
||||
OutputVariantName13=
|
||||
OutputDefault13=0
|
||||
PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType14=Text Print
|
||||
OutputName14=Text Print
|
||||
OutputDocumentPath14=
|
||||
OutputVariantName14=
|
||||
OutputDefault14=0
|
||||
PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType15=Text Print
|
||||
OutputName15=Text Print
|
||||
OutputDocumentPath15=
|
||||
OutputVariantName15=
|
||||
OutputDefault15=0
|
||||
PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType16=Text Print
|
||||
OutputName16=Text Print
|
||||
OutputDocumentPath16=
|
||||
OutputVariantName16=
|
||||
OutputDefault16=0
|
||||
PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType17=Text Print
|
||||
OutputName17=Text Print
|
||||
OutputDocumentPath17=
|
||||
OutputVariantName17=
|
||||
OutputDefault17=0
|
||||
PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType18=Text Print
|
||||
OutputName18=Text Print
|
||||
OutputDocumentPath18=
|
||||
OutputVariantName18=
|
||||
OutputDefault18=0
|
||||
PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType19=Text Print
|
||||
OutputName19=Text Print
|
||||
OutputDocumentPath19=
|
||||
OutputVariantName19=
|
||||
OutputDefault19=0
|
||||
PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType20=Text Print
|
||||
OutputName20=Text Print
|
||||
OutputDocumentPath20=
|
||||
OutputVariantName20=
|
||||
OutputDefault20=0
|
||||
PageOptions20=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType21=Text Print
|
||||
OutputName21=Text Print
|
||||
OutputDocumentPath21=
|
||||
OutputVariantName21=
|
||||
OutputDefault21=0
|
||||
PageOptions21=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType22=Text Print
|
||||
OutputName22=Text Print
|
||||
OutputDocumentPath22=
|
||||
OutputVariantName22=
|
||||
OutputDefault22=0
|
||||
PageOptions22=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType23=Text Print
|
||||
OutputName23=Text Print
|
||||
OutputDocumentPath23=
|
||||
OutputVariantName23=
|
||||
OutputDefault23=0
|
||||
PageOptions23=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType24=Text Print
|
||||
OutputName24=Text Print
|
||||
OutputDocumentPath24=
|
||||
OutputVariantName24=
|
||||
OutputDefault24=0
|
||||
PageOptions24=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType25=Text Print
|
||||
OutputName25=Text Print
|
||||
OutputDocumentPath25=
|
||||
OutputVariantName25=
|
||||
OutputDefault25=0
|
||||
PageOptions25=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType26=Text Print
|
||||
OutputName26=Text Print
|
||||
OutputDocumentPath26=
|
||||
OutputVariantName26=
|
||||
OutputDefault26=0
|
||||
PageOptions26=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType27=Text Print
|
||||
OutputName27=Text Print
|
||||
OutputDocumentPath27=
|
||||
OutputVariantName27=
|
||||
OutputDefault27=0
|
||||
PageOptions27=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType28=Text Print
|
||||
OutputName28=Text Print
|
||||
OutputDocumentPath28=
|
||||
OutputVariantName28=
|
||||
OutputDefault28=0
|
||||
PageOptions28=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType29=Text Print
|
||||
OutputName29=Text Print
|
||||
OutputDocumentPath29=
|
||||
OutputVariantName29=
|
||||
OutputDefault29=0
|
||||
PageOptions29=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
|
||||
[OutputGroup8]
|
||||
Name=Validation Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=BOM_Violations
|
||||
OutputName1=BOM Checks Report
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
OutputType2=Component states check
|
||||
OutputName2=Server's components states check
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputDefault2=0
|
||||
OutputType3=Configuration compliance
|
||||
OutputName3=Environment configuration compliance check
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputDefault3=0
|
||||
OutputType4=Design Rules Check
|
||||
OutputName4=Design Rules Check
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=
|
||||
OutputDefault4=0
|
||||
PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType5=Differences Report
|
||||
OutputName5=Differences Report
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=
|
||||
OutputDefault5=0
|
||||
PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType6=Electrical Rules Check
|
||||
OutputName6=Electrical Rules Check
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=
|
||||
OutputDefault6=0
|
||||
PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
OutputType7=Footprint Comparison Report
|
||||
OutputName7=Footprint Comparison Report
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputDefault7=0
|
||||
|
||||
[OutputGroup9]
|
||||
Name=Export Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=AutoCAD dwg/dxf PCB
|
||||
OutputName1=AutoCAD dwg/dxf File PCB
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
OutputType2=AutoCAD dwg/dxf Schematic
|
||||
OutputName2=AutoCAD dwg/dxf File Schematic
|
||||
OutputDocumentPath2=
|
||||
OutputVariantName2=
|
||||
OutputDefault2=0
|
||||
OutputType3=ExportIDF
|
||||
OutputName3=Export IDF
|
||||
OutputDocumentPath3=
|
||||
OutputVariantName3=
|
||||
OutputDefault3=0
|
||||
OutputType4=ExportPARASOLID
|
||||
OutputName4=Export PARASOLID
|
||||
OutputDocumentPath4=
|
||||
OutputVariantName4=[No Variations]
|
||||
OutputDefault4=0
|
||||
OutputType5=ExportSTEP
|
||||
OutputName5=Export STEP
|
||||
OutputDocumentPath5=
|
||||
OutputVariantName5=[No Variations]
|
||||
OutputDefault5=0
|
||||
OutputType6=ExportVRML
|
||||
OutputName6=Export VRML
|
||||
OutputDocumentPath6=
|
||||
OutputVariantName6=[No Variations]
|
||||
OutputDefault6=0
|
||||
OutputType7=MBAExportPARASOLID
|
||||
OutputName7=Export PARASOLID
|
||||
OutputDocumentPath7=
|
||||
OutputVariantName7=
|
||||
OutputDefault7=0
|
||||
OutputType8=MBAExportSTEP
|
||||
OutputName8=Export STEP
|
||||
OutputDocumentPath8=
|
||||
OutputVariantName8=
|
||||
OutputDefault8=0
|
||||
OutputType9=Save As/Export PCB
|
||||
OutputName9=Save As/Export PCB
|
||||
OutputDocumentPath9=
|
||||
OutputVariantName9=
|
||||
OutputDefault9=0
|
||||
OutputType10=Save As/Export Schematic
|
||||
OutputName10=Save As/Export Schematic
|
||||
OutputDocumentPath10=
|
||||
OutputVariantName10=
|
||||
OutputDefault10=0
|
||||
OutputType11=Specctra Design PCB
|
||||
OutputName11=Specctra Design PCB
|
||||
OutputDocumentPath11=
|
||||
OutputVariantName11=
|
||||
OutputDefault11=0
|
||||
|
||||
[OutputGroup10]
|
||||
Name=PostProcess Outputs
|
||||
Description=
|
||||
TargetPrinter=Adobe PDF
|
||||
PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintJobKind=1|PrintWhat=1
|
||||
OutputType1=Copy Files
|
||||
OutputName1=Copy Files
|
||||
OutputDocumentPath1=
|
||||
OutputVariantName1=
|
||||
OutputDefault1=0
|
||||
|
||||
[Modification Levels]
|
||||
Type1=1
|
||||
Type2=1
|
||||
Type3=1
|
||||
Type4=1
|
||||
Type5=1
|
||||
Type6=1
|
||||
Type7=1
|
||||
Type8=1
|
||||
Type9=1
|
||||
Type10=1
|
||||
Type11=1
|
||||
Type12=1
|
||||
Type13=1
|
||||
Type14=1
|
||||
Type15=1
|
||||
Type16=1
|
||||
Type17=1
|
||||
Type18=1
|
||||
Type19=1
|
||||
Type20=1
|
||||
Type21=1
|
||||
Type22=1
|
||||
Type23=1
|
||||
Type24=1
|
||||
Type25=1
|
||||
Type26=1
|
||||
Type27=1
|
||||
Type28=1
|
||||
Type29=1
|
||||
Type30=1
|
||||
Type31=1
|
||||
Type32=1
|
||||
Type33=1
|
||||
Type34=1
|
||||
Type35=1
|
||||
Type36=1
|
||||
Type37=1
|
||||
Type38=1
|
||||
Type39=1
|
||||
Type40=1
|
||||
Type41=1
|
||||
Type42=1
|
||||
Type43=1
|
||||
Type44=1
|
||||
Type45=1
|
||||
Type46=1
|
||||
Type47=1
|
||||
Type48=1
|
||||
Type49=1
|
||||
Type50=1
|
||||
Type51=1
|
||||
Type52=1
|
||||
Type53=1
|
||||
Type54=1
|
||||
Type55=1
|
||||
Type56=1
|
||||
Type57=1
|
||||
Type58=1
|
||||
Type59=1
|
||||
Type60=1
|
||||
Type61=1
|
||||
Type62=1
|
||||
Type63=1
|
||||
Type64=1
|
||||
Type65=1
|
||||
Type66=1
|
||||
Type67=1
|
||||
Type68=1
|
||||
Type69=1
|
||||
Type70=1
|
||||
Type71=1
|
||||
Type72=1
|
||||
Type73=1
|
||||
Type74=1
|
||||
Type75=1
|
||||
Type76=1
|
||||
Type77=1
|
||||
Type78=1
|
||||
Type79=1
|
||||
Type80=1
|
||||
Type81=1
|
||||
Type82=1
|
||||
Type83=1
|
||||
Type84=1
|
||||
Type85=1
|
||||
Type86=1
|
||||
Type87=1
|
||||
Type88=1
|
||||
Type89=1
|
||||
Type90=1
|
||||
Type91=1
|
||||
Type92=1
|
||||
Type93=1
|
||||
Type94=1
|
||||
Type95=1
|
||||
Type96=1
|
||||
Type97=1
|
||||
Type98=1
|
||||
Type99=1
|
||||
Type100=1
|
||||
Type101=1
|
||||
Type102=1
|
||||
Type103=1
|
||||
Type104=1
|
||||
Type105=1
|
||||
Type106=1
|
||||
Type107=1
|
||||
Type108=1
|
||||
Type109=1
|
||||
Type110=1
|
||||
Type111=1
|
||||
Type112=1
|
||||
Type113=1
|
||||
Type114=1
|
||||
Type115=1
|
||||
Type116=1
|
||||
Type117=1
|
||||
|
||||
[Difference Levels]
|
||||
Type1=1
|
||||
Type2=1
|
||||
Type3=1
|
||||
Type4=1
|
||||
Type5=1
|
||||
Type6=1
|
||||
Type7=1
|
||||
Type8=1
|
||||
Type9=1
|
||||
Type10=1
|
||||
Type11=1
|
||||
Type12=1
|
||||
Type13=1
|
||||
Type14=1
|
||||
Type15=1
|
||||
Type16=1
|
||||
Type17=1
|
||||
Type18=1
|
||||
Type19=1
|
||||
Type20=1
|
||||
Type21=1
|
||||
Type22=1
|
||||
Type23=1
|
||||
Type24=1
|
||||
Type25=1
|
||||
Type26=1
|
||||
Type27=1
|
||||
Type28=1
|
||||
Type29=1
|
||||
Type30=1
|
||||
Type31=1
|
||||
Type32=1
|
||||
Type33=1
|
||||
Type34=1
|
||||
Type35=1
|
||||
Type36=1
|
||||
Type37=1
|
||||
Type38=1
|
||||
Type39=1
|
||||
Type40=1
|
||||
Type41=1
|
||||
Type42=1
|
||||
Type43=1
|
||||
Type44=1
|
||||
Type45=1
|
||||
Type46=1
|
||||
Type47=1
|
||||
Type48=1
|
||||
Type49=1
|
||||
Type50=1
|
||||
Type51=1
|
||||
Type52=1
|
||||
Type53=1
|
||||
Type54=1
|
||||
Type55=1
|
||||
Type56=1
|
||||
Type57=1
|
||||
Type58=1
|
||||
Type59=1
|
||||
Type60=1
|
||||
Type61=1
|
||||
Type62=1
|
||||
Type63=1
|
||||
Type64=1
|
||||
Type65=1
|
||||
Type66=1
|
||||
|
||||
[Electrical Rules Check]
|
||||
Type1=1
|
||||
Type2=1
|
||||
Type3=2
|
||||
Type4=1
|
||||
Type5=2
|
||||
Type6=2
|
||||
Type7=1
|
||||
Type8=1
|
||||
Type9=1
|
||||
Type10=1
|
||||
Type11=2
|
||||
Type12=2
|
||||
Type13=2
|
||||
Type14=1
|
||||
Type15=1
|
||||
Type16=1
|
||||
Type17=1
|
||||
Type18=1
|
||||
Type19=1
|
||||
Type20=1
|
||||
Type21=1
|
||||
Type22=1
|
||||
Type23=1
|
||||
Type24=1
|
||||
Type25=2
|
||||
Type26=2
|
||||
Type27=2
|
||||
Type28=1
|
||||
Type29=1
|
||||
Type30=1
|
||||
Type31=1
|
||||
Type32=2
|
||||
Type33=2
|
||||
Type34=2
|
||||
Type35=1
|
||||
Type36=2
|
||||
Type37=1
|
||||
Type38=2
|
||||
Type39=2
|
||||
Type40=2
|
||||
Type41=0
|
||||
Type42=2
|
||||
Type43=1
|
||||
Type44=1
|
||||
Type45=2
|
||||
Type46=1
|
||||
Type47=2
|
||||
Type48=2
|
||||
Type49=1
|
||||
Type50=2
|
||||
Type51=1
|
||||
Type52=1
|
||||
Type53=1
|
||||
Type54=1
|
||||
Type55=1
|
||||
Type56=2
|
||||
Type57=1
|
||||
Type58=1
|
||||
Type59=2
|
||||
Type60=1
|
||||
Type61=2
|
||||
Type62=2
|
||||
Type63=1
|
||||
Type64=0
|
||||
Type65=2
|
||||
Type66=3
|
||||
Type67=2
|
||||
Type68=2
|
||||
Type69=2
|
||||
Type70=2
|
||||
Type71=2
|
||||
Type72=2
|
||||
Type73=2
|
||||
Type74=1
|
||||
Type75=2
|
||||
Type76=1
|
||||
Type77=1
|
||||
Type78=1
|
||||
Type79=1
|
||||
Type80=2
|
||||
Type81=3
|
||||
Type82=3
|
||||
Type83=3
|
||||
Type84=3
|
||||
Type85=3
|
||||
Type86=2
|
||||
Type87=2
|
||||
Type88=2
|
||||
Type89=1
|
||||
Type90=1
|
||||
Type91=3
|
||||
Type92=3
|
||||
Type93=2
|
||||
Type94=2
|
||||
Type95=2
|
||||
Type96=2
|
||||
Type97=2
|
||||
Type98=0
|
||||
Type99=1
|
||||
Type100=2
|
||||
Type101=1
|
||||
Type102=2
|
||||
Type103=2
|
||||
Type104=1
|
||||
Type105=2
|
||||
Type106=2
|
||||
Type107=2
|
||||
Type108=2
|
||||
Type109=1
|
||||
Type110=1
|
||||
Type111=1
|
||||
Type112=1
|
||||
Type113=1
|
||||
Type114=2
|
||||
Type115=2
|
||||
Type116=2
|
||||
Type117=3
|
||||
Type118=3
|
||||
Type119=3
|
||||
MultiChannelAlternate=2
|
||||
AlternateItemFail=3
|
||||
Type122=2
|
||||
|
||||
[ERC Connection Matrix]
|
||||
L1=NNNNNNNNNNNWNNNWW
|
||||
L2=NNWNNNNWWWNWNWNWN
|
||||
L3=NWEENEEEENEWNEEWN
|
||||
L4=NNENNNWEENNWNENWN
|
||||
L5=NNNNNNNNNNNNNNNNN
|
||||
L6=NNENNNNEENNWNENWN
|
||||
L7=NNEWNNWEENNWNENWN
|
||||
L8=NWEENEENEEENNEENN
|
||||
L9=NWEENEEEENEWNEEWW
|
||||
L10=NWNNNNNENNEWNNEWN
|
||||
L11=NNENNNNEEENWNENWN
|
||||
L12=WWWWNWWNWWWNWWWNN
|
||||
L13=NNNNNNNNNNNWNNNWW
|
||||
L14=NWEENEEEENEWNEEWW
|
||||
L15=NNENNNNEEENWNENWW
|
||||
L16=WWWWNWWNWWWNWWWNW
|
||||
L17=WNNNNNNNWNNNWWWWN
|
||||
|
||||
[Annotate]
|
||||
SortOrder=3
|
||||
SortLocation=0
|
||||
MatchParameter1=Comment
|
||||
MatchStrictly1=1
|
||||
MatchParameter2=Library Reference
|
||||
MatchStrictly2=1
|
||||
PhysicalNamingFormat=$Component_$RoomName
|
||||
GlobalIndexSortOrder=3
|
||||
GlobalIndexSortLocation=0
|
||||
|
||||
[PrjClassGen]
|
||||
CompClassManualEnabled=0
|
||||
CompClassManualRoomEnabled=0
|
||||
NetClassAutoBusEnabled=1
|
||||
NetClassAutoCompEnabled=0
|
||||
NetClassAutoNamedHarnessEnabled=0
|
||||
NetClassManualEnabled=1
|
||||
NetClassSeparateForBusSections=0
|
||||
|
||||
[LibraryUpdateOptions]
|
||||
SelectedOnly=0
|
||||
UpdateVariants=1
|
||||
PartTypes=0
|
||||
FullReplace=1
|
||||
UpdateDesignatorLock=1
|
||||
UpdatePartIDLock=1
|
||||
PreserveParameterLocations=1
|
||||
PreserveParameterVisibility=1
|
||||
DoGraphics=1
|
||||
DoParameters=1
|
||||
DoModels=1
|
||||
AddParameters=0
|
||||
RemoveParameters=0
|
||||
AddModels=1
|
||||
RemoveModels=1
|
||||
UpdateCurrentModels=1
|
||||
|
||||
[DatabaseUpdateOptions]
|
||||
SelectedOnly=0
|
||||
UpdateVariants=1
|
||||
PartTypes=0
|
||||
|
||||
[Comparison Options]
|
||||
ComparisonOptions0=Kind=Net|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0
|
||||
ComparisonOptions1=Kind=Net Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0
|
||||
ComparisonOptions2=Kind=Component Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0
|
||||
ComparisonOptions3=Kind=Rule|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0
|
||||
ComparisonOptions4=Kind=Differential Pair|MinPercent=50|MinMatch=1|ShowMatch=0|Confirm=0|UseName=0|InclAllRules=0
|
||||
ComparisonOptions5=Kind=Structure Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0
|
||||
|
||||
[SmartPDF]
|
||||
PageOptions=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=A4|PaperIndex=9
|
||||
|
||||
4
PCB_Multiboard/OptoTest.PrjMbdStructure
Normal file
4
PCB_Multiboard/OptoTest.PrjMbdStructure
Normal file
@@ -0,0 +1,4 @@
|
||||
Record=DiagramHierarchy|SourceDocument=OptoTest.MbsDoc|Kind=Multi-board Schematic Module|Designator=1|Source=..\PCB\OptoTest.PrjPcb
|
||||
Record=SubProject|SourceDocument=OptoTest.MbsDoc|ProjectPath=..\PCB\OptoTest.PrjPcb
|
||||
Record=DiagramHierarchy|SourceDocument=OptoTest.MbsDoc|Kind=Multi-board Schematic Module|Designator=2|Source=..\PCB_Charger\J5019_HW357.PrjPcb
|
||||
Record=SubProject|SourceDocument=OptoTest.MbsDoc|ProjectPath=..\PCB_Charger\J5019_HW357.PrjPcb
|
||||
45
README.md
45
README.md
@@ -6,8 +6,8 @@
|
||||
|
||||
- неблокирующий конечный автомат без `pulseIn()` и длинных `delay()`;
|
||||
- общие для оптического и драйверного тестов частота PWM и диапазон импульсов;
|
||||
- четыре рабочих режима: `SOLO OPTICAL`, `SOLO DRIVER` (только S3),
|
||||
`MASTER OPTICAL`, `SLAVE OPTICAL`;
|
||||
- пять рабочих режимов: `SOLO OPTICAL`, `SOLO DRIVER` (только S3),
|
||||
`SOLO PWM`, `MASTER OPTICAL`, `SLAVE OPTICAL`;
|
||||
- настраиваемый для теста драйвера код `HH`, `HL`, `LH`, `LL`; в тесте
|
||||
оптики полярность входного сигнала определяется автоматически;
|
||||
- аппаратные LEDC (C3) и MCPWM (S3) с расчётом реально получившихся частоты и длительности импульса;
|
||||
@@ -40,7 +40,8 @@ Arduino sketch находится в каталоге `OpticalChannelTester`:
|
||||
- `Receiver.*` — MCPWM Capture на S3 / совместимый GPIO fallback;
|
||||
- `Measurement.*` — строгая проверка периодов;
|
||||
- `Protocol.*`, `Radio.*` — ESP-NOW;
|
||||
- `App.*` — общий конечный автомат SOLO/MASTER/SLAVE.
|
||||
- `App.*` — общий конечный автомат SOLO/MASTER/SLAVE;
|
||||
- `SignalProbe.*` — тестовый вариант прошивки PWM/Rx.
|
||||
|
||||
## Требования Arduino IDE
|
||||
|
||||
@@ -187,11 +188,17 @@ MASTER <~~~~ ESP-NOW Wi-Fi channel 6 ~~~~> SLAVE
|
||||
|
||||
В ожидании в группе `ОПТИКА` на S3:
|
||||
|
||||
- MODE short: `SOLO ОПТИКА → SOLO ДРАЙВЕР → MASTER ОПТИКА → SLAVE ОПТИКА`;
|
||||
- MODE short: `SOLO ОПТИКА → SOLO ДРАЙВЕР → SOLO ШИМ → MASTER ОПТИКА → SLAVE ОПТИКА`;
|
||||
- MODE long: открыть настройки;
|
||||
- START short: начать тест;
|
||||
- START long во время теста: ABORT, PWM немедленно выключается.
|
||||
|
||||
На C3 режим `SOLO ДРАЙВЕР` пропускается. В `SOLO ШИМ` выход непрерывно выдаёт
|
||||
выбранную частоту и длительность импульса без проверки Rx. Частота задаётся
|
||||
пунктом `ЧАСТОТА ШИМ`, длительность — пунктом `ИМПУЛЬС ШИМ` (общим с
|
||||
`МАКС. ИМПУЛЬС` остальных режимов). Удержание START или команда `stop` в
|
||||
Serial выключает выход.
|
||||
|
||||
В ожидании в группе `ПЛАТА`:
|
||||
|
||||
- MODE short для аналоговой платы: `АЦП ↔ ШИМ ВЫХОД`;
|
||||
@@ -256,6 +263,36 @@ START и MODE будят устройство. Первое, пробуждаю
|
||||
5. время выборки.
|
||||
6. код света `HH`, `HL`, `LH`, `LL` — только для теста драйвера.
|
||||
|
||||
В `SOLO ШИМ` меню показывает только частоту и длительность одного импульса.
|
||||
|
||||
### Тестовая прошивка PWM/Rx
|
||||
|
||||
Для отдельной проверки сигнала раскомментируйте `#define SIGNAL_PROBE_FIRMWARE`
|
||||
в `OpticalChannelTester/Config.h` и загрузите тот же скетч. Эта прошивка
|
||||
при включённом выходе выдаёт выбранный PWM на `GPIO_PWM` и независимо измеряет на
|
||||
`GPIO_RX` минимальную длительность активного импульса и число пойманных
|
||||
импульсов. Начальный активный уровень входа задаёт `RX_LIGHT_ON_GPIO_LEVEL`.
|
||||
Результат показывается на OLED и в Serial
|
||||
115200; при отсутствии OLED достаточно Serial.
|
||||
|
||||
- MODE коротко: следующая частота из `PWM_FREQUENCY_OPTIONS_HZ`;
|
||||
- MODE удержать: следующая длительность из `MAX_PULSE_OPTIONS_NS`;
|
||||
- START коротко: сбросить найденный минимум и начать измерение заново;
|
||||
- START удержать: выключить или включить PWM;
|
||||
- START и MODE удержать вместе: переключить активный уровень Rx между HIGH и
|
||||
LOW и сбросить накопленные измерения.
|
||||
|
||||
Верхняя строка OLED показывает частоту и длительность импульса PWM; `OFF`
|
||||
означает выключенный выход. Буква `H` или `L` справа показывает текущий
|
||||
активный уровень Rx. Нижняя строка показывает минимум и число пойманных
|
||||
импульсов.
|
||||
|
||||
Значения, при которых импульс не помещается в период, пропускаются. В статистику
|
||||
Rx попадают только полные периоды выбранной частоты; число фронтов и отброшенных
|
||||
периодов видно на экране, пока подходящие импульсы не найдены. Изменение PWM
|
||||
сбрасывает накопленные измерения. Для возврата к обычному тестеру закомментируйте
|
||||
`SIGNAL_PROBE_FIRMWARE` и загрузите скетч снова.
|
||||
|
||||
Экран активного уровня:
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user