Глобальная переделка. тест сделан по длине импульса и заданной частоте шим, а не меандру
This commit is contained in:
@@ -15,26 +15,27 @@ const char *failName(FailReason reason);
|
||||
struct Settings {
|
||||
uint16_t version;
|
||||
uint8_t role;
|
||||
uint8_t startIndex;
|
||||
uint8_t endIndex;
|
||||
uint8_t frequencyIndex;
|
||||
uint8_t maxPulseIndex;
|
||||
uint8_t minPulseIndex;
|
||||
uint8_t accuracyIndex;
|
||||
uint8_t timeIndex;
|
||||
uint8_t reserved;
|
||||
uint32_t checksum;
|
||||
};
|
||||
|
||||
struct TestParams {
|
||||
uint32_t startHz;
|
||||
uint32_t endHz;
|
||||
uint32_t frequencyHz;
|
||||
uint32_t maxPulseNs;
|
||||
uint32_t minPulseNs;
|
||||
float accuracyPct;
|
||||
uint32_t testTimeMs;
|
||||
uint8_t dutyPct;
|
||||
};
|
||||
|
||||
struct PulsePeriod {
|
||||
uint64_t startTick;
|
||||
uint32_t periodTicks;
|
||||
uint32_t activeTicks;
|
||||
uint32_t activeTickHz;
|
||||
};
|
||||
|
||||
struct StageStats {
|
||||
@@ -63,13 +64,15 @@ struct PeriodLimits {
|
||||
|
||||
struct IntegerPwmConfig {
|
||||
uint32_t actualHz;
|
||||
uint16_t divider;
|
||||
uint32_t dividerRaw;
|
||||
uint32_t dutyCount;
|
||||
uint32_t actualPulseNs;
|
||||
uint8_t bits;
|
||||
};
|
||||
|
||||
uint32_t settingsChecksum(const Settings &s);
|
||||
uint32_t frequencyPointCount(uint32_t startHz, uint32_t endHz);
|
||||
uint32_t frequencyAt(uint32_t startHz, uint32_t endHz, uint32_t index);
|
||||
uint32_t pulseWidthPointCount(uint32_t maxPulseNs, uint32_t minPulseNs);
|
||||
uint32_t pulseWidthAt(uint32_t maxPulseNs, uint32_t minPulseNs, uint32_t index);
|
||||
uint64_t nominalStageUs(uint32_t frequencyHz, uint32_t sampleTimeMs, uint32_t settleCycles);
|
||||
uint64_t nominalTotalUs(const TestParams &p, uint32_t settleCycles);
|
||||
bool periodWithin(float measuredHz, float expectedHz, float tolerancePct);
|
||||
@@ -79,11 +82,12 @@ uint8_t choosePwmResolution(uint32_t frequencyHz, uint32_t sourceClockHz,
|
||||
uint8_t maxBits);
|
||||
uint8_t chooseStablePwmResolution(uint32_t frequencyHz, uint32_t sourceClockHz,
|
||||
uint8_t maxBits, uint8_t dutyPct);
|
||||
bool chooseIntegerPwmConfig(uint32_t requestedHz, uint32_t sourceClockHz,
|
||||
uint8_t maxBits, uint8_t dutyPct,
|
||||
bool choosePwmConfig(uint32_t requestedHz, uint32_t requestedPulseNs,
|
||||
uint32_t sourceClockHz, uint8_t maxBits,
|
||||
IntegerPwmConfig &config);
|
||||
FailReason validateResolution(uint32_t frequencyHz, float dutyPct, float accuracyPct,
|
||||
uint32_t captureResolutionHz, uint8_t pwmBits,
|
||||
uint32_t periodResolutionHz, uint32_t pulseResolutionHz,
|
||||
uint8_t pwmBits,
|
||||
uint16_t averagingPeriods);
|
||||
FailReason evaluatePeriod(const PulsePeriod &period, uint32_t tickHz, float expectedHz,
|
||||
float expectedDuty, float tolerancePct, uint8_t repeat,
|
||||
|
||||
Reference in New Issue
Block a user