- IAR 8051 10.10.1 глючный компилятор (int и long типы, printf) для Cypress CY7C68013A sladkoejka(1955 знак., 29.06.2018 11:55 - 02.07.2018 18:42, MCU, полностью)
- Всем привет, подниму тему. kuzulis(1697 знак., 18.10.2019 14:29)
- Ну так чо, вышел пак с исправлениями? На прошлый твой багрепорт они за 2 дня обернулись :) - Codavr(07.07.2018 11:06, ссылка)
- А что скажет уважаемый KEIL? - seryy(03.07.2018 15:16)
- Корректный код генерируется в обоих случаях Bill(2501 знак., 03.07.2018 08:04 - 08:12)
- Обнаружил интересное различие в коде который не работает и коде, который работает. Вот сам код примера: sladkoejka(2434 знак., 05.07.2018 13:49 - 14:00)
- Удивительно что он вообще такой добрый, ваш оптимизатор. Ну кто же счетчик в delay делает не volatile? - Petrovich(05.07.2018 13:57, )
- а зачем его volatile делать, если это локальная переменная и никто кроме локального кода её менять не может? sladkoejka(427 знак., 05.07.2018 14:06 - 14:11)
- без volatile оптимизатор без проблем может выкинут цикл - 0men(05.07.2018 14:36)
- Volatile более сложный объект, чем кажется. Впрочем, большинство здешних обитателей его освоило - Petrovich(05.07.2018 14:15, )
- в чём сложность? Кстати, проверил под симулятором. Оба варианта (с INC R6 и без него) работают одинаково и дают абсолютно одинаковую задержку. Что с volatile, что без. Но с volatile задержка в 2.28 раза больше. При этом вариант, где код начинается sladkoejka(79 знак., 05.07.2018 14:42)
- Вот по этоой статье учились поколения :) Petrovich(58 знак., 05.07.2018 14:50, )
- Ничего нового в этой статье нет. Насчет использования volatile в циклах - это очень неудачный совет. Лучше использовать какое-либо полезное действие в теле цикла (например NOP). И вот почему. sladkoejka(1041 знак., 05.07.2018 15:02 - 15:06)
- Сравнивайте Bill(3498 знак., 05.07.2018 16:24)
- Что сравнивать? В вашем примере ошибка - вы закоментили вызов __no_operation(). Без этого вызова цикл должен быть удалён. То, что с volatile не удаляет - это результат плохой оптимизации. Мозгов у компилятора не хватает чтобы отследить, что sladkoejka(667 знак., 05.07.2018 17:19)
- Я не о зависаниях. Я - о недостаточной "сообразительности" компилятора. - Bill(05.07.2018 18:04)
- "То, что с volatile не удаляет - это результат плохой оптимизации" 0men(471 знак., 05.07.2018 17:36)
- Прочитайте вашу цитату из стандарта внимательнее. В ней речь идёт об "объекте, который может быть модифицирован". В случае-же с локальной переменной volatile, никто её модифицировать не может, время её жизни ограничено временем выполнения функции. sladkoejka(420 знак., 05.07.2018 18:09 - 18:13)
- Вы не до конца перевели фразу. 0men(320 знак., 05.07.2018 18:21)
- Это фантазии, ничего подобного там не написано. Вы что-то прочитали между строк? - SciFi(05.07.2018 18:11)
- это не фантазии, а то что написано в стандарте. Читайте внимательнее, вы видите "may be modified in ways unknown to the implementation or have other unknown side effects"? Локальная переменная ограничена областью видимости по стандарту и никому sladkoejka(248 знак., 05.07.2018 18:23)
- Тогда было бы написано так: "An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects. When that is the case, any expression referring to such an object shall be SciFi(131 знак., 05.07.2018 18:27)
- Тем не менее, компиляторы удаляют код volatile указателей на не volatile данные, которые были удалены оптимизатором. И такое поведение признано соответствующим стандарту. Однако в вашей интерпретации такое удаление недопустимо, т.к. указатель sladkoejka(24 знак., 05.07.2018 18:50)
- Ссылку в студию. Если от объекта берётся адрес, и он реально используется, не надо удалять такой объект. - SciFi(05.07.2018 19:41)
- Вам лень открыть компилятор и попробовать? Почему я должен это делать за вас? sladkoejka(121 знак., 06.07.2018 15:03)
- Нещитово. Приведение к типу volatile - это совсем не создание объекта типа volatile. Попробуйте так: int x = 123; int *volatile y = &x; y = y; - SciFi(06.07.2018 15:11)
- Попробовал - результат тот-же самый, компилятор полностью удаляет код, вместе с объектом указателя, помеченного как volatile. См. скриншот. Дальнейшие изыскания предлагаю проводить самостоятельно. sladkoejka(06.07.2018 15:21)
- Вы попробовали не тот код, который я написал. Зачем так делать? Ну и, согласно информации по ссылке, это таки вражеский компилятор. SciFi(726 знак., 06.07.2018 15:36, ссылка)
- В вашем примере происходит модификация данных помеченных как volatile. Компилятор в этом случае не может быть уверен, что эту модификацию данных никто не увидит и она ни на что не повлияет. Поэтому код удалять не будет. sladkoejka(06.07.2018 15:48 - 15:53)
- Как пример, чтение внешней памяти может использоваться для сброса сторожа - замешивается на дешифраторе адрес и строб RD, а с выхода получаем сигнал сброса. Если указатель на volatile, то компилятор не должен оптимизировать обращение. Хотя Vit(261 знак., 06.07.2018 16:24)
- тут тоже согласен, для контроллеров это критично, поэтому даже чтение через volatile указатель удалять не стоит. Однако если volatile помечена локальная переменная, не являющаяся указателем, то её можно удалять. Т.к. хранится локальная переменная sladkoejka(95 знак., 06.07.2018 18:14)
- тут тоже согласен, для контроллеров это критично, поэтому даже чтение через volatile указатель удалять не стоит. Однако если volatile помечена локальная переменная, не являющаяся указателем, то её можно удалять. Т.к. хранится локальная переменная sladkoejka(95 знак., 06.07.2018 18:14)
- Дык в этом весь смысл и есть - отключается оптимизация обращения к данным помеченным как volatile, если же к ним обращения нет, то код вполне может выпиливаться. - =AlexD=(06.07.2018 16:01)
- Вот в другом компиляторе ничего не удаляется даже в вашем первом примере Bhg2(31 знак., 06.07.2018 15:26, ссылка)
- читайте до конца - или иметь другие неизвестные побочные эффекты - 0men(05.07.2018 18:25)
- локальная переменная доступна только внутри тела функции и только на время её выполнения. Если эта функция ничего не делает и никак не влияет на данные доступные другому коду, её можно спокойно удалять вместе со всеми volatile локальными sladkoejka(174 знак., 05.07.2018 18:32)
- фраза про побочные эффекты означает, что разработчик лучше знает, что делать компилятору. Компилятору нужно ничего не трогать. Стандарт об этом прямо говорит. Все ваши разделение на локальные и глобальные это только ваши фантазии, в стандарте 0men(22 знак., 05.07.2018 18:46)
- не нужно ничего выдумывать. Логика стандарта проста. Если объект никому не доступен, его можно удалять для оптимизации, т.к. это никак не повлияет на поведение системы. volatile действует только на данные, которые могут быть кому-то потенциально sladkoejka(65 знак., 05.07.2018 18:56)
- Это ты просто рафинированный программист, который тупо смотрит на код, и делает какие-то свои выводы, исходя из абстрактной вычислительной системы в вакууме. В реальной жизни у микропроцессора есть всякие там шины памяти, кеши, ПДП и пр. вещи, =AlexD=(486 знак., 06.07.2018 08:23 - 08:48)
- А чё спорить-то, сделайте иначе бомж(178 знак., 05.07.2018 22:49)
- Интересное вышло обсуждение. Ранее не задумывался, но мне близка позиция Сладкоежки. Эффект от исполнения кода наступает лишь в двух случаях: Nikolay_Po(1136 знак., 05.07.2018 22:11)
- логика стандарта совсем иная - если переменная имеет квалификатор volatile, то действия с этой переменной не подлежат оптимизации и должны быть представлены кодом как есть. Ни каких слов про доступнай, область видимости и жизни в стандарте нет - 0men(05.07.2018 19:00)
- компилятор НИКОГДА не удалит цикл с volatile переменной. Более того, он никогда не соптимизирует такой цикл - 0men(05.07.2018 15:18)
- Ну уж нет. Если он удалит переменную volatile, то это будет вражеский компилятор (хотя всякие бывают, конечно). Но тут __no_operation() убирает необходимость в volatile, потому что __no_operation() "вызывает побочные эффекты", т.е. не может быть SciFi(72 знак., 05.07.2018 15:06)
- while( n-- > 0 )!!! тоже самое, но без мутотени... while(n--) - seryy(05.07.2018 13:56)
- только размещается этот "корректный код" по некорректным адерсам (в таблицу векторов). Вследствии чего при заливке в реальный девайс такой "корректный код" глючит или вообще не работает. (как повезет, если LJMP неудачно ляжет в таблицу векторов, sladkoejka(24 знак., 03.07.2018 10:10)
- В начале 2000-х я нашел баг в ихнем компилере. Настрочил багрепорт, Codavr(188 знак., 30.06.2018 16:31 - 01.07.2018 13:19)
- Ну так посмотрите сгенерированный код. Какие проблемы? - Bill(01.07.2018 06:55)
- 1. Проверить в настройках проекта какой именно printf formatter выбран. Мелкий может не понимать %i (не уверен, но не удивлюсь). LightElf(77 знак., 30.06.2018 11:57)
- 1. a55ku(446 знак., 29.06.2018 14:06, )
- Случайно наткнулся PCA9511A - Hot swappable I2C-bus and SMBus bus buffer. Любопытный чип, может пригодиться. Evgeny_CD(17.10.2019 16:19, MCU)
- Nuvoton готовится выкатить очередную стопку камушков на ядре 8051. Мало ног, куча интейфейсов, качественные генераторы без кварца. Даташитов пока нет, но общая информация уже присутствует, как и BSP под кейл и иар. - LightElf(08.01.2019 08:10, MCU, ссылка, полностью)
- H2'19 наступил, но пока что-то старшие ML51 не выкатили... - Evgeny_CD(17.10.2019 15:49)
- [ML51] -> залегли на ditect --> Самое интересное начинается с ML51PB9AE и старше - у него 2ch DMA (только коммуникационные интерфейсы) и внутренняя опора. Evgeny_CD(43 знак., 25.04.2019 23:36, ссылка, ссылка)
- датаШыта и мануал лежат на сайте. - Evgeny_CD(15.01.2019 22:31)
- Еще одна стопка - M031/M032. - CADiLO(09.01.2019 11:03, ссылка)
- Первичный анализ. Интересное сочетание фич. Evgeny_CD(981 знак., 08.01.2019 21:03)
- Чудесные камни! Можно вспомнить молодость и поговнокодить на asm! Или SDCC таки освоить наконец! MSOP10 чудо! - Evgeny_CD(08.01.2019 13:53)
- Предварительный даташит на временном обменнике - скиньте в будку или еще куда где не потрут. Нажимать кнопочку посмотреть файлы и потом качать. Ну и MSOP10 у них интересные, наши клиенты кто на PIC10/PIC12 сидели уже поскидывали заявки на образцы. - CADiLO(08.01.2019 13:40 - 13:42, ссылка)
- Спасибо! Идеальный периферийный контроллер класса "умная пыль": быстрый SPI и DMA, Voltage range: 1.8 V to 5.5 V. Надеемся, что цены будут, скажем, $0.2 в опте от 1к штук. - Evgeny_CD(08.01.2019 13:29)
- 12-bit, 500 kSPS SAR ADC со встроенным DMA приятно дополняют набор фич. - Evgeny_CD(08.01.2019 13:31)
- Как вариант использования. На выходе DC-DC ставим этого таракана в MSOP-10, и он через цифровой изолятор передает на первичку ток и напряжение с темпом, скажем, 200 ksps каждый параметр. Просто тупо в лоб оцифрованные значения по SPI. Evgeny_CD(52 знак., 10.01.2019 01:53)
- В самом деле, что они за частой АЦП гонятся, если МК медленный? Почему бы для таких МК не сделать и АЦП тоже медленный (типа 50 Гц), но с разрядностью не хуже 16 бит? Можно даже с оверсамплингом, если тот хардверный. Скажем, для контроля за Ксения(67 знак., 08.01.2019 20:46)
- А что 8051-е ядро успеет сделать с этими выборками? Запомнить? Так оперативки мало. Усреднить? АЛУ у 8051 весьма посредственное, не? lloyd(52 знак., 08.01.2019 14:35)
- +1 - Codavr(08.01.2019 14:29)
- У Nuvoton'а есть мерзкая привычка вставлять цифру 51 куда ни попадя. Например, серии M051 и Mini51 имеют архитектуру Cortex M0, а вовсе не 51-ю. После этого я перестала понимать, на каком ядре их очередной камушек. - Ксения(08.01.2019 13:16)
- А этим Nu-link'ом кто-то пользовался? Нормальная отладка? - VLLV(08.01.2019 08:47)
- "Вытаскиваем ПО из запароленного микроконтроллера Renesas M16C" -> - Evgeny_CD(27.09.2019 17:54, MCU, ссылка, полностью)
- Здравствуйте, товарищи, нет ли примера кода для MSP430 на си, для чтения-записи в I2C EEPROM память. У меня MSP430FR2355 и AT24CM02, навярняка будет пример под что то другое, но я адаптирую. Заранее спасибо! - MSP_olux(08.10.2019 16:52, , MCU)
- Подскажите коллеги, стоит задача развернуть WEB интерфейс, где надо отображать несколько показаний с датчиков, если с датчиками все достаточно просто достаточно любой 8 битной машинки, то на чем сейчас кошерно решить задачу подключения МК к сети PeterD(104 знак., 27.09.2019 17:37, MCU, полностью)
- Мы сделали на stm + wiznet Klever(83 знак., 30.09.2019 19:03)
- Stm32f107 + недорогой PHY. Фриртос + uIP. У микроайпи в комплекте скрипт на перле. Скармливаешь ему сайт. Он компилирует в сишник с сайтом. Драйвер я взял из яровского примера. - Vesago(30.09.2019 13:25)
- PIC18F67J60 (все семейство xxJ60) имеет MAC and 10BASE-T PHY - т.е снаружи нужен только транс. Или PIC16/PIC18 + ENC28J60, Стек TCP/IP lite в конфигураторе кода. Запускается за 5 минут с перекурами - Илья(30.09.2019 10:48, ссылка)
- Иногда можно как бы без сети. RNDIS. Vit(94 знак., 28.09.2019 08:12)
- uIP заметно проще. и для него тоже примеры есть - Mahagam(27.09.2019 19:11)
- У LwIP есть встроенный web-сервер, так что бери любой контроллер, на который есть порт этого TCP/IP стека. - evgeniy1294(27.09.2019 17:44)
- Там есть разные факторы. 1) Себестоимость железа кому-то важна, кому-то нет. 2) Глубина погружения в программизм кого-то пугает, кого-то нет. 3) Потребляемый ток, габариты и т.д. 4) Что-то ещё?.. - SciFi(27.09.2019 17:44)
- Себестоимость важна, в сети гуляет связка Atmega и моста микрочипа SPI-Eternet, смущает древность сего решения. - PeterD(28.09.2019 12:07)
- У нас STM32F107RC + KSZ8081RNA. Не знаю насчёт самого дешёвого, но точно не самый дорогой вариант. Этот МК нужен по другим причинам, так что вписались хорошо. И да, lwip с его же веб сервером, без ОС, порт свой. - SciFi(28.09.2019 15:14)
- есть ещё SPI-Ethernet на W5500. сам юзаю KSZ8851SNL. бывали от Silabs CP2200/1, но они NRND. но это не самое дешевое. - Vit(28.09.2019 14:00, ссылка)
- Да, собственно, чего смущаться? Это действительно самое дешевое решение. Применяю в своих железках. Корейский W7500P, увы, похоже, так и не взлетел... - Гудвин(28.09.2019 12:23)
- [Cypress Excelon F-RAM 8Mbit SPI 1015 циклов] Только вышли, цены $30 в мелком опте mouser, но дыркоустойчивость впечатляет. Только Renesas MRAM -> заявляет круче, там и с объемами хорошо. Evgeny_CD(25.09.2019 01:16, MCU, ссылка, полностью)
- разбираюсь со стандартами jedec в частности регистром SFDP и возник вопрос: в этом регистре содержаться опкоды стирания секторов и быстрых чтений. А опкодов записи страницы, чтения и тд нет. Эти команды вообще стандартны для всех spi nor? Если да, abivan(30 знак., 24.09.2019 09:41, MCU)
- к вопросу о RISC-V, GD32VF103, итд... подсобрал тулсы riscv32imac-kgp-elf, можно попробывать! klen(8043 знак., 03.09.2019 10:25 - 10:37, MCU, полностью)
- 16 кнопок в одном выводе, прошу прощения, если уже было. - maleon(02.09.2019 15:50, MCU, ссылка, картинка, полностью)
- Передать голос по RS-485. Как синхронизироваться? Alt@ir(933 знак., 06.09.2019 07:04, MCU, полностью)
- Заранее генерируем избыточность. Evgeny_CD(554 знак., 06.09.2019 20:24)
- Задачу решали применением Michael_75(443 знак., 06.09.2019 16:36)
- Вы не уточнили: у вас выборки приходят монотонно в порт или пакетами? Если первое - то дело плевое: не синхронизируйте вообще. Делайте апсемплинг, фильтрацию, децимацию по тактовой ЦАП. lloyd(258 знак., 06.09.2019 16:07 - 16:12)
- А почему не посмотреть как сделано VoIP. И сделать аналогично voice over RS-485. - kaf1(06.09.2019 11:41)
- Или совсем "в лоб" - купить MEMS-генераторы на 1,5 PPM (сильно подешевели в последнее время) и хрен с ним, с потерей отсчета раз в полчаса. - Сидоргек(06.09.2019 11:06)
- А так: На приёмной стороне буфер миллисекунд на 100, звук воспроизводим с задержкой на полбуфера. Ессно, через некоторое время буфер переполнится или опустошится. Что бы этого не происходило, во время пауз добавляем или убираем скоко-то отсчетов, Сидоргек(149 знак., 06.09.2019 11:02)
- А в чем проблема не понимаю, есть лишнее данное - дропайте, есть недостающее - подавайте предыдущее. Так, скидыванием по одной выборке, вы звук вообще не исказите. - Ralex(06.09.2019 10:46)
- Никак не синхронизируйтесь. Используйте преобразователь частот дискретизации. Готовые чипы тут: Nikolay_Po(840 знак., 06.09.2019 10:42, ссылка)
- Стандартное решение - передавать заведомо быстрей, чем нужно. На приемной стороне буфер из двух половин, пока из одной воспроизводится, другая заполняется из линии. Как только воспроизведено все, половинки меняются местами. - Yurasvs(06.09.2019 08:52)
- У меня звук идет от аудиокодека, кодек подключен по I2S и он жестко привязан к тактовой частоте опорного генератора, т.е. посередине менять не могу, только сам опорный генератор. RS-485 принципиален. - Alt@ir(06.09.2019 08:09)
- Не понимаю в чем проблема. Принял байт - вывел в ЦАП. УАРТы сами между собой синхронизуются (за счет стопового бита). Прерывание по каждому байту для м AlexBi_(28 знак., 06.09.2019 08:09, )
- Если сэмл лишний - выкинуть, если не хватает - скопировать последний. На 8 бит звуке не думаю, что будет резать слух. 1 сэмл/сек на 8 кГц будет при расхождении генераторов ±0.000125 . Можете с аппроксимацией заморочиться. - Dingo(06.09.2019 07:38)
- Делал селекторную связь RS485/Ethernet. Качество отличное. Буфер на полсекунды звука на приеме. Делится на 4 секции. Воспроизводим при заполнении 2-х секций. Если к следующему воспроизведению занята всего одна, то чуть медленее темп. Три - driver_gv(342 знак., 06.09.2019 07:36)
- Какие существуют принципиальные/фундаментальные ограничения на применение RTOS? Peter_M(1478 знак., 14.08.2019 17:30, MCU, полностью)
- ёмоё, ну откуда вы взяли этот маразм, что у RTOS скорость реакции напрямую зависит от частоты систика? Уже в который раз на него натыкаюсь в интернетах. lloyd(240 знак., 03.09.2019 15:06)
- Если ресурсов хватает, то нет таких границ. Быстрые короткие обработчики нужно делать в прерываниях хоть с, хоть без ртос. - =AlexD=(03.09.2019 09:03)
- Если ты готов реализовать алгоритм работы устройства целиком (в одиночку или коллективом) нахуй все РТОС, если нет, то это самое оно. - Codavr(02.09.2019 19:33 - 19:36)
- Если разработку будут вести несколько человек, то однозначно надо использовать RTOS при таких условиях. Что касается вашей задачи - Задача с требуемым периодом обработки просто висит на событии. Событие устанавливается в прерывании таймера с il-2(189 знак., 15.08.2019 18:43)
- У нас вот цикл 125 мкс, без rtos исторически так сложилось... но очень бы хотелось, потому как долгие неприоритетные задачи сейчас приходится "размазывать" руками - sav6622(14.08.2019 18:02)
- В чём проблема размазать? Вроде бы protothreads делает это довольно простой задачей. - SciFi(14.08.2019 18:07)
- Анализировал я их для применения, но чего то так и не дошел, непомню что остановило. Надо бы вернуться взвесить снова. - sav6622(14.08.2019 18:35)
- Кооперативную не хотите попробовать? Написана на С, без ассемблера - =AK=(02.09.2019 05:37, ссылка)
- 1) Гм, если размер int не равен разрядности процессора - можно огрести забавных глюков. LightElf(230 знак., 02.09.2019 17:32)
- Я с 8-битными Ардунками пользовал, глюков не заметил. =AK=(112 знак., 03.09.2019 00:17)
- 1) просто везло или не заметили. У вас счётчик задержки модифицируется и основной задачей и обработчиком прерывания, без каких-либо средств обеспечения атомарности LightElf(67 знак., 03.09.2019 01:11)
- Под Ардуиной я даже прерывания не использую, задержки сделаны на основе millis() - =AK=(03.09.2019 02:13, ссылка)
- Если б я еще знал, что такое millis(). Вообще, использовать setjmp/longjmp нужно аккуратно и вдумчиво, там граблей разложено много. Конкретно у вас есть конструкция res = setjmp(bla-bla), которая, ЕМНИП, с точки зрения стандарта есть Undefined LightElf(724 знак., 03.09.2019 09:54 - 10:20, ссылка)
- millis(0 - стандартная функция Ардуино, возвращает uint32_t, кол-во миллисекунд с момента старта. Об атомарности позаботились в ней. =AK=(2209 знак., 03.09.2019 11:24 - 11:51)
- Кстати, да. Но допилить вроде бы несложно. - SciFi(03.09.2019 10:39)
- Это да. Но там еще грабли есть со стеком. Суть, кагбэ, в том, что вообще говоря никто не гарантирует, что выпрыгнув однажды из функции по longjmp можно будет в нее потом запрыгнуть назад. Компилятор имеет полное право раскладывать на стеке свои LightElf(249 знак., 03.09.2019 11:08)
- Вот, кстати, прекрасная цитата. "Оставь надежду, всяк сюда входящий": SciFi(380 знак., 03.09.2019 11:49)
- Это мне не понятно. Я же не надеюсь на постоянство содержимого стека, при выходе сохраняю контекст, при входе - восстанавливаю. Какая при этом разница, кто там что перезатер в промежутке? - =AK=(03.09.2019 11:30)
- Э-э, так нечестно. Если компилятор любит так безобразничать, пусть отслеживает, что вот тут longjmp, отставить безобразия. - SciFi(03.09.2019 11:28)
- Спасибо, интересно - Vit(02.09.2019 11:28)
- "Написана без ассемблера", а setjmp и longjmp что такое? - Ale3000(02.09.2019 10:37)
- Тогда уж и protothreads от Adam Dunkels посмотрите. - Dingo(02.09.2019 06:12 - 06:17, ссылка, ссылка)
- Есть разные реализации RTOS. Но если делать период 50микросекунд, то это может вызвать пробуксовку OS. Основное время будет тратится на переключение задач. misyachniy(195 знак., 14.08.2019 17:35)
- 50 мкс - это обращайтесь к прерываниям (по таймеру, например). RTOS это не запрещает. - SciFi(14.08.2019 17:32)
- Свежак: 16-bit RISC-V processor. Вроде Analog Devices спонсор. - misyachniy(02.09.2019 20:03, MCU, ссылка, полностью)
- Нашелся интересный on-line магазин LCSC -> Там широко представлена продукция STC, Holtek и других китайцев с ценами. Я смотрел MCU, но там есть и много другой ЭКБ. Магазин не самый дешевый, это видно, но для экспресс-оценки, что можно ждать в Evgeny_CD(39 знак., 03.05.2018 13:02, MCU, ссылка, полностью)
- Ищу контроллер со встроенным операционным усилителем под задачу. izerg(541 знак., 30.08.2019 17:57, MCU, полностью)