andy8mm Пост: 297408 От 26.Mar.2011 (15:33) ДедИван, да, пора наступить на мк-грабли.
Надеюсь подключатся спецы по контроллерам, живее будет и всем интереснее.
Давайте отделим котлеты от мух.
По контроллеру все сюда.
Вот первое столкновение с реальностью. Обработка реального сигнала должна включать в себя защиту от помех.
Проскакивает иголочка от проехавшего мимо старого разбитого рыдвана у которого все массы давно от кузова оторжавели.
А твоя программа запускается.
Именно для твоего алгоритма - это сбой фазы зажигания.
Надо програмно фильтровать критические сигналы. Ну хотябы в течении 10 мксек. На работу движка эта задержка не скажется
а 99 процентов помех срежет. А все помехи что ниже по частоте - уберешь уже аппаратно- экранами , заземлением и прочее.
Как это будет потом работать в реале - я не знаю, потому что так никто не делает.
Все хотят иметь алгоритм изначально некритичный к помехе.
Как защита от спида работает? Заматывают сначала изолентой, потом презерватив, сверху колючая проволока - и никаких сношений.
А поскольку эта задачка встречается часто- нужно иметь под рукой макрос.
Не подпрограмма- переходы во время действия помехи чреваты.
Спасибо ДедаВаня за подсказки. Примерно суть подсказки понятна, но хотелось-бы кое-что уточнить:
1. Где эти 10 мксек расположены на временной диаграме ? После пачки ? Или во время пачки ? Ведь пока идёт пачка, таймер выдаёт имп-сы апаратно.
2. Эта защита от ложного прихода прерывания ДХ ? Если да, то сам-же вроде говорил, что помеха ниже 9 В (питание ДХ) нам не страшна.
Можем на время пачки и после неё 5...10 мксек запретить INT0, но стрёмно, можем пропустить нужный сигнал, по времени оборота ... По предыдущему обороту вычислять пачку, как ты и говорил ранее, и тогда разрешать INT0 ?
dedivan Пост: 408552 От 26.Jan.2013 (14:31)
Да, куча вариантов и все имеют место быть.
А защита прямо в прерывании- смотреть не пропал ли сигнал а только потом в работу бросаться.
Спасибо dedivan , - доработаем
andy8mm Пост: 408708 От 28.Jan.2013 (21:53) JohnZ, по длительности сигнала от ДХ можно обороты посчитать?
Теоретически можно, кАнЭшна, но вотЪ прктчс-ски надо ли ? Мы более точно можем их посчитать по времени между 2-мя (а с накоплением и более) прерываниями ! Правда реализовать это на асм-е, не так-то просто ... Ещё пару "хотелок", и надо будет брать 45-ю или 85-ю тиньку вместо 25-й
На каждую пару горшков - отдельный канал- самое выгодное решение.
Это уже общемировая практика.
Это порядка десяти разных положительных пунктов.
Все их тут в теме так или иначе по одному уже рассмотрели.
dedivan Пост: 408826 От 30.Jan.2013 (09:41)
На каждую пару горшков - отдельный канал- самое выгодное решение.
Это уже общемировая практика.
Это порядка десяти разных положительных пунктов.
Все их тут в теме так или иначе по одному уже рассмотрели.
У моего знакомого на авто (Мазда) на каждый цилиндр по катушке (шесть штук).
Но, я больше имел ввиду и по своему оптическому датчику на цилиндр и энкодер с окнами 30 и более градусов, чтобы катушка "строчила" импульсы без контроллера УОЗ пока смесь вся не сгорит.
P,S. Выглядят у них катушки специфически и стоят , даже бу 60у.е. к тому же и[ссылка]
Да и надёжность - "...После недолгих раздумий и консультаций с знакомым с сервиса ОД было решено менять катушку зажигания.
Оказывается периодический и не прогнозируемый выход из строя катушек зажигания — конструктивная болезнь. Катушка сверху залита термолаком, который закрывает всю электронику катушки. Этот термолак имеет свойство со временем и порой просто при резких перепадах температур и повышенной влажности трескаться, в результате чего влага попадает внутрь и катушка умирает. Такая же болезнь и у катушек на MPV, только у них почему то это происходит значительно чаще, чем на MAZDA 6."
_________________ Владимир \"2 процента людей — думает, 3 процента — думает, что они думают, а 95 процентов людей лучше умрут, чем будут думать\"
В прицепе следующая версия прошивки - 2.45, по просьбе искрящих
Пришлось малость переделать. Пока ждём 1-й цилиндр, необработанный INT0 "зависал", и затем не вовремя вылазил. Добавил - при старте опрос ДХ 1-го цилиндра и ожидание противоположного сост-я. Т.е. можно вцепить _любой_ датчик, либо 1->0 либо 0->1 - сработает и так и так
В следующей версии покумекаем про "сбой фазы зажигания".
Если есть вопросы - задавайте.
Кстати- чего то прям свалилось с неба.
Как раз позавчера скопипастил кусок программы и вставил в новую-
две ночи не спал- ну не работает, что ты хошь.
Прищлось специальный отладчик написать- вот теперь в недоумении.
Как такое могло быть- при копировании код 0В заменился на 08 ,
и главное с первого взгляда даже и незаметно.
Чудеса.
dedivan Пост: 410638 От 18.Feb.2013 (21:56)
Кстати- чего то прям свалилось с неба.
Как раз позавчера скопипастил кусок программы и вставил в новую-
две ночи не спал- ну не работает, что ты хошь.
Прищлось специальный отладчик написать- вот теперь в недоумении.
Как такое могло быть- при копировании код 0В заменился на 08 ,
и главное с первого взгляда даже и незаметно.
Чудеса.
Это еще не все чудеса. Если у тебя винда ХР, открой блокнот и напиши: Bush hides the facts
по нашему - Буш скрывает факты.
сохрани и закрой файл. потом открой опять же блокнотом, и посмотри.
dedivan Пост: 410638 От 18.Feb.2013 (21:56)
Кстати- чего то прям свалилось с неба.
Как раз позавчера скопипастил кусок программы и вставил в новую-
две ночи не спал- ну не работает, что ты хошь.
Прищлось специальный отладчик написать- вот теперь в недоумении.
Как такое могло быть- при копировании код 0В заменился на 08 ,
и главное с первого взгляда даже и незаметно.
Чудеса.
"свалилось с неба" - НеБо - НЕТ Бо... вот тебе и объяснение Бес попутал, вот и не спал 2 ночи
А про "написанный" отладчик можно поподробнее ? А исходник ?
Дело в том, что в AVR-студии та-же шняга, - не показыват запуск TIMER1 Если выбрать эмулятор 2 (в настройках) тогда показывает, но у него тоже свои приколы, похлеще первого. У меня версия студии 4.19.
Может есть другой отладчик, для AVR-ок ? Народ, подскажите ! Аууууу !
Исходник в каждом случае вряд ли поможет- важен сам принцип.
Если есть индикация , то ставишь точку перехода на подпрограмму
записи любых нужных тебе регистров в регистр откуда индикация читается.