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