GDK Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 (изменено) #include <stdlib.h> надо включать в проект, иначе будут ошибки. Изменено 3 марта, 2018 пользователем GDK 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 1 час назад, GDK сказал: Напр. значение в переменной val - 000 0001 0011 1011 (315 decimal). Из неё нужно получить в переменных : val1 - 0000 0011 (3); val2 - 0000 0001 (1); val3 - 0000 0101(5) Дак это обычное деление с остатком. Математику в школе пропускали ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
GDK Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 Про деление понятно, я думал это уже есть во встроенных вариантах. Тогда городить код не нужно будет. Нашёл utoa, пока фигня получается, разбираться пытаюсь. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Alex Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 itoa - integer to ascii . Т.б. - число в текст. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 блин, же..., сейчас попробую. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 На вскидку : void func(unsigned char* p_arr, unsigned short val){ while(val){ *p_arr++ = val%10; val/=10; } } ...................... unsigned char out_arr[5]; // Выходной массив unsigned short in_val; ...................... in_val=123; func(out_arr, in_val); 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 С itoa не вышло. В буфер какая то ерунда заносится. Так и придётся делением или ещё как делать. 2 часа назад, Alex сказал: На вскидку : тоже не вышло. unsigned char out_arr[5]; // Выходной массив unsigned short in_val; void main(void) { init(); in_val=123; func(out_arr, 123); while (1){ LATCbits.LATC2 = 1; //set channel2 is closed state LATAbits.LATA2 = 0; //set channel1 is closed state } return; } void func(unsigned char* p_arr, unsigned short val){ while(val){ *p_arr++ = val%10; val/=10; } } newmain.c:24: warning: (361) function declared implicit int newmain.c:35: error: (984) type redeclared newmain.c:35: error: (1098) conflicting declarations for variable "func" (newmain.c:35) Но принцип понятен. У меня так коротко не получится, но как-нибудь сделаю. Спасибо. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 7 минут назад, GDK сказал: newmain.c:24: warning: (361) function declared implicit int Функция не определена. Она у Вас в коде находится ниже вызова. Поднимите её выше вызова, либо сделайте сверху её объявление. PS: Я в своём примере не зря именно такую последовательность привёл. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 3 марта, 2018 Поделиться Опубликовано 3 марта, 2018 Всё получилось. Давно на эти грабли наступал, и вот опять... Памяти намного меньше на это ушло по сравнению с itoa. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 4 марта, 2018 Поделиться Опубликовано 4 марта, 2018 13 часа назад, GDK сказал: С itoa не вышло. В буфер какая то ерунда заносится. Так и придётся делением или ещё как делать. вы просто не умеете его готовить, результат выводится в виде строки в ASCII коде , его нужно преобразовать в двоично-дисятичное и удалить признак окончания строки , выровняв число по количеству семисегментников. char buff [4]; unsigned char val = 1; unsigned char val_BCD[3]; utoa(buff,val1,10); utoa(buff,val,10); size_buff=strlen(buff); i=sizeof(val_BCD); while (i--) { if(size_buff) { size_buff--; val_BCD[i]=buff [size_buff]-'0'; } else { val_BCD[i]=0; } } @Alex мне кажетцо void func(unsigned char* p_arr, unsigned short val){ while(val){ *p_arr++ = val%10; val/=10; } } это не работает при повторном применении func(out_arr, 123); func(out_arr, 4); результат будет :124 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 4 марта, 2018 Поделиться Опубликовано 4 марта, 2018 Ну это был пример на вскидку. Никто не мешает человеку его допилить. Да и out_arr, логично, нужно очищать перед вызовом функции. Ну или забивать значениями по-умолчанию. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 4 марта, 2018 Поделиться Опубликовано 4 марта, 2018 В 02.03.2018 в 22:06, GDK сказал: Здравствуйте. Есть ли в MPLABX, XC8 встроенные библиотеки для преобразования чисел. PIC16LF1823. Я собираюсь на трёхзначный семисегментный экранчик выводить целые значения от 0 до 512. Стоит ли для этого велосипед творить или есть готовые решения? Самым компактным будет АСМ-вставка из известной микрочиповской аппноты с математическими функциями. Как раз для восьмибитников. Лет так 12 собираюсь вникнуть в теорию этого метода - все времени не хватает. Хотя алгоритм элементарно масштабируется на ЛЮБУЮ наперед заданную разрядность. В аппноте приведен код для 16 разрядов. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 5 марта, 2018 Поделиться Опубликовано 5 марта, 2018 (изменено) В 04.03.2018 в 03:22, IMXO сказал: вы просто не умеете его готовить, Мда, про ASCII понял, а вот конец строки - не знал... В BCD не обязательно, всё равно переводить в 7сегм код, без разницы в чём там цифири исполнены, всё равно через таблицу переводить. В 04.03.2018 в 10:52, Alex сказал: Ну это был пример на вскидку. Никто не мешает человеку его допилить. Да и out_arr, логично, нужно очищать перед вызовом функции. Ну или забивать значениями по-умолчанию. Главное переводит, коротенький, и память не сильно занимает. А с очисткой - ну да, долго м-дохался. Я с ацп пытался верхний/нижний байт на индикаторе смотреть. А там... делаю кз на входе, - ноль. Отсоединяю, становится 255 и назад - ни в какую. Ну думаю, переполняется почему то ацп. И засада такая, отладку не запустить - все ноги заняты. В итоге всё таки всё повыключал и запустил, нашёл причину. Бедный PICkit... Зато потренировался и поудобнее работу с ацп переделал. @Alex, спасибо большое. Очистку буфера прямо в ф-ю добавил. В 04.03.2018 в 14:06, my504 сказал: АСМ-вставка Не особо хотелось бы с вставками возиться, компактность и быстрота не особо напрягали, а на Си проще. В общем всё получилось, вопрос решён. Ещё один вопросик, где лучше узнавать поддерживает ли МК аппаратное деление/умножение. Хоть быстрота и не требовалась, но всё время в голову лезет скорость выполнения и какой код выдаст компилятор. Я смотрел а datasheet на свой мк, там таких асм команд не нашёл. Значит не поддерживает? Изменено 5 марта, 2018 пользователем GDK 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 5 марта, 2018 Поделиться Опубликовано 5 марта, 2018 11 минуту назад, GDK сказал: В BCD не обязательно, всё равно переводить в 7сегм код, без разницы в чём там цифири исполнены, всё равно через таблицу переводить. разница есть... в размере таблицы. для BCD jn 0..9 , размер = 10 для ACSII от 0..9, размер =57 24 минуты назад, GDK сказал: Ещё один вопросик в ДШ , аппаратное умножение с ПИК18 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 5 марта, 2018 Поделиться Опубликовано 5 марта, 2018 (изменено) BCD - мы по разному наверное понимаем. У меня - это упакованный формат дес. цыфр. В одном байте, таким образом, 2 цыфры помещаются. Т.е. для 0-9 надо 5 байт. Ну сэкономлю я один-два байта на буфере... По моему оно того не стоит, да и лишние вычисления из за этого. Изменено 5 марта, 2018 пользователем GDK 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
солар Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 10 часов назад, GDK сказал: Т.е. для 0-9 надо 5 байт Или 4 бит? 0 Я не раздаю удочки. Я продаю рыбу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 1 час назад, солар сказал: Или 4 бит? Имелось в виду - весь диапазон цифр (0...9). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 (изменено) 17 часов назад, GDK сказал: где лучше узнавать поддерживает ли МК аппаратное деление/умножение. PIC18 поддерживает умножение 8*8->16 причем ненативного вида, то есть результат в специальных регистрах блока умножения, что может и не поддерживаться компилятором в определенных случаях. PIC24/dsPIC30/dsPIC33 поддерживают умножение в один машинный цикл 16*16->32 всех комбинаций знаковых и беззнаковых аргументов и деление в 19 машинных циклов 16/16 и 32/16 с 16 разрядным частным и 16 разрядным остатком тоже всех комбинаций знаковых и беззнаковых аргументов. Изменено 6 марта, 2018 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 он спрашивал - где узнать, а не кто тут больше всех знает узнается это из даташита на камень. В разделе про ядро обычно пишется. Еще частенько в аннотации. Обычно это дело на первый план куда нить выпячивают, если проц хоть что-то аппаратно делать умеет кроме сложения 2+2 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 3 минуты назад, mail_robot сказал: он спрашивал - где узнать, а не кто тут больше всех знает узнается это из даташита на камень. Т.е. человек, чтобы узнать какие камни поддерживают умножение/деление, должен качать все подряд даташиты и читать их ? Что за бред...@my504 чётко указал, какие серии это могут. Что в его посте Вам не понравилось ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 (изменено) а если ему в руки попадет не пик? чем мой пост конкретно хуже предыдущего в плане корректности и информативности, если отбросить ваш адвокатирующий бред? Изменено 6 марта, 2018 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
GDK Опубликовано 6 марта, 2018 Поделиться Опубликовано 6 марта, 2018 16 часов назад, солар сказал: Или 4 бит? Да, на одну цифру. 11 час назад, mail_robot сказал: а если ему в руки попадет не пик? Ну, я выводы всё таки сделал, что "искай описание на семейства", да ещё с уже готовым результатом поиска ) , что - очень неплохой ответ. Про даташиты и "передний план" тоже полезная информация. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 2 мая, 2018 Поделиться Опубликовано 2 мая, 2018 Подскажите, пожалуйста, по такому вопросу. Надо использовать компаратор в Pic12f675 с источником опорного напр. По даташиту ИОН потребляет около 140 мкА. Для меня (для батарейного питания) это многовато. Что если в качестве ИОН использовать просто делитель из 2 резисторов около 68 и 100 кОм? Тогда и ток будет поменьше 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey-Ufa Опубликовано 2 мая, 2018 Поделиться Опубликовано 2 мая, 2018 10 минут назад, Aleksandr1111 сказал: просто делитель на нестабилизированном батарейном питании, если нужна хоть какая-то точность порога срабатывания компаратора, в качестве ИОН не катит. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksandr1111 Опубликовано 2 мая, 2018 Поделиться Опубликовано 2 мая, 2018 Там будет микропотребляющий стаб. LP2905 на 5 В 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.