"Бит ADSC (6) регистра ADCSRA запускает преобразование если в него записать 1 (для многоразового режима запуск первого преобразования).
Т.е. то что уже сделал этот?
adc_complete:
in R14, ADCL
in R14, ADCH
lsr R14 ;1/2=128
lsr R14 ;1/2=64
lsr R14 ;1/2=32
ori R20, 0b00000010;sbiR20/1,АЦП,контроль
reti
Т.е (по русски) sbi ADCSRA,6 запускает считывание с R14 , величину которая есть в данный момент.
ОК. вернем программу к "истокам".
; уберем, ..из импульса удалим. (Файл вложен)
0.97??. Я уже не помню. Пользую 24, которую выложил. Что я там изменил , не помню. (Можешь проверить. ) Откуда, и есть ли у меня в компе 0.97 не знаю, поищу? (нашел 0.981)
С преемственностью, т.е. с логикой плохо. Скачете по регистрам... Да и взяли бы и "потерли" ваши посты в теме. Если сейчас зайти и читать с первого поста, то крышу снесет ....
ПС. Там где меня учили.., потом самых умных забирали на Южмаш.
Ну если и логика и математика в сумме.
п.1. Если с логикой плохо, то ракеты улетают в Антарктиду.
--"Ну а п. 4,5,6 не для мото.".---Ну да. 2х2=4 это аксиома
,но не всегда правдиво как конечный результат. Это не неправильно, а в данный момент может быть неверным, Потому как мы не знаем в (Х х У=4) .. величин Х и Y. А "корабль" должен держать курс на цель
, согласно Теории автоматического регулирования.
Добавлено after 2 hours 22 minutes 1 second:Насчет R9R10=FFFF при пуске. (Вариант 1.0) Постараюсь подробно и внятно. Почему еще не пришел к окончательному варианту, что записывать в R9R10?
Например. У меня 30град. Пишем 500об=5град.
Так вот. 5град УОЗ будет при чуть менее 600об. Чем далее ниже обороты, тем угол увеличивается. И при 400об УОЗ будет около 8-9град.
Что это значит. Что при пуске в любом случае 8-9градусов и еще больше!!! (Ну и зависит с какой силой в тапку). Т.е. чем легче в тапку, тем УОЗ больше. Очень не логично.
При том , что все эти 500-600-700 об в графике нужны только при пуске. Дальше они никому не нужны.
Исходя из вышесказанного. Какое число записывать в R9R10? Это число только при пуске, когда еще нет полного оборота (вычисления истинного оборота). А какой сейчас реальный полу-оборот при пуске? Записывать FFFF или EA60=500об или С350=600об? Я не математик. Проверим на практике , на стенде.
Это то , чего хотел Альтиум при пуске своей тяжелой Ямахи.
Что делать?
Ввести в график и в таблицу конкретные точки оборотов 500=21, 460=2. Ну ...жертвуя другими Их же всего 32.
Попробуем. Получится опубликуем.
PC. Поменял. И в asm и "картинку" в 24.ех. Теперь у нас крайние обороты 500. И 460 для всех, что ниже 500. Пожертвовал оборотами 700.
asm и 24 в архиве 241. Посмотрим на стенде, что получилось.
PC2. Протестил. Так лучше.
Осталось.. нужно убрать АЦП ниже 800. Не нажно .. случайно "крутнув" резистор и "получить" от мотора.
PC3. Закончил с версией 1.0. Все что возможно сделал. "Подпаял" платы и упаковал. Все.
Начал исследовать версию 2.1.
Преимущества!!! На малых оборотах работает по метке. Значит вычисление величины оборота правильнее, чем по одному импульсу. Что важно при пуске, и на малых оборотах, когда мотор работает неравномерно.
И самое главное преимущество. УОЗ не уходит вперед на оборотах ниже 500 (как в версии 1.0). Тестил до 350об. Угол такой же как в таблице при 460об. А это значит ... можно поиметь легкий пуск мотора без отдачи.
Осталось отшлифовать 2.1 поиском глюков, дописать в нее порты и свои плюшки.
- Вложения
-
- 241.zip
- (405.37 KiB) Скачиваний: 245
-
- CDI.asm
- (18.81 KiB) Скачиваний: 226