Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18795
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

демонстрировать-то можно, только надо учесть, что для такого легкого манипулирования шаблонами с перепдвыподвертом надо не один пуд соли съесть в процессе изучения С++.
очень сильно сомневаюсь, что простому смертному это выгодно: пока кто-то будет шаблоны грызть, я пинодрыг сделаю тупо без шаблонов 100500 раз...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Мурик, при чем тут бесплатная доставка? Например, 500 штук с доставкой до Москвы за $20 предлагают тут. По 4 цента получится.

Добавлено after 2 minutes 42 seconds:
Reflector, Вы почему-то уже второй раз говорите о размере кода, который меня как раз мало волнует. При цене флеша на два порядка меньше, чем SRAM это не важно. Важен расход оперативки, которой C++ всегда поедает больше, чем C при одной и той же квалификации программиста.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3707464#p3707464"]Вы почему-то уже второй раз говорите о размере кода, который меня как раз мало волнует. При цене флеша на два порядка меньше, чем SRAM это не важно. Важен расход оперативки, которой C++ всегда поедает больше, чем C при одной и той же квалификации программиста.[/uquote]
Ок, создаю пустой проект на С++ для F303, он потребляет 25 байт RAM. Добавим что-нибудь:

Код: Выделить всё

using spi1 = Spi1<PA4, PA5, PA6, PA7>;
using lcd = LcdSpi<ST7735, LcdOrient::Landscape, spi1, PA8, PA10>;

int main()
{
	delayInit();

	lcd::init(SpiBaudRate::Presc_4);
	lcd::clear(Color::Red);
	lcd::drawLine(0, 0, lcd::x2(), lcd::y2(), Color::Green);
}
Итого тут задействованы классы пинов, класс SPI, в который передаются классы пинов, к ним добавляется AF под конкретный мк и т.д., и есть тяжелый класс для работы с разными дисплеями, в который преедается класс SPI с другими пинами, причем LcdSpi - это просто псевдомим для более простой передачи параметров, на самом деле класс работает и с FMC/ногодрыгом и там 3 класса наследуются друг от друга. Итак, инитим этот дисплей, заливаем красным цветом и рисуем линию при выключенной оптимизации(-O0), на сколько же выросло потребление RAM? На 4 байта, добавилась переменная ticks_per_us, т.к. при инициализации дисплея используется пауза и то только потому, что ее значение определяется автоматически в рантайме, была бы это константа, так бы 25 байт и осталось. Какие еще нужны доказательства? :)
Последний раз редактировалось Reflector Чт сен 26, 2019 00:56:35, всего редактировалось 2 раза.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="ARV",url="/forum/viewtopic.php?p=3707449#p3707449"]надо учесть, что для такого легкого манипулирования шаблонами с перепдвыподвертом надо не один пуд соли съесть в процессе изучения С++[/uquote]ну этсамое, вообще и для мигания диодиком человеку приходится много чего съесть в процессе изучения [подставить список, начиная с "итак, детишки, электрическое напряжение - это..."].
[uquote="ARV",url="/forum/viewtopic.php?p=3707449#p3707449"]очень сильно сомневаюсь, что простому смертному это выгодно[/uquote]тому самому простому смертному, которому мало что выгодно, окромя питания и размножения?)
вы как-то постоянно считаете, что даже среди интересующихся контроллерами и прочей цифрой любителей писать код никто не умеет и не хочет учиться, и каждый первый из них - просто дуб дубом, с трудом осиливший С.
[uquote="ARV",url="/forum/viewtopic.php?p=3707449#p3707449"]пока кто-то будет шаблоны грызть, я пинодрыг сделаю тупо без шаблонов 100500 раз...[/uquote]как только вы захотите кроме примитивных макросов типа "вместо этого слова пиши вот это" залезть поглубже - в макросы с параметрами и раскрытием строк - то там все гораздо гораздее, чем в шаблонах. И отлаживается очень забавно (нет).

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3707464#p3707464"]Важен расход оперативки, которой C++ всегда поедает больше, чем C при одной и той же квалификации программиста.[/uquote]с чего бы?
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Reflector",url="/forum/viewtopic.php?p=3707471#p3707471"]Ок, создаю пустой проект на С++ для F303, он потребляет 25 байт RAM.[/uquote]На самом деле и 25 байтам неоткуда взяться. Непустой проект, с инициализацией тактовой, всех ног и Systick. Мигание светодиодом в прерывании.
Изображение
Untitled1.png
(27.55 КБ) 590 скачиваний
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18795
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Reflector писал(а):Итого тут задействованы классы пинов, класс SPI ...
то, что вы в main написали 3 строчки не делает ваш проект простым - за кадром остались простыни шаблонов и куча подключаемых файлов. то есть при отладке вы будете видеть не три эти строчки, а какие-то загадочные наборы символов из шаблона, разобраться в которых сможет лишь академик программистских наук. ну и мне это зачем? мне ковыряться в сложной иерархии шаблонных классов, которые на самом деле заменены парой ассемблерных команд (и понять, почему - отдельная тема) совсем не улыбается...
arkhnchul писал(а):вообще и для мигания диодиком человеку приходится много чего съесть в процессе изучения
совершенно верно. и поскольку обойтись без этого не получается никак, вопрос на засыпку: зачем учить еще С++, тратить на это время и силы, если достаточная база уже есть? возможно для профессионала это играет роль, а для меня, любителя?
arkhnchul писал(а):вы как-то постоянно считаете, что даже среди интересующихся контроллерами и прочей цифрой любителей писать код никто не умеет и не хочет учиться, и каждый первый из них - просто дуб дубом, с трудом осиливший С
к сожалению, в подавляющем большинстве так и есть. вот я минимум 30 лет учусь программировать, имею за плечами довольно сложные проекты, самостоятельно реализованные, но так и не могу с вами согласиться, что предлагаемое вами мне необходимо. мой уровень так и остался достаточно низким. а ведь даже по примеру здешнего форума тех, кто не достиг даже моего уровня - 90%.
arkhnchul писал(а): то там все гораздо гораздее, чем в шаблонах
не соглашусь. с шаблонами я последнее время имею дело в FPC. да, когда проникся - выглядит красиво и элегантно. но когда что-то не работает и надо разобраться - всё, сливай воду. мало того, что отладчик не может понять, что мне надо показать после всей той работы, что компилятор с препроцессором наделали из шаблона, так еще и разобраться, какой вызов откуда произошел из-за этой иерархии вложенных-унаследованных классов и методов... мама не горюй, короче.
поскольку синтаксис С++ вообще наркоманский, не могу поверить, что описанная проблема там не существует - наверняка масштабы её еще большие...
arkhnchul писал(а):с чего бы?
кажущаяся простота исходников, написанных профессионалами в стиле ООП, с применением последних фишек стандарта, вызывает у любителя непременное желание "добавить в проект еще что-то" - это же так просто! а это приводит к забавным результатам: добавление только одного кривенкого класса (любитель - чего с него взять?) ломает всю идеально построенную оптимизаторами/компиляторами картину, и уже классы так красиво не разворачиваются, и вместо двух команд присваивания появляются циклы с перебором списков... а это требует памяти и т.п.

как-то вы упускаете из виду, что не опытному давать инструмент профессионала бесполезно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=3707507#p3707507"]ну и мне это зачем?[/uquote]Ну незачем, проходи мимо, чего ныть то? Это право и выбор каждого. Кто-то истребители Сухого проектирует, а кто-то в баре сухое истребляет... А синтаксис шаблонов вас пугает просто от незнания, я точно так же китайскую грамоту боюсь. Достаточно пару классов нормальных написать и будете свободно код читать.
Последний раз редактировалось VladislavS Чт сен 26, 2019 07:54:07, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Кстати, да: насчет отладки — в точку!
Насколько я знаю, шланг еще не умеет под МК собирать → придется собирать gcc. А gcc, даже 9.2.0, при сборке крестовых шаблонов такую чушь выдает в сообщениях, что разобраться с этим действительно сможет разве что "кандидат компутерных наук".
Для отладки же макросов достаточно на отдельный файл натравить gcc -E — и увидеть, как эти макросы разворачиваются.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3707525#p3707525"]При сборке крестовых шаблонов такую чушь выдает в сообщениях, что разобраться с этим действительно сможет разве что "кандидат компутерных наук".[/uquote]Ну да, стоит немного подумать. Ну так это даже полезно.

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3707525#p3707525"]Для отладки же макросов достаточно на отдельный файл натравить gcc -E — и увидеть, как эти макросы разворачиваются.[/uquote]Чего? Я то по простоте душевной обычно кнопочку Build в IDE нажимаю. А тут вон оно как для отладки раскорячиться надо....
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

VladislavS, еще один, у которого мыша к руке приросла что ли?
"Нажать кнопочку build в IDE"? Зачем? Чтобы смотреть выхлоп в малюсеньком встроенном терминале? Так куда проще, надежней и наглядней рядом с IDE держать открытый терминал, где и писать make! Вот как это выглядит:
СпойлерИзображение
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="Reflector",url="/forum/viewtopic.php?p=3707471#p3707471"]Ок, создаю пустой проект на С++ для F303, он потребляет 25 байт RAM. Добавим что-нибудь:

Код: Выделить всё

	lcd::drawLine(0, 0, lcd::x2(), lcd::y2(), Color::Green);
На 4 байта[/uquote]
Вы лукавите. Покажите ассемблерный код. Я только в этой строке вижу намного больше 4 байт расхода стека.

Добавлено after 7 minutes 1 second:
[uquote="Reflector",url="/forum/viewtopic.php?p=3707205#p3707205"]при компиляции вызывается интерпретатор С++ исполняющий код, потому в шаблоне может быть 10 страниц кода, а на выходе получится несколько констант[/uquote]
И что Вы потом будете делать при отладке? Результат работы препроцессора хотя бы можно увидеть, а это? Если мне не хватает CPP, я использую Perl. Но тогда все промежуточные результаты я вижу и контролирую.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3707495#p3707495"]На самом деле и 25 байтам неоткуда взяться.[/uquote]
У тебя вроде стартап другой, в стандартном стартапе объявлены 6 extern переменных, а сами они в скрипте линкера определены, видимо потому компилятор их выкинуть не может... Но эти 24+1 байт будут и в проекте на С, так что безусловно С++ тут не при чем. Наверное если бы у мк не было 48КБ RAM, то полез бы разбираться, на AVR точно бы полез :)

[uquote="ARV",url="/forum/viewtopic.php?p=3707507#p3707507"]то, что вы в main написали 3 строчки не делает ваш проект простым - за кадром остались простыни шаблонов и куча подключаемых файлов. то есть при отладке вы будете видеть не три эти строчки, а какие-то загадочные наборы символов из шаблона, разобраться в которых сможет лишь академик программистских наук. ну и мне это зачем? мне ковыряться в сложной иерархии шаблонных классов, которые на самом деле заменены парой ассемблерных команд (и понять, почему - отдельная тема) совсем не улыбается...[/uquote]
Очередные страшилки :) Компиляторы умнеют, в язык добавляются новые возможности, в том числе и призванные избавиться от громоздких и непонятных ошибок при работе с шаблонами, библиотеки переписываются с учетом этих нововведений и т.д.... Последний раз мне попадалась такая действительно размашистая ошибка несколько лет назад на ПК, на мк такого не помню вообще, хотя безусловно если не знать С++, то и с теми ошибками что есть разобраться будет очень сложно. Товарищ при помощи моих либ делает кормушку для животных, причем там есть кнопки, пульт, Esp8266, Sim800, чтоб можно было с дома передавать команды на дачу :) Естественно шаговик, чтоб крутить заслонку, RTC, эмуляции EEPROM во флеше мк, дисплей 176*220, у меня такого не было, но взглянув на документацию переделал файл для одного из своих дисплеев, отправил его товарищу и, не без везения, но заработало с первого раза, он даже менюшку сам пытался писать и даже можно сказать как-то работало, но потом мне надоело смотреть на мучения и написал универсальную :) Так вот у него это все работает при этом даже С он знает на достаточно низком уровне, но либы построенны таким образом, что максимально все проверяют во время компиляции, а если включены ассерты, то и во время выполнения. Например, если вернуться к SPI:

Код: Выделить всё

using spi1 = Spi1<PA4, PB3, PB5, PA7>;
Using - это тот же typedef, т.е. тут объявляется новый тип, это не реально исполняемый код, но при компиляции там много чего выполняется и проверяется. У ног SPI есть ремап на разные пины и для каждого еще нужно задавать номер альтернативной функции, но тут это делается автоматически и конкретно для этого кода получим ошибку компиляции конкретно говорящую о том, что MISO задан неверно, на PB5 ее сремапить нельзя. Если ошибки нет, значит все ноги из списка допустимых и был добавлен правильный номер AF. Или если попытаться нарисовать часть линии за пределами экрана, добавить данные в заполненный RingBuffer и т.д., то получим сообщение об ошибке в консоль красным цветом. Это все помогает обнаруживать большое количество ошибок, а ошибки компилятора мне товарищ иногда шлет, но чего-то большого связанного с шаблонами пока не было :)

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3707549#p3707549"]Вы лукавите. Покажите ассемблерный код. Я только в этой строке вижу намного больше 4 байт расхода стека.[/uquote]
Чего вдруг компилятор должен показывать статистику по стеку? Он там вообще динамический, да и какая разница сколько на него ушло, если в С уйдет столько же? Один статический методы класса вызывается другие, к ним привязаны только константы, экземпляр класса не создается - это то же самое, что убрать класс и запихнуть функции в namespace, а он просто область видимости ограничивает, так что никаких отличий от просто сишных функций не будет.
И что Вы потом будете делать при отладке? Результат работы препроцессора хотя бы можно увидеть, а это? Если мне не хватает CPP, я использую Perl. Но тогда все промежуточные результаты я вижу и контролирую.
Возьмем класс для работы с портами, т.к. с точки зрения метапрограммирования он самый сложный. Если сделать что-то совсем простое:

Код: Выделить всё

using pins = PinList<PB10, PB8, PA3>;
то автоматически будет вызвана constexpr функция transformToPins() которая берет все входные параметры, а это могут быть не только пины, но и другие списки и еще парочка других сущностей, и преобразует их только в пины, попутно проверяя нет ли там дубликатов. Результат присваивается constexpr полю класса существующему только во время компиляции, потому брейкоинты ставить бесполезно. Но если параллельно создать такую-же функцию transformToPins2(), убрать constexpr, добавить _noinline_ и присвоить результат обычной переменной, то все замечательно отлаживается:
СпойлерИзображение
На скрине видно, что из входного списка pins один пин уже удалился и добавился в outs, правда видно это по типам списков, сами они пустые, но какая разница, если это позволяет нормально все отлаживать :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="Reflector",url="/forum/viewtopic.php?p=3707638#p3707638"][uquote="ПростоНуб",url="/forum/viewtopic.php?p=3707549#p3707549"]Вы лукавите. Покажите ассемблерный код. Я только в этой строке вижу намного больше 4 байт расхода стека.[/uquote]
Чего вдруг компилятор должен показывать статистику по стеку? Он там вообще динамический, да и какая разница сколько на него ушло, если в С уйдет столько же?[/uquote]
С чего бы вдруг? В большинстве проектов именно стек занимает 80-90% SRAM, а вовсе не статические переменные, кои легко контролируются и на C и на C++. Я не зря выше писал, что динамическое распределение памяти я, обычно, вообще отключаю, чтобы не тратить память даже на его инициализацию. Например, на SDCC у меня среда С вообще ни одного байта оперативки не потребляет! Статические переменные есть только те, которые я создал. Обычно, это несколько десятков байт и почти всегда с битовыми полями, ну пусть даже сотня. Остальное - под стек с жестким контролем. Если можно не передавать указатель вместо байта - именно так и делаю. Ну не реализуете Вы на C++ такое, если не погрязнете в изучении ассемблерного листинга, анализируя, где компилятор сожрал стек.
Reflector писал(а):Но если параллельно создать такую-же функцию transformToPins2(), убрать constexpr, добавить _noinline_ и присвоить результат обычной переменной, то все замечательно отлаживается:
И ради чего этот гимморой, если задачу можно решить совершенно прозрачно и просто без него? Ну сделаете Вы, например, инициализацию массива c упакованным RLE битмапом через такое доставание левой ногой правое ухо. Я же тоже самое делаю на Perl, формируя включаемый исходный файл, при этом легко контролируя все этапы данного процесса.
Друг Кота
Аватара пользователя
Сообщения: 3389
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ПростоНуб писал(а):Например, 500 штук с доставкой до Москвы за $20 предлагают тут. По 4 цента получится.
Зачем мне 500 штук OTP контроллеров? Или типа намекаете что они однократно программируемые и быстро закончатся... :))) Я писал про нормальные, с флешем и ARM ядром. :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Мурик, с флешем по ссылке 500 штук обойдутся $30. Или 250 штук за $20. А чтобы Вам не выглядеть чукчей-писателем повторю:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3706999#p3706999"]То есть, если Вам надо 200 МК для сбора данных, Вы вместо $6 потратите $200? :shock:[/uquote]
Ни о каких ARM речь не шла. А когда надо 200 МК с одинаковым кодом, какая разница, OTP они или нет? Хотя и с флешем получается меньше $20 за 200 МК, против $200 на любых ARM.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3707678#p3707678"]Ну не реализуете Вы на C++ такое, если не погрязнете в изучении ассемблерного листинга, анализируя, где компилятор сожрал стек.[/uquote]
Не знаю что еще добавить, раньше уже, может даже в этой теме, брали класс со статическими функциями, компилировали и получали на gcc точно такой-же бинарник, как на С без класса. Нравится думать что С обязательно экономит RAM, обращайтесь к тому-же Eddy_Em, которому нравится думать, что С++ проекты из 10 страниц компилируются по 10 минут :)
Reflector писал(а):И ради чего этот гимморой, если задачу можно решить совершенно прозрачно и просто без него?
Ладно, возьмем этот несчастный список из трех пинов и что-то в него запишем:

Код: Выделить всё

PinList<PB10, PB8, PA3> pins;
for (int i = 0; i < 8; i++)
	pins.write(i);
Пинов с списке может быть до 32-х и компилятор проделывает большую работы по отысканию закономерностей чтобы свести количество записей в порты к минимуму. Почему-то мне кажется что если попросить предоставить простую и прозрачную реализацию, можно даже с подключением Perl, то как и в прошлый раз найдется другая неотложная работа, которую срочно нужно выполнить :)
Друг Кота
Аватара пользователя
Сообщения: 3389
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ПростоНуб писал(а):Хотя и с флешем получается меньше $20 за 200 МК, против $200 на любых ARM.
Процитирую вас же.
ПростоНуб писал(а):А чтобы Вам не выглядеть чукчей-писателем
посмотрели бы реальные цены на ARM контроллеры. 200 МК можно купить за 52$. https://ru.aliexpress.com/item/4000009900054.html
А с учетом скидок за стоимость заказа и купонов продавца, еще дешевле.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Reflector, если класс C++ переписывать на С, то по опредлению должен получиться то же код. Я же говорю об использовании алгоритмов, которые уже в класс Вы всунете только в исходном С виде, потратив только время на их обертку в классы. Я же не зря привел пример своего кольцевого буфера. Там Вам классы мало помогут, так как интерпретировать всё сообщение в таком кольцевом буфере, как объект, уже нельзя. Или потратите стек на указатели.

И почему Вас все время несет на тривиальные задачи работы с портами или прочим железом? Намного интересней было бы сравнить объем памяти (стек+статика), потребляемой кодом на C и C++, например, при реализации CORDIC, Рида-Соломона, адаптивного ПИД-регулятора или, хотя бы, отрисовки спрайтов и их коллизий на TFT.

Мурик, во-первых, давайте все же сравнивать цены в одном магазине. А то я тоже могу кричать, что курица целиком в Пятерочке стоит дешевле, чем куриное крылышко в Азбуке Вкуса )))
В том же LCSC 200 STM32F030F4P6 обойдутся дороже $80. Все равно на порядок(!) дороже, чем PDK14
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18795
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

:facepalm:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3389
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ПростоНуб писал(а):давайте все же сравнивать цены в одном магазине
И покупать дороже? Смысл?
ПростоНуб писал(а):В том же LCSC 200 STM32F030F4P6 обойдутся дороже $80.
А вы писали 200$. :) Причем утверждали это!
ПростоНуб писал(а):$200 на любых ARM.
Как же это 200 так резко изменились на 80? :)))
ПростоНуб писал(а):В том же LCSC 200 STM32F030F4P6 обойдутся дороже $80. Все равно на порядок(!) дороже, чем PDK14
На порядок? То есть даже при стоимости $80 за 200 STM32, PDK14 стоят в 10 раз меньше, т. е. 8$ за 200 МК? :))) Дайте-ка ссылочку на магазин. :)))

Что-то вы сильно путайтесь в показаниях. :))) :dont_know:
Ответить

Вернуться в «Разные вопросы по МК»