Автомобили, топлинни машини, алтернативни горива > Запалителни системи
Запалителни системи с управление на предварението
valex:
juliang
По принцип става и по твоя начин. Това за вкарването на времето за изпълнение на кода в сметките не е много удачно. Правил съм го, не е удобно. По лесно е кокато влезеш в прекъсваме веднага да си инициализираш нещата на таймерите и после да си прави каквото искаш с кода вътре. Така, че таймерите си продължават да вървят и времето на изпълнение на кода няма значение.
C- то е по-удобно за работа ако имаш доста код и сметки да пишеш. Аз когато ми трябва точност пиша на PASCAL и асемблер. Там се знае абсулютно точно какво става с процесора.
juliang:
По-лесно - да, но само виждаш че не ти стигат таймерите.
А за С, или който и да е друг език от високо ниво... трудно ще си сигурен колко точно процесорни такта ще заеме един твой ред след компилирането. Понякога става с 1 инструкция, понякога стават 2-3, че и повече ... и когато трябва да комуникираш с друго устройство където всички ти е разчетено до микросекунда... нещата загрубяват зверски.
Ламбда контрола дет го правих... сложих един китайски дисплей (то па все едно има други :) ) дето се сърди ако не задържиш фронта на сигнала точно еди-колко-си микросекунди, или времето между два знака не е точно еди-колко-си мкс. Играл съм си с NOP-чета едно по едно докато успея да изградя стабилна комуникация. И при всяка промяна в кода трябваше да променям закъсненията така че да не излизам от точно 238-те (примерно) процесорни такта между предаването на 2 знака...
А да ползвам прекъсване и таймер за това ... ставаше още по-зле. И без това не ми стигаше време да си сметна всичките сметки, остава да губя по 2 такта за влизане и 2 такта за излизане от прекъсването, евакуацията на регистрите - отделно...
valex:
Не съм попадал на толкова капризен дисплей.
А езика си е въпрос на вкус :)
Зависи какво имаш да правиш като задание.
koko5:
valex,
относно времената, и аз си мислех така, преди да ми дадеш алгоритъма. Важно е да се отчете и промяната на ускрението. Защото ако сравняваме само намаляването на времената(нарастването на скоростта), няма да знаем в следващия период дали нарастването ще се е увеличило или не. Затова най добре да си остане алгоритъма(усещам че искаш да спестиш малко време, ама няма как да стане точно от тук).
juliang,
Идеята ми харесва :) наистина се спестява единия таймер. Но има и едно условие - да работим само с предварение.
Все пак ако се доразвие...
1 вариант: ще трябва още веднъж да се спре таймера - за започване на зареждането
2. вариант: зареждането ще повтаря входа(така при аванс ще ядм времето на бобината)
3. вариант: пускаме другия таймер да "тича" за да измерва и дава предварение на зареждането
А относно "силовата страна на решението" - ако решиш да се бориш и с ТАПовете - ползвай моята схема(има я в началото на темата). Пробвана е, работи... но условието е в пика да е записано изход=вход - тоест софта ми куца. Така съм карал колата няколко дни.
valex:
Току що пуснах на тест аванспроцесора на Румен. Държи се много добре по обороти. Но променя времето на заряд на бобината. Зададено е твърдо на около 5mS. Така, че той не мери ширина на импулса. Като при високи обороти естествено се скъсява заради намаляне на времето за оборот.
Навигация
[0] Списък на темите
Премини на пълна версия