mikeymause
стенд очень много чего показывает, чего не увидишь и не поймешь... что с мотором не так. и хочешь еще лучше.
Последняя рабочая , это когда решили проблему "без отдачи". А потом уже перешли на две метки... пока "кривые".

...........................
Переписал еще один "кусок".
Было
noiskr:
sub R25,R23 ;"табл."-"метка"
;далее расчет на "запаздывание",второй имп.дат.
mov R5,R9 ;сохраним регистры
mov R6,R10 ;счетчика
rcall matematika;R5R6*R25=R7R8
add R8,R12
adc R7,R11 ;+счт.длина метки
Это неправильно!! Здесь мы берем расчитанный оборот по первой метке (неправильный) и вычисляем задержку по R25-R23. И потом эту задержку добавляем к правильной величине R11R12.
Переписал так.
noiskr: ;иначе счет
;далее расчет на "запаздывание",второй имп.дат.
mov R5,R11 ;сохраним регистры
mov R6,R12 ;счетчика
rcall matematika;R5R6*R25=R7R8
add R8,R12
adc R7,R11 ;+счт.длина метки
Просто. Берем оборот/14.4 25 градусов (от первой до второй метки) , вычисляем задержку по задержке из таблицы R25 и просто плюсуем ее к R11R12 (от первой метки до второй). Просто и понятно.
Скоро дойдет до того что от R23 в подпрограмме второй метки останутся рожки да ножки.
Далее .. нужно проверить (на стенде!!!), нужно ли..
cp R25,R23 ;если равны
brne noiskr
rjmp iskra ;искра без задержки
Флэш, лучше бы помог умножить на 14.4 (дробное). Я не бумбум. В проге пишу по шаблонам из интернета. Такой никак не найду. Число умножить на дробное.
mov R21, R11 ;скопируем значение счетчика 16-бит
com R21 ;инвертируем число
ldi R16,14.4
ПС. Флэш. Если знаете как сделать по другому.... Да, наверно есть, но это будет совсем другая программа.
Пока идем по тому что есть, и просто.
Еще раз!! Задача - "заводка" по второй метке меня не интересует.
Задача - работа на хх и чуть выше , по второй метке из расчета скорости движения маховика (т.е. оборотов) от первой до второй метки. Тут же и решается проблема "заводки".
Вы пишете и сами себе противоречите. Что при пуске скорость маховика неравномерная, соответственно и расчитанный оборот неправильный по первой метке.
То что умножив на 14 или 14.4 погрешность. Да есть. Но используем это только на оборотах до 1200-1300. И уж погрешность будет намного меньше , чем измеряя оборот по первой метке, когда мотор дергается и работает рывками и т.п. А от величины оборота мы берем из таблицы число задержки уоз ..
Ищу как умножить на 14.4. Все варианты программ в отдельных папках. Так что сравнивать потом реально на моторе , нет проблем.
ПС2. И зачем мне тогда второй импульс, если с него толку ... только "заводить".