- Про FLASH в CH32V203. Вкратце: похоже, что при частичной записи
страницы, автоматически стирается и перезаписывается вся страница
256 байт. Подробности ниже. Nikolay_Po(2328 знак., 02.04.2025 06:26, MCU, полностью)
- В чем собственно смысл? Память программ любого микроконтроллера не
предназначена для хранения часто меняющихся данных. Для этого есть
EEPROM. Не стоит натягивать сову на глобус. Любая эмуляция - это
для данных которые очень редко меняются. Ставьте EEPROM или FRAM
как требуется в задаче. Поскольку вы пытаетесь эксплуатировать , то
чего нет в даташите, то завтра результат непредсказуем. Если по
умолчанию много записей, сам бог велел внешнюю память - Driver_gv(04.04.2025 19:44)
- Для истории, из канала RISC-V Телегам Nikolay_Po(2862 знак., 04.04.2025 10:39, ссылка)
- сделайте кольцевой буфер, - дописывайте без стирания страницу, пока
она не заполнится (не приблизится к концу), смещение адреса, ессно
тоже надо сохранять, или писать в конец вектора данных сигнатуру
маркера окончания (ну или просто определять по признаку "FF-до
конца"). стирать страницу можно заранее, когда понятно, что
следующий вектор не поместится, когда проц ещё на полноценном
питании. - Adept(02.04.2025 13:28)
- Мне кажется что вы решаете несуществующую проблему. Для WCH не
пришлось размазывать данные вообще. Что за желание экономить ресурс
таким образом? - General(02.04.2025 08:19)
- Зависит от задачи. Бывает, нужно часто писать и максимально долго.
Большой объём, допустим, с половину набортной флеши. Задача
логгера, например. Nikolay_Po(338 знак., 02.04.2025 09:32)
- Если иметь буфер ОЗУ 256 байт и скидывать его в флеш в случае
шухера, все эти схемы могут работать. Но проще поставить SPI флешку
и делать всё это привычным образом. - SciFi(02.04.2025 10:48)
- Вот читаю я эти ваши страдания и не понимаю одного: щас ЕЕПРОМ с
конским объёмом стоит копейки. Ресурс её, на конские порядки,
превышает ресурс флэши ЦПУ. Её физически нельзя испортить по сбою,
если сделано правильно. Не нужны всякие половые извращения с
прерываниями при записи. Нахуя, а главное, зачем, использовать
потанцэвальный источник геморроя в товарной продукцыи? - mse homjak(02.04.2025 10:46)
- у многих CH32 флэш устроена специфически - есть область из которой
программа при старте копируется в теневое ОЗУ и оттуда выполняется,
но теневое ОЗУ не перекрывает весь флэш, остается большой кусок.
Это прямо провоцирует придумать для этого куска флэш какое-то
применение. - AlexG(02.04.2025 14:50)
- Время доступа к данным из EEPROM на порядки превосходит время
доступа к данным из флэша. С точки зрения ЭМС отдельная м/с,
работающая на высокой частоте, источник геморроя. Общие размеры
могут быть ограничены. - AlexBi(02.04.2025 11:19)
- Когда надо "доступать", то грузят оптом в память. Это ещо быстрее
получается. С точки зрения ЭМС, это всё хня какая-то. Ну, разве
что, поставить ЕЕПРОМку в полуметре от проца и постоянно хреначить
на 10-20МГц. Что касаемо размеров, то найти место под ТССОП или
СОТ-23, не проблема. - mse homjak(02.04.2025 12:52)
- К ЭМС у меня, слава Богу, обычные требования и нет внешних, не
развязанных линий, но габариты ограничены весьма. Nikolay_Po(14 знак., 02.04.2025 11:24, картинка)
- Кварец, зараза, всё испортил :-) - SciFi(02.04.2025 11:26)
- И ЭМС, и габариты. Но родная плата похуже будет с т.з. ЭМС. Так что
работать будет. Главное, чтобы от -20 до +60 была стабильной
частота UART'а. - Nikolay_Po(02.04.2025 11:33)
- да на эту плату в три раза больше можно, чем стоит :)) как
правильно сказали - выкиньте HC49S, поставьте KX7, поставить
FRAM/MRAM soic8, на четырёхслойке, вангую, можно разместить все
компоненты "жопа к жопе", а при подобной плотности, и на двуслойке
всё получится :) Про вторую сторону скромно умолчим, подозреваю,
что там также всё нерационально. - Adept(02.04.2025 11:54)
- Там дорожек много. Не без труда в два слоя уместил. А если мельчить
и частить, придётся на более строгие технормы производства
переходить, что дороже. - Nikolay_Po(02.04.2025 14:10)
- Полно кварцэв размером 3,2Х2,5. И генераторов, что ещо экономит
место. И ЕНки в СОТ23 - mse homjak(02.04.2025 13:16)
- Я по цене оптимизировал. - Nikolay_Po(02.04.2025 14:05)
- вот нагуглился SMD кварц совсем недорого: SciFi(1 знак., 02.04.2025 14:10, ссылка)
- И вообще, вы не следили за ходом моей мысли. Корпус кварца
аутентичен кварцам, применяемым в других узлах системы. Поэтому
брал в таком корпусе и с частотой, кратной УАРТу. Потом, для
односторонности, взял его же, но не выводной, а поверхностный.
Только лишь потому. Nikolay_Po(161 знак., 02.04.2025 18:06)
- Частота не кратная стандартному RS-232. И вообще, собранная плата у
меня сегодня уже появилась в руках. Так что начинаю работать уже с
предсерийным образцом. Nikolay_Po(1 знак., 02.04.2025 17:50, картинка)
- И TPL730-3.3... - mse homjak(02.04.2025 17:46)
- Не позволяют габариты. Хочу односторонний монтаж. При тщательной
проработке, геморрой будет обнаружен и вылечен превентивно. - Nikolay_Po(02.04.2025 10:52)
- Эмуляция EEPROM - вполне себе обычная задача. Wear leveling - один
из важных аспектов этой задачи. - SciFi(02.04.2025 08:37)
- Дык это прямо написано в доках, не? - SciFi(02.04.2025 07:55)
- Я бы не надеялся на "дозапись" уже записанной области флешь без
стирания. Выпустят новую ревизию чипа - там будет все по другому.
Кстати, даже STM32F1 не поддерживала "дозапись". Если попробуешь на
записанное место (где нет 0xFFFF) записать что-то другое, в
рассчете что стертые "1" превратятся в "0", то результат на самом
деле будет непредсказуемым. Я пытался на нем делать оптимизацию
записи - если новое значение при записи изменяет биты только с "1"
на "0", но не il-2(124 знак., 02.04.2025 07:40, ссылка)
- Аналогичная перезапись в режиме совместимости, по два байта, без
стирания, даёт ровно записываемые байты, без искажения как в
примере с "быстрой" записью страницы. - Nikolay_Po(02.04.2025 06:50)
- Вот вывод тестовой программы (перезапись в "быстром" режиме, сразу
256-ю байтами, все 0xFF): Nikolay_Po(9698 знак., 02.04.2025 06:45)
- Вопрос про FreeRTOS. Надо с CPU в схему подавать сигнал Alive. Что
проц годен, не завис и жив. Частота 500Гц или выше. Казалось бы
беру задачу, и делаю переключение пина. Квант времени в ОС 1мс,
если все другие задачи отдадут свободное время в ОС, то задача
будет запускаться с частотой 1кгц, и все норм. А если несколько
задач туго займуться счетом, то задача Alive не получит время раз в
1мс, верно? - Mty1(06.04.2025 23:49, MCU, полностью)
- Представлен TI MSPM0C1104 — самый маленький в мире микроконтроллер
за 20 центов DH(1127 знак., 16.03.2025 21:46, MCU, ссылка, полностью)
- Китайцы переплюнули Zikon(1 знак., 06.04.2025 17:11, картинка)
- Несколько ядер, вероятно в будущем, будут правилом. Слухи ходят, в
следующем будет wifi. jlm(1 знак., 18.03.2025 13:33, ссылка)
- MSPM0C1104 MSPM0C1104(1 знак., 15.03.2025 08:51,
, ссылка)reZident
- Запустил Coremark на CH32V307. Получилось 3.06 Coremark/MHz (150
MHz). Запустил его же в высоких адресах (0x60000+, то есть из
медленного флеша) - получилось в 14.36 раз медленнее. Мануал что-то
рассказывает про "enhanced read mode", но включение этой штуки
улучшило последнюю цифру всего на 2%. Update: ошибочка вышла, не
2%, а 10%. - SciFi(29.03.2025 09:13 - 03.04.2025 22:00, MCU, полностью)
- Товарищи, это все что снизу Ленин писал? - Make_Pic(01.04.2025 12:42, MCU, полностью)
- Ребята доброй пятницы всем, АЦП отдает данные 18 бит, 18-ый бит
знаковый можно как-то быстро привести его к виду int32_t или надо
все биты старшие в ручную 18 битом заполнять, ARM Cortex-M23. - PeterD(28.03.2025 14:01, MCU, полностью)
- Друзья, а может знаете какой хитрый алгоритм поиска устройств на
шине RS-485 по серийному номеру? Какие-ньбудь маски накладывать.
Чтобы не перебирать все серийные номера, а как-нибудь пошустрее. - vesago(26.03.2025 14:09, MCU, полностью)
- Так, что это за такое! А робота спросить забыли!... POV(6 знак., 28.03.2025 13:39, картинка, картинка)
- Dmx512 RDM и его процедура Discovery , всё давно украли до вас - DMX512(27.03.2025 00:53,
)
- Обычно в таком случае сначала по-одиночке назначают устройствам
адрес: подключаем его единственным к отдельной шине и
широковещательной командой назначаем. А если прямо уже в готовой
сети, выше отличный вариант уже предложили: давать
широковещательную команду "серийник ХХХ, теперь твой адрес ЙЙЙ"… А
потом уже по этому адресу проверять - вняла ли железка. Правда,
как-то это буторно - по серийнику задавать адрес. Eddy_Em(326 знак., 26.03.2025 18:08)
- Странное сочетание "RS485" и "серийный номер". Казалось бы, что
общего? Может, желаемый протокол озвучите? - max(26.03.2025 17:33)
- Есть конторка Доза, дозиметры какие-то лабает... у них свой
протокольчик DiBus (открытый? .. но файло с описанием у меня было
откуда-то) по RS-485 искать девайсы с проописанными адресами. - POV(26.03.2025 17:22)
- Можно попробовать так: Tyмблep(215 знак., 26.03.2025 17:18)
- напрашивается что-то типа LordN(154 знак., 26.03.2025 15:20)
- Метод половинного деления. Например ищем минимальный номер,
спрашиваем всех "есть кто с номером меньше N/2?" Кто есть передает
ноль. Если ответы наложатся, все равно что-то примется, и мы узнаем
что есть кто-то. Если ни кто не ответит, узнаем, что ни кого нет. И
так пока не останется один. Его как-то исключаем, что бы в
следующей итерации он не отвечал, и опять ищем минимальный номер по
той же схеме. Если устройств много ищем сперва минимальный, потом
максимальный, с учетом AlexBi(114 знак., 26.03.2025 15:11)
- если делать по уму, то одиночные запросы/ответы не годятся. Нужен
пакетный обмен с контрольными суммами, а это кратно увеличит время
(банально, более длинные пакеты, если приходить к какому-то
стандарту общему, более-менее универсальному синтаксису, то навскидку это
минимум 5-6 байт. соответсвенно время транзакции Adept(728 знак., 26.03.2025 17:40)
- А ответы не наложатся потому как на этот запрос есть задержка
ответа, зависящая от номера - General(26.03.2025 15:46)
- Спасибо. Я имел дело с алгоритмом похожим. Но со стороны
подчиненного устройства. Хост два числа высылал. Если серийник
больше или равен одному числу и с другой стороны меньше или равен
другому числу, мое устройство на шину посылало ноль. Работало
шустро, но я не знаю по какому принципу софт на хосте формировал
эти два числа. И команды, чтобы такой-то серийник освободил шину не
было. - vesago(26.03.2025 15:19)
- Это не CAN конечно, но оттуда можно идеи дернуть. Andreas(2 знак., 26.03.2025 14:34, ссылка, ссылка)
- Если драйверы выдержат коллизию - то можно взять идейки от Dallas
One Wire. - LightElf(26.03.2025 14:27)
- Похоже, китайцы решили запустить
козу в капусту ардуину в автомотив - в ближайших ларьках наблюдаю платки на
ESP32-S3R2 (c TWAI и PSRAM). Vit(409 знак., 28.03.2025 03:35, MCU, ссылка, картинка, полностью)
- вниманию интересующихся. на сайте WCH обнаружил то чего ранее не
видел CH32M030 - ядро qkV3B ( что характерно RV32IMCB - то есть с битовыми инструкциями как положено микроконтроллеру,
чего у них мы не наблюдали ранее) + перbферия для силовой электрики
- драйdер мостов 48v. 4 операционника. 3 компаратора и еще какая то
токовая херь которую я не понял. одним словом интересно. klen(2 знак., 24.03.2025 01:47, MCU, ссылка, картинка, полностью)
- Как Так. Свернул все темы, интересное наблюдение и статистика.
Микроконтроллеры в общем то никого не интересуют. Driver_gv(167 знак., 11.03.2025 22:22, MCU, полностью)
- А что удивляться? Кортексы изъезжены вдоль и поперёк, проще ИИ
спросить про них. А RISC-V только заходит, вот про него и основные
вопросы. VladislavS.(109 знак., 13.03.2025 08:36)
- это проблема из разряда "все люди разные, один я одинаковый" - LordN(12.03.2025 13:58)
- Вам кто-то руки держит и не даёт завести интересные темы? - =AlexD=(12.03.2025 11:30)
- Контингент на сахаре устоявшийся и не юный, а чем старше тем
ворчливей, да и отток по естественным причинам никто не отменял.
Форма общения - форум, общение по определению неспешное и заточены
форумы под ПК. Но жизнь бежит, технологии тоже, смартфон стал
основным средством общения. Большая часть общения ушла туда и в
чаты, там все быстрей, там и молодых поболе, не факт что качество
информации лучше, но кто ж на это смотрит. - petrd(12.03.2025 08:37)
- Свежей крови нет. Подавляющее большинство имеет определённый опыт в
своих сферах, поэтому и обсуждать нечего. Кто-то и расти дальше не
хочет, поэтому и помочь остальным не может. Например, я задавал ряд
вопросов по стеку lwIP. По сложным моментам никаких идей не
получил. Ушёл гуглить на электроникс и зарубежные форумы. То есть в
данной теме явный просадок компетенций. Нужно новых людей
привлекать, а на сахаре остаётся старый костяк пользователей, новых
я почти не вижу, отсюда FDA(12 знак., 12.03.2025 00:41)
- по моим ощущениям подавляющее большинство здесь присутствующих,
обладает солидным опытом и знаниями, поэтому вопросов часто и не
возникает. Вопросы возникают в двух случаях Adept(698 знак., 12.03.2025 00:07)
- Ну, дык, актуальное. Чо обсуждать какой-нить АВР или 51? А вот ВЦХ,
канхфэтка, вот и обсуждают. - mse homjak(11.03.2025 23:38)
- Так и есть. Разве что программирование ещё выделяется на общем
фоне. Нет Жени - почти нет и технических новостей. - Toчкa oпopы(11.03.2025 23:28)
- Здесь-то никого не интересуют? Сильно сомневаюсь. Это ж не
какой-нибудь электроникс.ру убогий! - Eddy_Em(11.03.2025 23:24)
- "Никого не интересуют" совершенно не синоним "не возникает
вопросов", вам не кажется? - Cкpипaч(11.03.2025 22:56)
- Коллеги, кто силен в языке си? Нормально ли так писать? vesago(155 знак., 06.03.2025 08:42 - 08:46, MCU, картинка, полностью)
- Задача какая? в чём смысл? Я для флажков использую анонимные
юнионы, очень удобно, если нужно всё сбросить или проверить. vpv.vpv(280 знак., 10.03.2025 08:00, картинка, картинка)
- В общем поговорил я с людьми, подумал. Решил отказаться от юнионов
в сложных конструкциях. Скользкая эта дорожка. Паккеды для
переносимости не хочу использовать. А без них опасно не на 8ми
битниках. - vesago(06.03.2025 12:43)
- IAR EWAVR 8.10.1 меня послал с этим кодом и в режиме C и в режиме
С++ - AlexG(06.03.2025 12:41)
- Ещё бывает полезно указать выравнивание структуры. alho(27 знак., 06.03.2025 11:18, ссылка)
- Спасибо за вопрос. При случае - попробую. У меня везде свежие
компиляторы, должно быть удобно и уже достаточно надёжно. - Nikolay_Po(06.03.2025 10:02)
- Кстати, в конкретном случае typedef позволил бы избавиться от
union'а: Eddy_Em(860 знак., 06.03.2025 09:12)
- Нормально, конечно. А еще, gcc позволяет вложенные функции (и я
этим регулярно пользуюсь). А вот шланг, зараза, считает их
недопустимыми… Eddy_Em(517 знак., 06.03.2025 08:59, ссылка)
- Эдуард, скажи, как ты решаешь такую задачу: нужно иметь возможность
обращаться к набору данных как к отдельным, именованным параметрам,
так и как к массиву байт. Например: Nikolay_Po(764 знак., 06.03.2025 10:17)
- вот abivan(485 знак., 06.03.2025 19:24, ссылка)
- #define xxx yyyy - =L.A.=(06.03.2025 13:36)
- При передаче байт приводите адрес структуры к указателю на байт и
работайте себе с указателем. VladislavS.(1 знак., 06.03.2025 12:00, картинка)
- все эти юнионы это лишние сущности. abivan(224 знак., 06.03.2025 11:42, картинка, картинка)
- Чаще всего я просто делаю явное преобразование в (uint8_t) и
работаю как с массивом данных. Eddy_Em(743 знак., 06.03.2025 11:31)
- Кстати, звучит как вопрос, на который дипсик дал бы неплохой ответ. - SciFi(06.03.2025 10:27)
- Вроде бы анонимные структуры и объединения вошли в стандарт C11. Но
GCC разрешает давно. Яр тоже, очевидно. Остальные надо посмотреть. SciFi(1 знак., 06.03.2025 08:46 - 08:55, ссылка)
- Держи вора! Solo(1 знак., 09.03.2025 14:30, MCU, ссылка, полностью)
- Есть ли какие то +/- надежные методы определения разности фазы двух
сигналов (~ 100 Гц), реализуемые в микроконтроллерах. BlackMorda(155 знак., 09.03.2025 09:30, MCU, полностью)
- Имеем STM32H743 и внешний WDT ожидание сброса 1.6 сек. Запускам
процедуру стирания сектора, время стирания превышает время сброса.
Имеем постоянный сброс во время стирания. Как разруливать такой
процесс? Можно как то делать сброс во время процедуры стирания? - Make_Pic(04.03.2025 13:23, MCU, полностью)
- Там жеж два банка флеша, с независимым выполнением/стиранием? - LightElf(04.03.2025 14:59)
- я бы попробовал повесить линию сброса собаки на аппаратную ножку
таймера и перед обновлении флеша конфигурировал бы его на
автоматический ногодрыг по переполнению, к примеру. По-моему
однажды сконфигурированный таймер, до аппаратного ресета будет
работать независимо от состояния флеши (не пробовал, но возможно
да) Навсегда так делать не надо (а то пропадёт смысл вачдога, но на
период обновления флеши, - вполне), кстати само Adept(445 знак., 04.03.2025 14:48)
- Выселить функцию которая взбадривает собаку в ОЗУ, там она может
исполняться во время стирания. И прерывания запретить, а то
придется еще таблицу прерываний и обработчики тоже в ОЗУ
переселять. - ЫЫyкпy(04.03.2025 13:33)
- Ногами можно дёргать при помощи таймеров или DMA. И должен быть
способ исполнять кусочек кода в ОЗУ, пока флеш висит. - SciFi(04.03.2025 13:30)
А что, ВДТ нельзя выключить на время работы с флэшем? Или
настроить на бОльшее время. Пардон, "внешний"! - mse homjak(04.03.2025 13:27)
- Три раза порывался написать, строчил текст на страницу.. и удалял
(уже вопросу неделя). Вопрос-то для телепатов, а так никто помочь
не может моей личной тупости. Надеюсь попытка изложить в 4й раз
поможет самому осознать косяк.. POV(922 знак., 28.02.2025 21:40, MCU, картинка, полностью)