yoric 0 August 22 Posted August 22 (edited) · Report post Здравия! Подскажите пож-ста. Это программа управления УОЗ ДВС (угол опережения зажигания мотора). Два датчика через 180° выдают при вращении узкие импульсы (скважность 50). Соответственно в зависимости от оборотов (периода) вычисляется задержка по выходам. От неё вычисляется время ожидания и время накопления энергии в бобине. В симуляторах SimulIDE && gpsim всё работает. В железе пропадают вых. импульсы на среднем участке (там где вычисления), не стартует TMR0 (на некоторых участках внутри этого всё-таки стартует). TMR1 измеряет период вращения, TMR0 откладывает задержку. pic-uoz-032-ton2.asm Так вот подозрения, что почему-то иногда не стартует TMR0 (TMRA). уже я его и так и этак инициализирую, но без толку. Гляньте пож-ста. Edited August 22 by yoric Quote Share this post Link to post Share on other sites More sharing options...
Plain 206 August 22 Posted August 22 · Report post 1 час назад, yoric сказал: там где вычисления Вы взяли бестолковую дорогую древность, которая будет ещё дорожать, причём в прогрессии, это стандартная политика данной конторы, тогда как какой-нибудь PIC16F18324 с четырьмя модулями CCP решил бы задачу полностью аппаратно, за меньшие деньги, при меньшем размере кода и вообще без плясок. Схемы не видно, но если немного изменить, можно выкрутиться и на этом PIC16F627 c одним модулем CCP. 1 1 Quote Share this post Link to post Share on other sites More sharing options...
EdgeAligned 84 August 22 Posted August 22 · Report post Еще и ассемблер, бохмой, да кто ж его нынче помнит то в таком древнем МК? Я когда-то писал на асме, но это было две тысячи лет назад. Если в симуляторе работает, а в железе - нет, значит, упущены какие-то электрические тонкости. А симулятор в Протеусе что показывает? Насколько помню, Протеус достаточно точно воспроизводил поведение такого микроконтроллера. Ну и желательно видеть электрическую схему. Возможно, не соблюдены электрические условия по уровням сигналов. Подключите осциллограф, посмотрите. Входной сигнал формируйте при помощи генератора сигналов с прямоугольным логическим выходом, и подключите его правильно. 1 Quote Share this post Link to post Share on other sites More sharing options...
Plain 206 August 22 Posted August 22 · Report post Да не, тут скорее все проблемы от того, что автор не использует имеющийся аппаратный ресурс, а программу просчитать не может. На CCP задача решается элементарно. Quote Share this post Link to post Share on other sites More sharing options...
yoric 0 August 22 Posted August 22 · Report post Так и знал, что не может не выступить Генерал Очевидность)) У меня они были, это для себя , не для серийного выпуска. И даже готовые платы, которые работали с другой программой, без исходников. Так что всё с электрическими тонкостями и условиями соблюдено. 16 minutes ago, EdgeAligned said: симулятор в Протеусе что показывает? В Proteus я не смог найти двухканального противофазного генератора. Нет его там, консультировался. Запускал в SimulIDE && gpsim (работаю под линукс), работает в полном объёме. Кстати, двухканальный противофазный генератор пришлось писать самому на PIC же, 12f675, их есть у меня. Работа в симуляторе Рабочая схема, только сейчас выходные каскады будут другие. Quote Share this post Link to post Share on other sites More sharing options...
EdgeAligned 84 August 22 Posted August 22 · Report post В Протеусе есть вот такой инструмент, который позволяет получить практически любые типы сигналов: Со схемой - панятна. Но следует подключить осциллограф и проверить конкретный вид входных импульсов на ножках МК на предмет соответствия требуемым для МК электрическим характеристикам. Так же, для проверки программной части следует подавать непосредственно на входы МК сигналы от генератора логических сигналов, как я и писал выше. Чтобы отсеять влияние входных каскадов. Quote Share this post Link to post Share on other sites More sharing options...
yoric 0 August 22 Posted August 22 · Report post ЕСли Вы сделаете в Протеусе двухканальный противофазный сигнал (большой скважности), я буду аплодировать стоя. А что, SimulIDE не котируется? Работает поточнее Протеуса, как говорят. В цифровой части. 20 minutes ago, EdgeAligned said: следует подключить осциллограф и проверить конкретный вид входных импульсов на ножках МК на предмет соответствия требуемым для МК электрическим характеристикам. Так же, для проверки программной части следует подавать непосредственно на входы МК сигналы от генератора логических сигналов, как я и писал выше. Там нет входных каскадов. Вам сфотографировать осцилограмму? У меня С1-55)) Quote Share this post Link to post Share on other sites More sharing options...
EdgeAligned 84 August 22 Posted August 22 · Report post Просто я раньше с PIC16 работал в Протеусе, и он весьма точно симулировал работу микроконтроллера. Двухканальный противофазный сигнал? Такой? или такой? если да, тогда вставайте, аплодируйте 🙂 Под входным каскадом я подразумеваю оптопары развязки. Соответственно, осциллографом желательно проверить, что на вход МК приходит сигнал заданного диапазона уровней, незашумленный ложными импульсами. Quote Share this post Link to post Share on other sites More sharing options...
yoric 0 August 22 Posted August 22 · Report post Как на второй картинке. Встал, аплодирую. Только его нельзя на ходу менять, однако? А в SimulIDE у меня выше на картинке с двумя PIC можно. Quote Share this post Link to post Share on other sites More sharing options...
EdgeAligned 84 August 22 Posted August 22 · Report post Чтобы менять частоту, там есть скриптовый вид генератора. В вашем этом SimulIDE изменение частоты реализуется не самим генератором, а программой на втором МК. Ну и вот навряд ли SimulIDE будет точнее Протеуса. Уж не знаю, кто там так говорит. Но лично я в те времена редко встречал, чтобы отсимулированная в Протеусе прога не работала в железе. По крайней мере, такой простой случай. Поэтому, повторюсь еще раз - проверяйте осциллографом сигналы на входах и выходах в железе, и пересматривайте свою программу микроконтроллера. Лично я не брал в руки PIC16 уже лет 10, а на ассемблере для него не писал и того больше. Попробуйте упростить программу, убрав расчет фазового смещения и оставив переключение выхода в момент захвата таймера, чтобы проверить именно работу таймера. Quote Share this post Link to post Share on other sites More sharing options...
Plain 206 August 23 Posted August 23 · Report post 12 часов назад, yoric сказал: не смог найти двухканального противофазного генератора. Нет его там 12 часов назад, yoric сказал: Очевидность А что с ней не так? Перевести блок CCP в режим защёлки, объединить сигналы датчиков диодным ИЛИ и подать на RB3, далее, в прерывании защёлкой, сохранить флагом, какой из двух сигналов в нуле, прибавить требуемый угол к CCPR, перевести блок CCP в режим прервания компаратором и выйти, затем, при прерывании компаратором CCP, выдать на нужный выход нужное, перевести блок CCP в режим защёлки и выйти. Всё, круг замкнулся, самостоятельная молотилка создана — теперь можно заняться написанием в основном цикле неспешных заумных алгоритмов вольным стилем. Quote Share this post Link to post Share on other sites More sharing options...
yoric 0 August 25 Posted August 25 · Report post В "железе" - я имел в виду с генератора на 675 PIC. Не могу понять смысла усложнения, заморачиваясь с CCP, когда справляется захват таймером TMR1 по программному скану датчиков? Quote Share this post Link to post Share on other sites More sharing options...
EdgeAligned 84 August 25 Posted August 25 · Report post А почему именно два датчика угла поворота коленвала? Так то в автомобилях он завсегда один был. Quote Share this post Link to post Share on other sites More sharing options...
yoric 0 August 25 Posted August 25 · Report post Это не датчики поворота коленвала, а датчики ВМТ двухтактного двухцилиндрового двигателя. Quote Share this post Link to post Share on other sites More sharing options...
Vasily_ 54 August 25 Posted August 25 · Report post 12 минут назад, EdgeAligned сказал: Так то в автомобилях он завсегда один был. Нет, ибо в авто всё гораздо сложнее. Quote Share this post Link to post Share on other sites More sharing options...