Регулятор хода на PIC-Basic

ubd

Недавно занялся программитрованием на PIC-Basic. Простой язык. Написал несколько программ для проверки. Всё очень просто и работает без проблем!
Так вот хотелось бы написать программу регулятора хода на PIC Basic. Я поробовал, не получилось, здаётся мне, что нужно применять прерывания, но как я незнаю.

Короче говоря, есть у кого нибудь опыт, по написанию программ Регулятора хода, на PIC Basic`е? Может быть ссылки какие нибудь?

И вообще возможно ли на PIC Basic написать что то подобное? Или для таких вещей, нужен асемблер?

Заранее спасибо, за любую информацию.

PigTail

Регулятор для коллекторника наверное можно нарисовать. В бесконечном цикле меряете длительность управляющего импульса(команда PULSIN дожидается начала импульса и меряет его) и в соответствии с его длительностью устанавливаете PWM (кажись команда HPWM), каковым мотор и управляется. Русское описание есть тут
А вообщето лучше переползайте на Си, бейсик уж больно ублюдочный для микроконтроллеров.

ubd

Я эти комманды знаю. С помощью них не получиться. Когда считывается импульс коммандой PULSIN, то проц в этот момент, ничего делать не может, т.е. пока импульс присутствует, то проц висит на этой комманде, как только импульс изчез, комманда записывает значение в ОЗУ, только тогда переходит к следующей комманде. Комманда PWM, работает так же. Пока она выдаёт пачку импульсов, то проц зависает на этой комманде. В общем неполучается ни как. Язык этот слишком примитивен. Вот если бы эти комманды могли работать одновременно, то получилось бы. Или если бы я ассемблер знал, то можно включать подпрограммы на ассемблере, прямо из бейсика. Но что бы знать ассемблер, нужно знать архитектуру проца, а это для меня тёмный лес.

Я ожидал ответа, что на СИ переходить нужно. Но он для меня не понятен. Нужно книгу купить хорошую, тогда разберусь, может быть. Да и для СИ, наверное то же нужно знать архитектуру проца.

Может быть на бейсике, есть какие ни будь другие способы вывода ШИМ и при этом считывания канального импульса?

PigTail

Надо HPWM использовать, что и указал и соответственно кристалл с аппаратным PWM, тады должно работать. Насчет Си для пиков увы ссылок нет, не любля я пики 😉
Да, хорошая книга хорошо, но тут скорее практика рулит.

ubd

А я просто не понял, букву H проигнорировал, оказалось HPWM, а я воспринял как просто PWM. У меня книга еать “Программирование PIC-микроконтроллеров на PIC Basic”, там про комманду HPWM вообще ничего нет. Поэтому я незнал что такая команда есть. Теперь буду пробовать. Спасибо.

PigTail

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

18 days later
evgenb

У меня книга еать “Программирование PIC-микроконтроллеров на PIC Basic”, там про комманду HPWM вообще ничего нет. Поэтому я незнал что такая команда есть.

Форум по PICBasic.
basicpic.moy.su
Много документации, можно задать вопросы, получить консультацию, совет, помощ.
Не плохой язык для быстрых не мудреных решений.
Всяк овощ к своему блюду. 😃
Успехов.

ubd

Про этот сайт, знаю. Задавал там вопрос, про реализацию аппаратного ШИМ - НЕодного ответа…
Точнее один ответ есть, но он не по теме.

evgenb
ubd:

Про этот сайт, знаю. Задавал там вопрос, про реализацию аппаратного ШИМ - НЕодного ответа…
Точнее один ответ есть, но он не по теме.

Вы зря обиделись. Был вопрос:
“Я читал что у 16F84, есть аппаратный ШИМ генератор. Как его использовать на PIC Basic.”
И на него ответ:
"У PIC16F84 нет аппаратного ШИМ, но есть у PIC16F628. У него такой корпус и расположение выводов. "
Обратитесь к Admin basicpic, Максим всегда готов оказать помощь.

evgenb

PicBasicPro программа демонстрирует вариант использования аппаратных средств PWM.
Выход PWM будет находиться на штырьке CCP1 для PIC16F87x.
Может сгодится пример.
Успехов. 😃

hardpwm.zip

ubd

Спасибо за пример. Я так уже сделал. И в протеусе всё работает. Только не всегда. Видимо, я не делал эти строки:
CCP1CON = %00001100
T2CON = %00000101