- Добрый день! Работаю LCD TFT и SSD1963. Необходимо отобразить
график функции (например, синусоиду). У кого-нибудь есть какие-то
примитивы? Буду очень признателен! - 1Dmitry1234(06.06.2024 12:12, MCU, полностью)
- Вопрос по терминологии - имеется три части/уровня программного
обеспечения контроллера (Firmware): 1 - драйверы, 2 - MiddleWare, 3
- загружаемая исполняемая часть. Make_Pic(71 знак., 07.06.2024 07:39, MCU, полностью)
- Вопросец практиковавшим контроллер ST7735 в типовых индикаторах:
Отличие команды SLEEPON(10h) от DISPOFF(28h) в том, что SLEEPON
переводит контроллер в низкопотребляющий режим чуть ли не всю
структуру внутр. узлов чипа, а DISPOFF только узел управления
матрицей? Внешне обе команды ведут себя одинаково. P.S. Управление
подсветкой в моей версии схемотехнически интегрировано и управляема
по входу [BLK]индикатора посредством ключевого транзистора S8050
SOT-23 J3Y. Будет SERGHIO(177 знак., 06.06.2024 20:05, MCU)
- Вопрос по формированию сигнала DE программно - контроллер
STM32H743, выводы аппаратных DE на USARTах заняты и не освободить.
Как правильнее/лучше управлять направлением потока RS485, а именно
куда засунуть функцию ногодрыганья формирования сигнала DE? Кто как
делает программный DE? - Make_Pic(05.06.2024 06:42, MCU, полностью)
- У меня на всех платформах одинаково. По прерыванию опустошения
сдвигового буфера и опустошению кольцевого буфера, перекидываю DE.
Опционально может включаться задержка на перекидывание на энное
количество миллисекунд. - vesago(05.06.2024 12:24)
- У меня обмен - в конечном автомате, с использованием таймера. DE
управляется только программно - включается за 1.5 символа до старта
первого и выключается так же, с задержкой на полтора. Интервал
между кадрами 3.5. - Nikolay_Po(05.06.2024 10:35)
- Ну странный вопрос, ибо простой и .. на вкус и цвет.... POV(96 знак., 05.06.2024 09:48, картинка, картинка)
- Это у меня в прерывании CH32V203, не модбас. petrd(559 знак., 05.06.2024 09:15)
- Если речь про MODBUS: il-2(650 знак., 05.06.2024 08:30)
- когда говорю программе передать - устанавливаю DE на передачу.
Передача по прерываниям. Перед эти высчитываю по количеству байт
длительность в мсек. Потом снимаю DE. Программный DE только один
раз использовал. Тоже по причине несвободы выводов. Там к тому же
еще пришлось полудуплекс применять. TX и RX на одном выводе.
Поэтому DE надо было точно по времени делать. :-) - Лaгyнoв(05.06.2024 07:57)
- В прерывании "передача завершена" (или по прерыванию "буфер
передатчика пуст" запускать таймер на
десять-или-сколько-там-у-вас-бит) - Cкpипaч(05.06.2024 07:56)
- Друзья, собираю проект, в котором кроме всего прочего обмен с
хостом через 3g модем. Я как-то не любитель ртос. Не скажу, что
совсем не знаком - мало, но опыт применения есть. Сейчас автомат
взаимодействия с модемом здоровый какой-то. Физически геморно
простыню листать (15 дюймовый ноут :)). Может перевести все под
freertos? Упростит ли это или навес из очередей, мьютексов,
вопросов с синхронизацией задач сведёт на нет упрощение? - vesago(01.06.2024 17:27, MCU, полностью)
- Ребята, спасибо - протопотоки божественная штука. Начал накидывать
- по мне приятно работать. Решил все равно автомат зарядить на три
состояния - сброс, инициализацию, работу. В каждом состоянии
крутится протопоток, который реализует соответствующую функцию.
Вот, к примеру, как выглядит сброс vesago(1190 знак., 03.06.2024 11:26)
- можно переделать те же автоматы со switch-case-if на таблицы
переходов, геморно но компактно. однако плевать на код если с
бумажных диаграмм состояний или таблиц код однозначно переносится в
исходник NAUT(124 знак., 02.06.2024 11:35, youtube)
- Данунахер... 4 года 24/7 на даче работает проектик на MSP430.
Беспроводные датчики 868 Мгц, пара реле, GPRS модем. Отсылает
статус каждые 2 минуты, принимает команды управления. Следит за
коннектом и переподключается в случае необходимости. Без всяческих
РТОС. Вот объем кода: Гyдвин(116 знак., 01.06.2024 22:43)
- При всём уважении, но если программа работает и работает, то там и
обсуждать нечего. Не изнашивается же она. А вот если приходится
постоянно допиливать, переделывать, оптимизировать, улучшать,
добавлять и дебажить, то совсем другое дело. - mr-x(03.06.2024 11:39)
- Да вот, собственно, и весь код... Гyдвин(12556 знак., 01.06.2024 22:48)
- Ставь freertos и не сомневайся. Линукс хорошо, но Windows
доминирует на рынке. - BlackMorda(01.06.2024 19:18)
- А про корпоративную мультизадачность не думали? Все же вытесняющая
мультизадачность действительно потянет "обвес", а корпоративная -
нет. Cкpипaч(232 знак., 01.06.2024 17:30 - 17:34, ссылка)
- Вопрос - а кто нибудь для МК пишет на С++ ? И есть ли в этом плюсы? - Mty1(18.05.2024 14:15, MCU, полностью)
- Как минимум, два плюса есть. - mse homjak(31.05.2024 17:16)
- Писали, пишут и будут писать, потому что абстракции. Тут главное не
забывать про закон дырявых абстракций. =AlexD=(1 знак., 21.05.2024 10:43, ссылка)
- И про то, как Хрущов называл абстракционистов. - Kpoк(21.05.2024 19:20)
- :))) - Vit(21.05.2024 20:06)
- >>> Гхмм... RxTx(5 знак., 21.05.2024 17:05, картинка, картинка)
- Хороший перевод имеет собственную литературную ценность. - =AlexD=(21.05.2024 18:24)
- Вне зависимости от перевода, мне не удалось понять МЫСЛЬ этой
статьи. При том что это было повторное чтение, первый раз я ее
читал в оригинале лет 10-15 назад. Масса вопросов. Во-первых,
почему большинство инженерных решений он называет "абстракциями"?
На мой взгляд неверное применение термина. Не всё то что есть
программное решение - обязательно "абстракция". Второе. Ну и что за
"закон"? В чём он, если коротко и сжато, одним предложением? В чем
мысль? В чем новизна? В RxTx(677 знак., 21.05.2024 19:18)
- Не претендуя... закон в том что ЛЮБАЯ абстракция (попытка
унификации, систематизации, введения правил) - дырява. Cкpипaч(1378 знак., 21.05.2024 22:55)
- С тобой, как известно, можно надолго застрять =)) Ты перескочил
почему-то на Брукса и человеко-время и потом на усложнение систем и
на KISS. Я все-таки предпочту так не скакать, и для начала
использовать правильные термины с полным пониманием смысла.
Абстракция - это мыслительный (ноуменальный) прием. Существует
только в голове/мыслях/представимом. Программное обеспечение,
несмотря на то что представляет собой состояние, не является тем не
менее "мыслимым" или RxTx(1769 знак., 22.05.2024 01:02)
- Ты лингвист или инженер? Мы про языкознание, или обсуждаем статью
программиста по его тематике? Тут всё гораздо конкретнее -
абстракция (прослойка) скрывает в себе детали реализации, которые в
момент разработки кажутся неважными на более верхнем уровне. Это же
так красиво, open(), read(), write(), close(). Красота! Потом
оказывается что в реальном проекте надо тащить кучу дополнительной
инфы с самых нижних слоёв на самые верхние и начинается форменная
мутотеть, потому =AlexD=(136 знак., 22.05.2024 09:15)
- А вы хорошо копнули. У него (и у меня) под "абстракциями"
понимается не универсальный мыслительный прием, а вполне конкретные
конструкции в виде библиотек или просто прослоек в коде. Как вы
верно заметили, аналог редуктора или клино-ременной передачи, в
механизме. Давайте назовем это "прослойками". Cкpипaч(1436 знак., 22.05.2024 07:07)
- Согласен с тобой и твои самостоятельные мысли обладают ценностью.
Но моей задачей было обсудить ровно то что написал Спольски. Потому
что я прочел статью Спольски раз 5-6, пытаясь вычленить из нее
реальный здравый смысл. Вывод: Спольски написал настолько бредовую
поверхностную ерунду, что сейчас можно подтянуть что угодно. И до
обосрачки спорить, "А вот нет, на самом-то деле он имел в виду вот
это". RxTx(3376 знак., 23.05.2024 18:17)
- Спольски - программист. А у программистов есть свой слэнг (так же
как и у других профессиональных сообществ). И там слово
"абстракция" означает не совсем то, что под этим словом понимаете
вы. Протокол TCP - пример такой абстракции. Он, как бы, скрывает
нюансы физического, канального и сетевого уровней "модели OSI". И,
как правило, хорошо скрывает. Но не всегда. И тогда "программист на
C#" внезапно вынужден осваивать WireShark, узнавать про всякие MSS
и MTU, потому что на LightElf(59 знак., 23.05.2024 19:10)
- Хорошая попытка. Вы подразумеваете, как будто бы я не понимаю
понятие абстракции в компьютерных науках. Это не так, понятие
общепринято, не расходится с понятием в компьютерных науках, и было
процитировано мной парой постов выше. Вместо "общих соображений" о
том как что-то работало да перестало, процитируйте, пожалуйста,
Спольски, да растолкуйте. Мол, вот это вот так. А вот вы пишите что
не так, вот поэтому вы не правы. Жду про "дырявые абстракции" и как
TCP внезапно RxTx(620 знак., 23.05.2024 20:13)
- Все проще, ты не на одной волне со Спольски. Я - на одной и у меня
не возникло ни одного из твоих вопросов. Плевать мне на
"мысленное", прослойки ПО это вполне материальный объект.
О него можно биться головой - значит материальный. - Cкpипaч(23.05.2024 18:47)
- =))) Я тебя понимаю о чем ты. Если ооооочень сильно всё упростить и
"абстрагироваться", то тогда... возможно потягивая кальянчик и с
кружечкой пивка или чего покрепче, я покиваю головой и конечно же
воскликну! Черт возьми, согласен, ну да, ну да, он прав! Но иногда,
вот как сегодня, меня тянет "дизассемблировать" смыслы до усрачки и
мудачествовать, мудачествовать, мудачествовать.... =)))) Шучу... - RxTx(23.05.2024 18:48)
- Кстати, да. С абстракциями в C++ можно оторваться по полной.
Например, для начала сделать: AlexG(179 знак., 21.05.2024 16:23)
- Пишет.Но для себя сделал вывод.Если задача просит плюсы значит пора
подключать дополнительно чистого программиста. - PlainUser(21.05.2024 06:24)
- Смотря какие задачи стоЯт. Эффективность программы (быстродействие,
объём кода) или читабельность и переносимость? Что важнее?
Программа должна работать быстро и чётко, либо программа должна
быть легка в отладке и обеспечивать комфортный сервис поиска в себе
ошибок? - vpv.vpv(20.05.2024 09:14)
- Ещё недавно считал, что достаточно С, а плюсы, как жалкое поделие,
нафиг не нужны, ибо C# как ООП рулит. Но пришлось пользоваться C,
который Clang (Keil v6), и стало понятно, что закончились
возможности получать от компилятора ожидаемого результата - при
любой оптимизации линейный код уже невозможно отлаживать хождением
по шагам. В GCC 10+ практически то же. Т.е. уюта больше нет. Ещё и
частично поломали вольности с нерантаймовым управлением
константными указателями - для меня Vit(1039 знак., 19.05.2024 09:11)
- В MCU пишу исключительно на С++/asm. если использую внешние с-like
либы - боль, переписываю. из за одного printf уже можно предать
анафеме C. Если не начинали то лучше напрячся и стартовать с С++.
лет через 15 поймете что сэкономили 10. - klen(18.05.2024 23:49)
- Дык, напиши "калькулятор" на C++Builder - прочувствуешь краешек
ООП. Блядство стандартов от 11го пройдёт мимо (т.е. будет "С с
классами"). И посмотришь на свои задачи уже осмысленно - нужно ли
оно тебе... POV(153 знак., 18.05.2024 23:08)
- Конечно есть. Обязательно начните программировать на CPP. Это
следующая ступень после асм и С. - Бoмж(18.05.2024 22:59)
- С++ (если без фанатизма) подходит для МК идеально. Samx(331 знак., 18.05.2024 22:52)
- Если есть возможность изучить и уметь использовать C++ - изучайте и
используйте. Я вот, на C без плюсов застрял. И жалею, что не могу
просто взять, и попробовать плюсы. Учиться надо... - Nikolay_Po(18.05.2024 20:56)
- Я бОльшую часть жизни дальше чем "Си с классами" не заплывал, Samx(312 знак., 18.05.2024 22:57)
- Сколько раз делал теплицы, ни разу полиморфизм не потребовался.
Сколько у вас контуров регулирования на один кристал выходило? - Cкpипaч(18.05.2024 23:00)
- Ну там было много датчиков разных типов и несколько регуляторов
разных типов. Samx(194 знак., 18.05.2024 23:19)
- Я повторю свой вопрос - сколько на один кристал? Мне это важно. - Cкpипaч(19.05.2024 08:57)
- Полиморфизм пришлось к месту в столь нишевой железячной задаче?!... POV(202 знак., 18.05.2024 23:28)
- Был аналогичный случай. Контроллер насосной станции. Пусковая
аппаратура, непосредсвенно крутящая двигатели, может использоваться
разная. В итоге 17 классов, реализующих взаимодействие с очень
разными частотниками, устройствами плавного пуска и разными
вариантами схем на контакторах и основной алгоритм, которому можно
подсунуть любые объекты этих классов в любом разумном сочетании. AlexG(175 знак., 19.05.2024 05:09)
- 1. Ввел класс TGeneralSensor. Samx(512 знак., 19.05.2024 00:14)
- это ж надо так извратиться:) - Vit(19.05.2024 09:38)
- Почему извратиться? Наоборот, самый прямой путь - для чего это всё
в С++ и придумано. Ну вот вам другой канонический пример: Samx(402 знак., 19.05.2024 20:34)
- это другое:) вот возьмите дуину - там есть setup и loop. это похоже
на старт (с какой-то инициализацией и т.п.) и бесконечный процесс,
который по сути таки перезапускаемый набор операций. так вот у
процесса с идеологией run-to-complete (см. Quantum Leaps), т.е.
конечный автомат (finite state machine), котрый торчит из вашего
doStep() есть множество сходных названий, и, КМК, это скорее задача
(task). вы соорудили примитивный диспетчер, но собственно задачи
запихали по-глубже Vit(1204 знак., 19.05.2024 21:19)
- Т.е ужэ имея готовый набор функций 1-вире, вместо
sendByte1Wire(data), вы (условно) пользуете SendByteIIC(data)?
Нахуя, а главное, зачем? - mse homjak(19.05.2024 20:54)
- Наоборот - уже имея отлаженный код работы с I2C-датчиком, я просто
заменяю обращение к члену класса TI2CSoft на обращение к его
наследнику TI2CSoftBy1wire Samx(283 знак., 20.05.2024 12:13)
- Возможно, вы не поняли. В этом случае, через существующую линию
1wire, на дальнем конце, с помощью расширителя портов 1wire,
реализован I2C для опроса удалённого I2C-устройства через имеющуюся 1wire-сеть. - Nikolay_Po(19.05.2024 21:06)
- Это, как раз, понятно. Я не детализированно обозвал функции. типа
setStartIIC() и setStart1wire(). Ну и набор вверх до записи-чтения.
Т.е. это всё уже должно быть написано. Но вызов сделан не как
написал я выше, а как принято в ЦПП. Дажэ не так mse homjak(578 знак., 19.05.2024 21:33 - 20.05.2024 12:48)
- Как-то делал девайс с несколькими SPI на STM, ну и в нём заюзал
LWIP. Его отлаживать без дебажного выхлопа неинтересно было, ну и
пришлось заюзать ногу SWO, а оно пересекалось с одним из SPI и
подходящих свободных не было. Сделал SPI ногодрыгом, но выделил
указатель SPI-ного типа на какую-то левую память для SPIn и не
менял API и уже написанный код. - Vit(19.05.2024 22:01)
- Так в том и дело, заработало и хрен с ним. Эти механизьмы дают
лютый выхлоп в некой стандартной среде, на неком стандартном
оборудовании. Причом, чтобы низкий уровень ужэ кто-то написал.
Тогда, да, пусть лошадь думает, у неё голова большая. А так,
автоматика: нажал на кнопку, мешок на спине. Нажал другую, спина в
мыле. Ну, мож кому-то, действительно, помогает, ХЗ. - mse homjak(19.05.2024 22:02)
- Спасибо. Я уже было подумал что сам свихнулся :) - Cкpипaч(19.05.2024 09:52)
- вынужденно на ардуино для макетирования, там их язык приплюсованный - NAUT(18.05.2024 14:38)
- Пишет. Есть. По сравнению с C основные плюсы, наверное, в том, что
можно многое переложить на компилятор и стандартную библиотеку и не
устраивать закат солнца вручную. AlexG(79 знак., 18.05.2024 14:32)
- Для вас - точно нет. Только больше запутает. - SciFi(18.05.2024 14:29)
- +1 - Aleksey_75(18.05.2024 14:38)
- Подскажите, как сейчас правильнее подключать Ethernet трансформатор
к разъему? PoE нет. Не понятно зачем ставят резисторы с
конденсаторами. AlexBi(226 знак., 31.05.2024 11:07, MCU, картинка, полностью)
- WCH похоже решила добить 8битники. Новые мелкие процы и даже корпус
QFN12 сделали, 2х2мм с шагом 0.4 . - Andreas(29.05.2024 13:06, MCU, полностью)
- Поделитесь как удобно организовать хедеры .h в проекте на С? Есть
около 5 модулей, у каждого есть функции и переменные видимые как
extern, и есть только для внутреннего использования в модуле. Есть
#define с константами. Хочется все записать в .h каждого модуля для
простоты и подключать куда надо. Но пока делю - что для всех в .h
что локально в .c - Mty1(27.05.2024 20:13 - 20:18, MCU, полностью)
- Вопрос от дилетанта - какие есть программные или (желательно)
аппаратные решения обращения к внешней SPI или I2C памяти данных,
так чтобы процессор видел эту память как непрерывное линейное
адресное пространство по подобию работы с внешней SRAM с
параллельной адресной шиной и шиной данных? - Make_Pic(06.08.2022 16:56, MCU, полностью)
- Как уже написали - многие процы умеют это аппаратно. Если нужно
софтовое решение - то на Cortex-M с MPU можно попробовать
наколхозить софтверную эмуляцию (но тормозить будет). - LightElf(22.05.2024 22:59)
- Сейчас в моду входит QSPI. Например, у ST в некоторых из
STM32FF4xx, L4xx есть QUADSPI, а в L5 даже OCTOSPI, умеющие
работать в memory-mapped mode. - ЫЫyкпy(06.08.2022 17:47)
- у AT32F407/413 есть аппаратная поддержка SPI флешки (SPIM) с общим
адресным пространством. Но как все это работает пока не разбирался,
руки не дошли Aleksey_75(604 знак., 06.08.2022 17:37)
- Если говорить о программном, то какие могут быть вопросы, оно ж
очевидно... POV(368 знак., 06.08.2022 17:18, ссылка, ссылка)
- 1. Можно на C++ сделать класс, который скроет реальный обмен с
такой памятью и все будет выглядеть как чтение-запись обычных
переменных. 2. Бывает поддержка скрытия реального способа работы с
памятью в компиляторах, например, у Микрочипа в C30 (да и в IAR
EWAVR работа с eeprom аналогично сделана). 3. В некоторых МК бывают
аппаратные блоки для работы с SPI-флэшками. - AlexG(06.08.2022 17:10)
- Лучше расскажите, что изобретаете. Обычно все эти общие разговоры
уходят куда-то не туда и ни к чему не ведут. - SciFi(06.08.2022 17:07)
- Косяк PIC12F1822 вроде бы китайского происхождения. =L.A.=(629 знак., 13.04.2024 08:12, MCU, полностью)
- Пожалуюсь. Показалась заманчивой идеей заюзать аппаратный RTC в
AT32F437. Но не судьба - безбожно секунды убегают. Справедливости
ради тактируется от LSI 40 кГц. Я его при старте и частоту поточнее
вычислял с помощью таймера. Ничего не помогло. Вернулся на
программные часы. Они от 10млс тика системного работают. Вполне
точность. Только что батарейку не используешь. - vesago(15.05.2024 07:04, MCU, полностью)
- Изобретение велосипеда с прерываниями ar-elec(927 знак., 24.04.2024 16:16, MCU, полностью)
- классика с нереентерабельностью функции? - jaga-jaga(03.05.2024 18:27)
- Попробуйте использовать инструкции LDREX/STREX или их обертки
__LDREX/__STREX из CMSIS. На Cortex-M4 должно проканать. Немного
творчи надо только проявить в применении к uint64_t. - LightElf(24.04.2024 17:26 - 17:33)
- Похоже, проще всего сделать раздельные функции для фона и для
прерывания. Кстати, забавный факт (uint32_t)timer64 и cnt_old - это
одно и то же. - SciFi(24.04.2024 16:57)
- Решения есть. Но задача неясна. - SciFi(24.04.2024 16:18)
- Есть аппаратный таймер, считающий в пределах uint32. Хочется, чтобы
считал до uint64. Я использую функцию, которая видит, насколько
изменилось значение таймера между вызовами и добавляет эту разницу
в переменную uint64 - ar-elec(24.04.2024 16:25)
- 1) "заворот кишок" не анализируется (переход с 99 на 3) Zoro(142 знак., 24.04.2024 16:34)
- Как-то так, наверное: SciFi(434 знак., 24.04.2024 16:34)
- А зачем это в разных местах вызывать? Всё рано ж дельта плюсуется. - POV(24.04.2024 16:26)
- Ну ок, неправ я. Не написал явно, что результат этого func'а
возвращается и используется там, откуда его вызвали. Т.е. на самом
деле ar-elec(300 знак., 24.04.2024 16:40)
- Ну вот, уже что-то осмысленное. У задачи повышения разрядности
таймера, и получения правильного значения есть классическое
решение, без запрета прерываний вообще. il-2(489 знак., 24.04.2024 16:54)
- Да, согласен. Единственно, по переполнению таймера тоже прерывание.
Хотя, ему можно поставить приоритет ниже, чем у всех остальных,
чтобы они не блокировались, тогда, действительно, должно идеально
сработать. Спасибо! В эту сторону тоже смотрел, но до конца не
продумал. - ar-elec(24.04.2024 16:59)
- 3. Повторить чтение - убедиться, что прочитали оно и то же (что не
было в момент чтения переполнения счетчика). - POV(24.04.2024 16:58)
- И в гиперлупе и в прерываниях это нужно? Ну запрети прерывание синк
на пару тактов - чему это может повредить? - POV(24.04.2024 16:44)
- Ну, там не пара тактов, конечно, а пара десятков. Может, и ничего.
Критическое время порядка 10 мкс, частота процессора порядка 30-40
МГц. По идее, да, вроде, можно и запретить. Если ничего не
придумается, так и сделаю, но вдруг чудо? - ar-elec(24.04.2024 16:49)
- Пока Лагунов ныл, что не было процов в его время, другой олдскул
полярной ночью сделал проц на 26 чипах 155серии и компилятор асма к
нему ) Andreas(1 знак., 13.05.2024 00:20, MCU, ссылка, полностью)
- Коллеги, а а что есть из отечественных МК на ARM, RISC архитектурах
? Если уже это обсуждали, прошу ткнуть в ссылку. - Ruslan(02.05.2024 11:04, MCU, полностью)