Перейти к содержанию
    

pic16f627 проблемы со стартом TMR0

Здравия!

Подскажите пож-ста. Это программа управления УОЗ ДВС (угол опережения зажигания мотора). Два датчика через 180° выдают при вращении узкие  импульсы (скважность 50). Соответственно в зависимости от оборотов (периода) вычисляется задержка по выходам. От неё вычисляется время ожидания и время накопления энергии в бобине.

В симуляторах SimulIDE && gpsim всё работает. В железе пропадают вых. импульсы на среднем участке (там где вычисления), не стартует TMR0 (на некоторых участках внутри этого всё-таки стартует). TMR1 измеряет период вращения, TMR0 откладывает задержку.

pic-uoz-diagram1.jpg.e3c31cb52a3f728644d429c3ea69e841.jpg

pic-uoz-032-ton2.asm

Так вот подозрения, что почему-то иногда не стартует TMR0 (TMRA). уже я его и так и этак инициализирую, но без толку. Гляньте пож-ста.

Изменено пользователем yoric

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, yoric сказал:

там где вычисления

Вы взяли бестолковую дорогую древность, которая будет ещё дорожать, причём в прогрессии, это стандартная политика данной конторы, тогда как какой-нибудь PIC16F18324 с четырьмя модулями CCP решил бы задачу полностью аппаратно, за меньшие деньги, при меньшем размере кода и вообще без плясок.

Схемы не видно, но если немного изменить, можно выкрутиться и на этом PIC16F627 c одним модулем CCP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще и ассемблер, бохмой, да кто ж его нынче помнит то в таком древнем МК? Я когда-то писал на асме, но это было две тысячи лет назад.

Если в симуляторе работает, а в железе - нет, значит, упущены какие-то электрические тонкости.

А симулятор в Протеусе что показывает? Насколько помню, Протеус достаточно точно воспроизводил поведение такого микроконтроллера.

Ну и желательно видеть электрическую схему. Возможно, не соблюдены электрические условия по уровням сигналов. Подключите осциллограф, посмотрите. Входной сигнал формируйте при помощи генератора сигналов с прямоугольным логическим выходом, и подключите его правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не, тут скорее все проблемы от того, что автор не использует имеющийся аппаратный ресурс, а программу просчитать не может. На CCP задача решается элементарно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и знал, что не может не выступить Генерал Очевидность)) У меня они были, это для себя , не для серийного выпуска. И даже готовые платы, которые работали с другой программой, без исходников. Так что всё с электрическими тонкостями и условиями соблюдено.

16 minutes ago, EdgeAligned said:

симулятор в Протеусе что показывает?

В Proteus я не смог найти двухканального противофазного генератора. Нет его там, консультировался. Запускал в SimulIDE && gpsim (работаю под линукс), работает в полном объёме.

Кстати, двухканальный противофазный генератор пришлось писать самому на PIC же, 12f675, их есть у меня.

pic-uoz-generatr-multiphase.thumb.jpg.05ea771a2c3722b8c66706095cd1b898.jpg

Работа в симуляторе

pic-uoz-da-dinamo-sch-v3-hires.thumb.jpg.cb8bfc7c21a7a9ebe9458ea8d3a11aeb.jpg

Рабочая схема, только сейчас выходные каскады будут другие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Протеусе есть вот такой инструмент, который позволяет получить практически любые типы сигналов:

2024-08-22224029.thumb.jpg.18ff014104b7476a3b3efd03e4c83096.jpg

Со схемой - панятна. Но следует подключить осциллограф и проверить конкретный вид входных импульсов на ножках МК на предмет соответствия требуемым для МК электрическим характеристикам.

Так же, для проверки программной части следует подавать непосредственно на входы МК сигналы от генератора логических сигналов, как я и писал выше. Чтобы отсеять влияние входных каскадов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЕСли Вы сделаете в Протеусе двухканальный противофазный сигнал (большой скважности), я буду аплодировать стоя. А что, SimulIDE  не котируется? Работает поточнее Протеуса, как говорят. В цифровой части.

20 minutes ago, EdgeAligned said:

следует подключить осциллограф и проверить конкретный вид входных импульсов на ножках МК на предмет соответствия требуемым для МК электрическим характеристикам.

Так же, для проверки программной части следует подавать непосредственно на входы МК сигналы от генератора логических сигналов, как я и писал выше.

Там нет входных каскадов. Вам сфотографировать осцилограмму? У меня С1-55))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто я раньше с PIC16 работал в Протеусе, и он весьма точно симулировал работу микроконтроллера.

Двухканальный противофазный сигнал? Такой?

2024-08-22232432.jpg.beeea350d880ce6192ff8824edabf1c3.jpg

или такой?

2024-08-22232858.jpg.3ac2e37c3d392aff0ea4754373aadfc0.jpg

если да, тогда вставайте, аплодируйте 🙂

Под входным каскадом я подразумеваю оптопары развязки. Соответственно, осциллографом желательно проверить, что на вход МК приходит сигнал заданного диапазона уровней, незашумленный ложными импульсами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как на второй картинке. Встал, аплодирую. Только его нельзя на ходу менять, однако? А в SimulIDE  у меня выше на картинке  с двумя PIC можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы менять частоту, там есть скриптовый вид генератора. 
В вашем этом SimulIDE  изменение частоты реализуется не самим генератором, а программой на втором МК. 
Ну и вот навряд ли SimulIDE  будет точнее Протеуса. Уж не знаю, кто там так говорит. Но лично я в те времена редко встречал, чтобы отсимулированная в Протеусе прога не работала в железе. По крайней мере, такой простой случай.

Поэтому, повторюсь еще раз - проверяйте осциллографом сигналы на входах и выходах в железе, и пересматривайте свою программу микроконтроллера. Лично я не брал в руки PIC16 уже лет 10, а на ассемблере для него не писал и того больше.

Попробуйте упростить программу, убрав расчет фазового смещения и оставив переключение выхода в момент захвата таймера, чтобы проверить именно работу таймера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, yoric сказал:

не смог найти двухканального противофазного генератора. Нет его там

bad-781.gif.0bc76e075680da028d37cc79d05302a8.gif

12 часов назад, yoric сказал:

Очевидность

А что с ней не так? Перевести блок CCP в режим защёлки, объединить сигналы датчиков диодным ИЛИ и подать на RB3, далее, в прерывании защёлкой, сохранить флагом, какой из двух сигналов в нуле, прибавить требуемый угол к CCPR, перевести блок CCP в режим прервания компаратором и выйти, затем, при прерывании компаратором CCP, выдать на нужный выход нужное, перевести блок CCP в режим защёлки и выйти. Всё, круг замкнулся, самостоятельная молотилка создана — теперь можно заняться написанием в основном цикле неспешных заумных алгоритмов вольным стилем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В "железе" - я имел в виду с генератора на 675 PIC.

Не могу понять смысла усложнения, заморачиваясь с CCP, когда справляется захват таймером TMR1 по программному скану датчиков?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему именно два датчика угла поворота коленвала? Так то в автомобилях он завсегда один был. 
3bfdfba959f83a4647ca23c46e6e8552.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не датчики поворота коленвала, а датчики ВМТ двухтактного двухцилиндрового двигателя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, EdgeAligned сказал:

Так то в автомобилях он завсегда один был.

Нет, ибо в авто всё гораздо сложнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...