GyverLibs icon indicating copy to clipboard operation
GyverLibs copied to clipboard

джиттер в timerX_setPeriod

Open Nick507 opened this issue 5 years ago • 0 comments

При установке нового значения периода, не учитывается текущее значение TCNTx. Таким образом в момент смены периода возможно получить импульс произвольной длительности. Критично например при управлении ШД - при разгоне будет срыв шагов. Фикс предлагается например такой: while(TCNT5 > (_timer5_top / 2)); ICR5 = _timer5_top - 1; возможно есть решение получше UPD: возможно проблема не в этом, а в не атомарном апдейте ICR регистра, надо покурить даташит. UPD2: Accessing 16-bit Registers: для записи 16 битных регистров используется временный регистр, который шарится между всеми таймерами, поэтому настоятельно рекомендуется запрещать прерывания на момент апдйта ICRx

Nick507 avatar Dec 09 '20 07:12 Nick507