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

Общие вопросы по PIC-микроконтроллерам


NebsteR

Рекомендуемые сообщения

7 часов назад, UVV сказал:

Err_c = Err_c + 1; //запрещенное состояние Err_c это переменная или нет если переменная то где что дальше с ней делается за циклом switch?

если энкодер подключен к двум входам порта Б то откуда берутся изменения в 0b00001101 в третьем и четвертом бите. 

то есть к каким пинам по счёту энкодер подключен

1. можно ничего не делать, это переменная введена для контроля исправности эндкодера и наличие ошибок при больших скоростях

2. Алекс уже ответил

3. к PORTB<1:0>,  строку

Enc_state |= PORTB;//Проверяем входные линии

исправить на

Enc_state |= PORTB&((1<<1)|(1<<0)); //Проверяем входные линии

 

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

@IMXO этот вариант тоже надо отработать и выложить. Народ тоже нуждается в энкодерах.

@IMXO может отдельную тему создать и закрепить про энкодеры?

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

зачем ? тема уже давно существует http://forum.cxem.net/index.php?/topic/194645-подключение-и-работа-с-энкодером/ в соответствующем разделе форума, достаточно включить поиск по сайту и получить почти четыре десятка страниц с упоминанием эндкодера, как минимум пять тем где обсуждаются алгоритмы  обработки 

 

23 часа назад, UVV сказал:

программу обработки команд энкодера я спиз... у кого то

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

 

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

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

  • 1 месяц спустя...

Есть дисплей 2х16, нужно сделать вольтамперметр на БП с 2мя независимыми каналами. Как это сделать? есть такая идея: допустим 1канал будет гальванически связан  например с  16f873A, на второй канал сделать отдельный измеритель напряжения и тока на 12f675 и связать два контроллера без гальв. связи.

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

  • 2 месяца спустя...

У меня не вопрос, а подсказка для тех, кто напорется на ту же проблему. Поиск может быть выведет сюда.

МК - PIC16F18446 на подарочной демо-плате DM164144. Неделю мучился (в свободное время), не мог получить "эхо" от УАРТа, при этом передача работала. Наконец со злости сделал новый тестовый проект, но теперь уже посредством конфигуратора (МСС). "Эхо" появилось. Начал копаться в МСС конфиге - все примерно как у меня. Одно отличие - вручную я писал на ХС8 версии 1.45, а МСС делал на версии 2.05. Оказалось, что в версии 1.45 адрес RX1DTPPS в заголовке указан 0x1EC9, а в версии 2.05 правильный - 0x1ECB. Это не считая того, что в ДШ он вообще называется RX1PPS.

Вот теперь задумался, а не из-за кривого ли заголовка у меня не завелся 32 kHz кварц на этой плате?!

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

А чем же Вы целую неделю занимались? 

Вроде очевидно, что если нет эха, нужно посмотреть состояние регистра управляющего включением эха и мгновенно обнаружить расхождение имен-адресов в хедере. 

Тем более, что исправить хедер Вы могли самостоятельно. 

Я уже не говорю, что компилятор нужно всегда брать актуальный. Кстати, нынче действует 2.05b.

戦う前に相手のベルトの色に注目

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

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

Изменено пользователем Zhuk72
Ссылка на комментарий
Поделиться на другие сайты

Ерунду не надо писать. 

Это просто опечатка технического писателя. 

Ее пофиксили в следующей версии компилятора. 

Элементарно обнаруживается через пару минут после включения отладчика... 

戦う前に相手のベルトの色に注目

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

Марк, спуститесь на землю, здесь тоже люди живут.

Еще раз повторяю: у меня в данное время нет времени и условий заниматься этим хобби даже 20 минут без того, чтоб меня не оторвали на посторонние дела. До этого ни разу я с подобной ошибкой не сталкивался ни на одной чипе PIC, STC, C8051 или STM32. Мне не приходило в голову, что могут выпустить компилятор без проверки хотя бы базовой периферии.

Что касается пары минут... Ну не за пару, но за 20-30 минут (учитывая, что я впервые использовал МСС) я вышел на источник проблемы. Этой платой я начал заниматься еще в марте прошлого года, тогда и вылезла эта проблема. С того времени и до мая этого года было не до МК вообще. После таких перерывов трудно включаться обратно и поневоле возникают сомнения в правильности своих действий. Так что не судите всех по себе.

Уже жалею, что вообще поделился этим наблюдением.

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

Ошибки в хедерах достаточно часты. Иногда их ловит компилятор, иногда нет. 

Зависит от синтаксиса ошибки. 

Это просто надо воспринимать как возможное. 

戦う前に相手のベルトの色に注目

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

  • 1 месяц спустя...

Вопрос по видимости меток в другом файле. Есть проект загрузчика. В файле "memory.s" описаны глобальные метки: (извиняюсь за форматирование, проблемы с кнопкой CODE)

.global _F1, _F2, _F3

_F1:

        mov W0, NVMADRU

      mov W1, NVMADR

 

Далее в файле "main.c" объявлено:

extern   UWORD16   F1 (UWORD16,  UWORD16)

и далее происходит вызов функции

F1 (A, B);

Я вот не пойму, объявление global с подчеркиванием, а функция без него. Как компилятор понимает, что вызывая   F1 (A, B);   нужно перейти на метку _F1    ?

Никак не пойму. Больше в проекте никаких функций F1 (тоже самое и с F2, F3) нет !

         

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

Читаем мануал на XC16 на странице 226:

Quote

Variables or functions declared within a separate assembly file that will be
referenced by any C source file should be declared as global using the assembler
directive.global. External symbols should be preceded by at least one
underscore. The C function main is named _main in assembly and conversely an
assembly symbol _do_something will be referenced in C as do_something.
Undeclared symbols used in assembly files will be treated as externally defined.

 

戦う前に相手のベルトの色に注目

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

  • 1 месяц спустя...

Ребят, прошивал один раз только "аттини" и то лет 6 назад.

Нужно прошить PIC12F629 (что собираю http://cxem.net/mc/mc265.php)

Программатор есть только USBASP V2.0

На компе windows 10.

Тыкните пальцем на инструкцию, в идеале пошаговая инструкция, тогда точно справлюсь. Спасибо.

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

10 часов назад, d19codec сказал:

Тыкните пальцем на инструкцию, в идеале пошаговая инструкция, тогда точно справлюсь.

на рынке/радиомагазине/интернете/ приобретаешь pickit2, pickit3 или pickit4 , устанавливаешь фирменное ПО , подключаешь МК к программатору и заливаешь прошивку. 

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

  • 5 месяцев спустя...

Доброго дня.

Подскажите возможно ли вычислить максимальное время вычисления выражения. В конкретном случае деление/умножение 32 разрядных чисел. Максимальное время выполнения операций необходимо для расчета времени (частоты) опроса датчика, который предоставит новые данные для вычисления. Пишу на xc8.

За ранее благодарен.

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

а разве хусым восьмой умеет перемножать 32 разряда? на сколько понимаю результат имеет размерность 64 бита, а хусым такую разрядность не знает... или нет?

а так время выполнения кода смотрел в протезе по брекпоинтам.

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

Может и за умножение загнул, но так или иначе оперировать надо 32 разрядными. На данном этапе пока что это размышления о будующем проекте. Но в протеусе посмотреть проблемы не составит, однако я подозреваю, что время операции деления числа на 2, 4 или 8 будет отличатся от времени деления на число, например, 863. Все комбинации деления перебрать - глупость, с моей точки зрения. Подозреваю, что не один я столкнулся с подобным.  

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

1 hour ago, Bugrim said:

я подозреваю, что время операции деления числа на 2, 4 или 8 будет отличатся от времени деления на число, например, 863

Если делить на константу, то компилятор заменит деление на сдвиг. Если переменную на переменную, то время если и будет отличаться, но не так сильно.

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

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

14 часов назад, Bugrim сказал:

необходимо для расчета времени (частоты) опроса датчика, который предоставит новые данные для вычисления.

Вычисления с высокой целочисленной разрядностью (32*32 или 32/32) нужны достаточно редко. Особенно на 8-битной платформе.

Впрочем, 32-битный флоат так же мало необходим.

Если не секрет, что за вычисления Вы заложили со столь высоким разрешением?

戦う前に相手のベルトの色に注目

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

ПИД регулятор. Контроль температуры. Хочется:

1 частота опроса 25 Гц для каждого канала.

2 каналов - 3

3 датчик температуры - термопара К типа - 3 шт.

4 динамическая индикация 5 разрядов.

5 органы управления - 4 кнопки.

В первом приближении так.

В вычислениях предполагаю использовать такой формат. 16 бит: 5 разрядов - дробная часть, 10 - целая, 1 знаковый. Расчет примерно так ( ещё обдумываю):

U = K * ( Err + (1/Ti)*Int + Td*dErr )

Eo = E; Нам нужна прошла ошибка. Ошибки — по 16бит

E = Y-X; Вычисляем новое рассогласование. 16bit

Int = Int + (E+Eo)/2; Интегрируем ошибку. При этом считаем полусумму разности (разностная схема). 32bit = 32bit + 16bit

cI = Int * (1/Ti); Считаем интегральный вклад — 32bit * 32bit => 32bit

cD = Td * (E-Eo); Считаем диф вклад — 16*16 => 32bit

PID = E + cI + cD; Подскобочное; 16+32+32 => 32bit

U = K*PID/256; Коэфф; 32*16/8 bit => 40bit.

Будет ли успевать на частоту 25Гц, или изначально снизить надо.

Источник вдохновения - https://m.habr.com/ru/post/145991/

 

 

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Вот именно. Пусть себе греется. Лаковая изоляция провода легко выдерживает больше сотни градусов. Проблема надуманная.
    • Начать с проверки переменного резистора.  Можно прямо в схеме (обесточенной  ), но лучше выпаять, подцепить мультиметр к центральному и одному из боковых контактов и крутить от начала до конца - показания должны изменяться плавно, от нуля Ом до максимума, без резких скачков и провалов в ноль или бесконечность.
    • бета ключей одинакова ? Последний график выглядит так, как будто ключ открывается не вовремя. Схема не свистит, самовозбуда нет ? Графики напряжения на коллекторах ТЛ494 покажите, которые соответствуют перекосу напряжения на трансформаторе
    • У меня написано в клетке 50 вольт для графика на трансформаторе. На транзисторе в базе амплитуда не более 3.5 вольт в минус, в плюс примерно 0.7 вольт. Последний график с нагрузкой это запитка уже напрямую от сети без нагрузочной лампы.  Спасибо за ответ. 
    • Ничего серьезного в вопросе не вижу. Соленоиды миллионами в мире работают не сутками и не неделями А ГОДАМИ. Все что работает всегда греется., и должно. А вот какая температура это другой вопрос. А эта штучка вообще  смешная. Система отталкивающей магнитной левитации.docx
    • Ну на плате с смд деталями, всё компактно, всё рядышком и  проводники конечно уже но и значительно короче. Если конечно не тянуть связь с одного конца платы на другой.
    • Почему нигде нет масштаба по оси Y ? График напряжения на базе - какая амплитуда в минус на базе ключа при пробое ? Он держит не более 8..9 вольт, больше -7 вольт не должно быть ни при каком раскладе. Транзисторы раскачки - проверьте ОБА на пробой. Проверьте базовые цепи обоих ключей на одинаковость. на первой осциллограмме не вижу никаких проблем. Колебания в паузах от индуктивности намагничивания первичной обмотки трансформатора. Это всегда будет в режиме холостого хода. Чтобы был прямоугольник, необходимо, чтобы через дроссель ток не падал до нуля - то есть, режим неразрывного тока дросселя. Для этого необходимо увеличить его индуктивность. нагружать источник, запитанный от резистора - нельзя ! ключи должны быть из одной партии, убедитесь что ничего не пробито. Емкости высоковольтных электролитов тоже должны быть одинаковыми. Проверьте на высыхание. Схема выпрямления должна быть двухтактной - это на всякий случай
  • Похожий контент

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