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

Общие вопросы по 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)); //Проверяем входные линии

 

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

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

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

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

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

 

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

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

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

 

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

  • 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 пользователей онлайн

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

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