Jump to content
    

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

Здравия!

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

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

pic-uoz-diagram1.jpg.e3c31cb52a3f728644d429c3ea69e841.jpg

pic-uoz-032-ton2.asm

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

Edited by yoric

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

20 minutes ago, EdgeAligned said:

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

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

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

Share this post


Link to post
Share on other sites

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

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

2024-08-22232432.jpg.beeea350d880ce6192ff8824edabf1c3.jpg

или такой?

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

bad-781.gif.0bc76e075680da028d37cc79d05302a8.gif

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

Очевидность

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...