Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Програмирование pic на СИ.

Вт май 10, 2022 19:34:54

Здравствуйте.
Ситуация такая, написал простенькую программу для PIC12F675. Программа компилируется без ошибок в MPLAB X там же в отладчике она работает как и должна. Далее загружаю полученный hex в proteus и там... она работает неправильно. В чем дело не понял, ту же самую программу адаптировал для microC и получил такой же результат - в отладчике microC работает как и должна, а в proteus - опять неправильно. Попробовал загрузил в контроллер - результат как в proteus работает неправильно. Где искать причину. Не ругайте сильно я только начал программировать.


Re: Програмирование pic на СИ.

Ср май 11, 2022 17:24:45

Вопрос решен, надо было отключить компаратор
Код:
CMCON = 0b00000111;

Re: Програмирование pic на СИ.

Пн дек 12, 2022 13:49:28

Подскажите, пожалуйста, возможно ли на pic16f628 (или 648) реализовать следующую задачу:
На входе сигнал стандартный для сервомашинок (частота 50 Гц, продолжительность импульса от 1 до 2 мс (0-100%)).
На выходе нужно получить ШИМ с максимально возможной для МК частотой со скважностью от 0 до 100% соответственно сигналу на входе.
Вроде как в этих пиках 2 таймера.
Выбор МК обусловлен их наличием (выкинуть жалко)

Re: Програмирование pic на СИ.

Пн дек 12, 2022 17:45:21

spongebob, возможно.
Одним таймером измеряем длину импульса (с помощью внешнего прерывания), а вторым - ШИМим.

Re: Програмирование pic на СИ.

Пн дек 12, 2022 18:17:13

На выходе нужно получить ШИМ с максимально возможной для МК частотой со скважностью от 0 до 100% соответственно сигналу на входе.

Есть зависимость минимального шага изменения скважности от необходимой частоты.

Re: Програмирование pic на СИ.

Пн дек 12, 2022 18:59:07

Дайте краткое описание устройства, для которого предназначен этот узел. Какое разрешение сервомашинки? 125 шагов за 180 градусов ОК? Дайте примерные данные и для "ШИМ с максимально возможной для МК частотой". У PIC16F628A есть три таймера.

Re: Програмирование pic на СИ.

Вт дек 13, 2022 06:27:06

У этих PIC имеется аппаратный модуль PWM, частота известна, нужно знать период. Таймеров 3, на все должно хватить. Во вложении переводной даташит, там все есть.

P.S. Данный документ для PIC16F648 тоже должен подойти. Отличаются от 627/628 только увеличенным объемом FLASH/RAM/EEPROM вроде.
Вложения
pic16f62x.pdf
(2.64 MiB) Скачиваний: 61

Re: Програмирование pic на СИ.

Чт дек 15, 2022 10:45:36

а не подскажете по коду на С?
а то я с пиками давно дел не имел, позабыл всё.

что-то типа такого:
Код:
void main()
{
...
  INTCON=0b11001000;
  // инициализация таймеров (0 и 2)
...
}

void interrupt isr(void)
{
if(RBIF) {
  if(RB7==1) // вход сигнала на B7 (например)
      //запуск таймера
  if(RB7==0)
      // остановка таймера, запись значения счётчика в регистр таймера ШИМ (не напрямую конечно, а после вычислений, учёта "мёртвых зон" и т.д.), сброс таймера
}
RBIF=0; // сброс флага прерывания
}


а вот инициализация таймеров для меня пока вопрос...
Последний раз редактировалось spongebob Чт дек 15, 2022 11:05:35, всего редактировалось 1 раз.

Re: Програмирование pic на СИ.

Чт дек 15, 2022 11:01:01

Какая связь между Си и моделью МК?

Re: Програмирование pic на СИ.

Чт дек 15, 2022 11:06:30

Какая связь между Си и моделью МК?

Си я знаю. Ассемблер нет.
МК валяется куча. Выбросить жалко.

Re: Програмирование pic на СИ.

Чт дек 15, 2022 11:23:25

Вы же спросили о Си. Причем тут ассемблер?
Нюансы компилятора XC8 изложены в мануале на этот компилятор. Си применяется как есть.

Re: Програмирование pic на СИ.

Чт дек 15, 2022 11:29:51

причём тут вообще всё?
причём тут нюансы?
я спросил что в какие регистры писать.
просто я привык к CMSIS и, возможно, изъясняюсь на непонятном вам языке, когда прошу "подсказать по коду на С"

Re: Програмирование pic на СИ.

Чт дек 15, 2022 11:53:12

Регистры никакого отношения к Си не имеют. Что куда писать изложено в даташите на контроллер. И это зависит от поставленной задачи.

Re: Програмирование pic на СИ.

Чт дек 15, 2022 13:25:36

spongebob, даю Вам алгоритм так как я его вижу.
Изображение

spongebob писал(а):я спросил что в какие регистры писать.

Читайте документацию

Я на алгоритме написал
CCP1 - capture, rise mode - в какие регистры писать сказано в док.
Как и From PPM-pulse calc value from
TMR2, PR2 and start PWM
- тоже

Вы также должны сообразить какая ножка является вход, выход. Про компараторов не забывай. И т.д. Также и Loop Ваше дело.
Все написано в PDF. Вам его дали выше.

Удачи.

Re: Програмирование pic на СИ.

Вс июн 11, 2023 17:50:59

Привет, ребят. Засиделся на xc8 версии 1.4 в PRO оптимизации
1) Есть ли существенная функциональная разница современных версий си компилятора и тех прошлых? Сейчас меня ничего не ограничивает от использования 1.4, однако, возможно, есть какие-то существенные автоматизации, улучшения и проч.
2) Раздают ли где кряк на современные версии хс8?
Спасибо

Re: Програмирование pic на СИ.

Пн июл 24, 2023 21:56:41

Привет всем кто в теме. Набрал код часов на ГРИ ИН-14 и мк PIC16F628, часики тикают от TMR1 в асинхронном режиме с внешнего кварца на 32768. TMR0 работает совместно с ШИМ для динамики ГРИ. В принципе, схема часов стандартная, наверное не раз рассмотренная на этом сайте. Но я не ищу легких путей, поэтому код на СИ пишу сам. Часы работают. Проблема моя в той части кода, которая связана с настройкой-установкой часов и минуты, никак не могу разобраться. В режиме установки (корректировки) часов при нажатии на кнопку PLUS показания часов инкрементируются до 23 и потом сброс на 0 и далее по возрастанию, т.е. все как надо. А вот при нажатии на кнопку MINUS идет декримент до 0 и все на этом стопорится, а надо чтобы дошло до 0 и потом произошел переход на 23 и снова по нисходящей. Тоже самое при настройке минут, при нажатии на MINUS доходит до 0 и счет останавливатся, а надо что бы был переход на 59 и далее счет вниз по кругу. При нажатии на плюс все нормально.

Прошу помощи - в чем может быть ошибка в коде, куда копать чтобы все работало как надо? Код main.c прикладываю, там где Установка Часов и Установка Минут в комментариях указал, где код не работает. Код пишу в MPLAB IDE v4.01., компилятор XC8.

Последний раз редактировалось Аlex Пн июл 24, 2023 22:22:10, всего редактировалось 1 раз.
Причина: Спойлер

Re: Програмирование pic на СИ.

Пн июл 24, 2023 22:05:07

Возможно, у вашего компилятора char беззнаковый, поэтому при декременте нуля получается 255, что "больше, чем 59" и никак не "меньше нуля". попробуйте объявить min как signed char

Re: Програмирование pic на СИ.

Вт июл 25, 2023 20:01:56

попробуйте объявить min как signed char

И да, действительно помогло, заменил char на signed char hour, min; все заработало, благодарю за подсказку!

Re: Програмирование pic на СИ.

Чт авг 17, 2023 16:30:53

Я не знаю кто вам сказал об ограничении в 8 байт, но это полный бред.

У меня вопрос у вас получилось отправить в блок более 8 байт? А про это я сам прочитал к примеру в ELM327L_DSA.pdf на 14 странице. Столкнулся что на рено Espace 4 надо было скогнфигурировать блок ручника новый и сменить вин, но елм327 не может отправить 8 байт, приходит в ответ знак вопроса. Пробовал даже через elm327chat отсылать вручную команды, если 8 байт отправить то отправляет, но мне надо больше 8, и приходит ? в овет

Re: Програмирование pic на СИ.

Чт авг 17, 2023 21:39:31

У меня вопрос у вас получилось отправить в блок более 8 байт?

Вы точно умеете читать русский текст? :facepalm:
В блок вы можете отправить любое количество байт. МК тут вообще не причем.
Изучите протокол связи с блоком и сделайте обмен в соответствии с ним.
Ответить