Вс май 22, 2022 14:46:01
И для них каждый раз нужна разная конфигурация порта? Стандартных недостаточно?Я работаю с радиотехниками, там всяких синтезаторов частот, аттенюаторов, dds, коречипов вагон и тележка.
Я вполне представляю какого размера ваш код для портов. Явно больше моих 200 строк.Аналогичный макрос? Так его просто не существует. Как можно сравнить размер с тем чего нет?
Еще раз: компилятор подобные оптимизации делать не вправе.Вы так ничего и не поняли. Нет никакой ручной оптимизации. Это делает компилятор
Вот именно это и есть ручная оптимизация: вы берете регистр и руками выбираете в какой байт писать, или вообще писать не в ODR, а в BSRR.Объяснение того что происходит под прошлым спойлером тут
Нет, в ваших краях я не бывал.Это там где Принцессы «пукают фиалками»?
Так вы поэтому свой код не показываете, что боитесь что вам в любую мелочь будут тыкать.И это рассказывает человек, у которого в коде официально костыль задокументирован, иначе два раза вызывается
Нет, я просто повешу на один порт и на этом проблемы заканчиваются. Или воспользуюсь более подходящими интерфейсами вместо ногодрыга.Такое, что вам придётся вручную раскладывать доступ по портам
Есть еще удобство чтения, переносимости и модификации кода.только вот спор об эффективности мне кажется великой глупостью: для чего вам создали МК с дикими мегагерцами?
Этим можно назвать даже использование библиотек.и пару слов о кодогенераторах. имхо, это тоже тупик для интеллекта.
И поэтому на предложение показать его выхлоп вы ответили "так же"? Хотя очевидно, что отличия будут, пусть даже косметические.Т нет в рукаве никакого продвинутого конфигуратора с кодогенератором эффективного кода? А.
У меня - есть ! Написан совместно с коллегами
Вс май 22, 2022 15:48:15
SPI::spi3::Init(SPI::SPI_BR::PCLK_DIV2, SPI::CPOL::_0, SPI::CPHA::_1);
using SPI3_CS2 = GPIO::PA_0;
using SPI_AD5142 = SPI::TSIMPLE_SPI<SPI::spi3, SPI3_CS2>;
using AD5142 = TAD5142<SPI_AD5142>;
Вс май 22, 2022 18:48:53
Вс май 22, 2022 19:04:23
Тогда зачем вы их перечисляли в качестве ответа на вопрос о настройках порта?В них вообще не нужна конфигурация порта.
А учитывая, что мой макрос выполняет все, что требуется, получается, в вашем 95% - мусор?Ну так ваш макрос и делает не больше 5% от моего.
И поэтому их нет смысла даже обсуждать. Вы бы еще хвастаться начали, как создаете целочисленные переменные.Большинство дескрипторов имеют строго определённый формат
Хотите сказать, это компилятор вам в исходник код вписывает? У вас ручная оптимизация В ИСХОДНИКЕ.Да сколько же можно тупить? Это делаю не я, а компилятор
Можно так. Можно демонстративно накостылить еще больше, чтобы говноразводке соответствовал еще и говнокод. Ну там магических констант насыпать, Ардуинские библиотеки вперемешку с ST-HAL'ом. Хотя я такое вряд ли осилю.Пошлёте заказчика, который принесёт плату, разведённую на ногодрыг, лесом?
Вс май 22, 2022 19:07:16
Вс май 22, 2022 19:31:02
pa0_15.clear();
pa4_11.clear();
pa8_15.clear();
Вс май 22, 2022 19:42:55
Вс май 22, 2022 20:11:29
//===========
// MSD Descriptor Type
//===============
struct __attribute__((__packed__)) USB_MSD_DESCRIPTOR
{
USB_INTERFACE_DESCRIPTOR Interface_0; // MSD Interface
USB_ENDPOINT_DESCRIPTOR EndPoint_1; // | Data IN Endpoint
USB_ENDPOINT_DESCRIPTOR EndPoint_2; // | Data OUT Endpoint
};
//===========
// CDC VCP Configuration Descriptor Type
//===============
struct __attribute__((__packed__)) USB_CDC_VCP_CONFIGURATION_DESCRIPTOR
{
USB_CONFIGURATION_DESCRIPTOR Config;
USB_CDC_VCP_DESCRIPTOR cdc;
};
//============
// MSD + CDC Configuration Descriptor Type
//================
struct __attribute__((__packed__)) USB_MSD_CDC_CONFIGURATION_DESCRIPTOR
{
USB_CONFIGURATION_DESCRIPTOR Config;
USB_MSD_DESCRIPTOR msd;
USB_INTERFACE_ASSOCIATION_DESCRIPTOR iad;
USB_CDC_VCP_DESCRIPTOR cdc;
};
Вс май 22, 2022 20:15:44
Но этот метод можно заранее прописать, и Си-ки это сделают, все равно вы в коде не будете жонглировать пинами, и у вас будет четкая привязка к пинам.VladislavS писал(а):Смысл был в том, что для разных наборов данных выбирается разный метод.
Вс май 22, 2022 20:38:20
Вс май 22, 2022 20:39:11
Вс май 22, 2022 20:52:12
Как раз на автомате и без участия программистаVladislavS писал(а):Делать подобное стоит, только если всё на автомате, без участия программиста
вы же листин показываете, если тут оптимизация кода пошла ну тогда давайте конкретно посмотрим. И если уж листин показываете, тогда пишите на каком компиляторе вы этого добились, iar или arm-gcc или может какой там у вас еще есть.VladislavS писал(а):Вот вы смотрите на листинги разных clear() и зачем-то хотите их отдельно скомпилировать.
Вс май 22, 2022 21:15:01
То есть вы подменили задачу и обвиняете меня, что настаиваю на исходной? Исходная задача была именно про ConfigurationDescriptor и HIDDescriptor, это вас зачем-то понесло на DeviceDescriptor, который меняется примерно никогда.Вот и объясните, какого рожна вы на очередной круг поехали?
Ну то есть как я и говорил, надо лазить туда-сюда чтобы настроить дескриптор. Номера дескрипторов, номера точек, размеры, параметры. А потом еще раз чтобы заполнить их значениями.Вообще не проблема. Собирается из типовых дескрипторов на раз два.
А кто тут хвастался, что все элементарно делается? viewtopic.php?p=4234849#p42348492. Я знаю как это сделать с помощью шаблона. Это несложная, но кропотливая работа. Мне она на практике не нужна. HID пробовал, но на практике не использую. Соответственно и время на это тратить не хочу.
То есть нормального решения нет, пошли уродливые костыли?3. В отличии от "чудоконфигуратора для GPIO", для HID есть неплохая общедоступная программа, которой можно быстро состряпать любой HID.
Я не преуспел только с определением размера. Сейчас стоит костыль с ручным указанием. К счастью, требуется оно нечасто.4. Судя по вашему вопросу в этой теме, с макросами вы тоже не сильно преуспели.
Оптимальное решение из написанных вами РУЧНЫХ оптимизаций. Сколько можно повторять это?!Я не делаю это руками. Это делает компилятор. Cколько раз можно повторять? Я написал правила, компилятор сам по ним выбирает оптимальные решения.
Сделают, конечно, какая разница на каком языке заниматься ручной оптимизацией.В том то и дело что не сделают. Во-первых, это как раз и будет ручная оптимизация.
Вс май 22, 2022 21:19:35
Вс май 22, 2022 21:28:18
Вызов с параметром покажите.VladislavS писал(а):О, ещё один!
Я вижу оптимизацию компилятора. А для каждого пина можно свой метод прописать.VladislavS писал(а):Ну так я исходный код приложил, сопоставьте его с листингом.
Еще как большая. В совокупности эта разница вылазит в хорошие килобайты.VladislavS писал(а):На разных компиляторах будет небольшая разница
Вс май 22, 2022 22:26:30
Пн май 23, 2022 06:12:52
Пн май 23, 2022 06:16:46
Пн май 23, 2022 07:23:33
Пн май 23, 2022 10:18:31
Именно об этом я и говорю: сначала создаешь структуру, потом заполняешь ее поля. Структуры-то для разных устройств разные.У вас какая-то извращённая фантазия. Просто берёшь и заполняешь поля структуры. Вы что прямо из головы дескрипторы пишете?
Опять в двух местах менять.Ну так оно элементарно и делается, просто надо аккуратно все возможные поля по спецификации закодировать.
Где костыли? Удобный визуальный инструмент,
Опять вы упорно игнорируете то, что я вам говорю. Вы РУКАМИ прописали четыре (или сколько там) вариантов. Да, компилятор потом может еще пройтись, что-то свернуть.Да поймите же
Какое ваше дело до чужих достижений? Своими хвастайтесь, тогда их и будем обсуждать.Да едрическая ты сила. "Театр одного актера", млин. Его спрашивают: