- Имеется некое серийное устройство с STM32F407. На некоторых
образцах иногда слетает прошивка. Вроде бы во время коммутации
питания. Долго ловили экземпляр со слетевшей прошивкой и открытым
кодом. Поймали. Выяснилось, что обнулились (именно стали равны
нулю) первые 9 (девять) байт флеша. Сиречь, инициализация стека и 3
байта из 4 первого адреса таблицы векторов прерываний. Все
остальное ОК. my504(19 знак., 11.07.2023 13:07, ARM, полностью)
- Слегка разгреб текучку и вернулся к вопросу. Повторил недельный
тест (15 мин вкл/5 мин выкл) для трех вариантов кода. 1. В коде
вообще нет обращения к контроллеру флеша в части стирания записи,
включая разблокировку-блокировку. 2. Вставил
разблокировку-блокировку, но стирания-записи нет. 3. Есть полный
функционал стирания-записи. Все тесты делал с BOR=3
(Ris=2,92v/Fal=2,83v). Всего тестил 7 плат. Варианты 1 и 2 в
течении 5 рабочих дней выдержали тест. Вариант 3 слетел my504(388 знак., 07.08.2023 12:10, картинка, картинка)
- У меня тоже есть версии - аппаратные и программные. Взять
обязательно сбоившую плату. Costic(551 знак., 12.07.2023 15:34)
- Для справки мне. А на чем, какая IDE разрабатываете? Стартап-код
свой или тот что шел с IDE? - RxTx(12.07.2023 14:08)
- Я тут отдельно напишу свое видение, в т.ч. отрезюмирую то, что тебе
уже другие тут написали, и что ты упорно игнорируешь. il-2(1519 знак., 12.07.2023 08:07)
- А ресет точно гарантирует, что ни чего в м/к не будет работать?
Вроде как отладчик может запуститься при активном ресете. И вообще
часто ресет рассматривается как одно из прерываний. AlexBi(699 знак., 12.07.2023 10:03)
- Кстати, любопытсва ради. В сигнналовских 51ых VDD рекомендовалось
получать от VDA через дросель или резистор. (мы через резистор
делали). А тут как? VDD от VDA? Или вообще отдельные стабилизаторы? - symbions(12.07.2023 09:54)
- в одном девайсе, дабы не иметь таких гемороев фпынцыпе. Nikolay801_(243 знак., 12.07.2023 09:12)
- У меня такое ощущение, что вы просто решили мне рассказать о чем то
о своем... Вы вообще знакомы с законом Ома? Вы в состоянии
посчитать какое напряжение упадет на резисторе 10 Ом между AVDD и
VDD при имеющемся потреблении AVDD? Вы бы хоть постеснялись такую
пургу писать.... остальное комментировать нет никакого смысла.
Кстати, флеш в моем случае НЕ СТИРАЕТСЯ, а ЗАПИСЫВАЕТСЯ. Причем
побайтно подряд. А в том самом коде побайтно, но с шагом в слово. - my504(12.07.2023 09:04)
- У
палкирезистора 2 конца. Вы их зачем-то перепутали. Посчитайте по закону
ома, что там может упасть при потреблении эээ... 100мА со стороны
VDD. И какое имеет значение, стирается там оно или записывается. Но
вы можете продолжать упорствовать. Кстати, я привел 2 варианта
источника проблемы. Других не бывает. Вы упорно пытаетесь их
игнорировать, и искать какой-то непонятный свой вариант. Не буду
больше мешать. В поисках неведомого иногда совершаются великие il-2(9 знак., 12.07.2023 09:27)
- Я ничего не путал. Очевидно, что фильтр стоит НА АНАЛОГОВОЕ
питание. То есть ток течет из цифрового потенциала в аналоговый.
Это не требовало комментариев. Из контекста было понятно. И 100 мА
контроллер не жрет. Там максимум на все про все 30...40 - my504(12.07.2023 14:37)
- Кстати, про резистор. Уже много лет ставлю там ферритовую бусину.
По-моему, именно её обычно и ставят на всяких демо-платах. - SciFi(12.07.2023 09:31)
- Какой тип/номинал бусины, если не секрет? И конденсатора, после
нее. - AlexBi(12.07.2023 10:04)
- FBMH1608HM102-T + 0.1uF + 1uF. У бусины высокий импеданс в широком
диапазоне частот, выбирали для других дел, сюда поставили
паровозиком, и как-то прижилось. Есть аналог у Sunlord, кстати, но
на кратно меньший ток. SciFi(2 знак., 12.07.2023 10:16, ссылка, ссылка)
- Спасибо! Параметры у бусины зачетные. - Evgeny_CD(12.07.2023 15:05)
- Мне бусины не понравились. Для тех, к которым производитель давал
SPICE-модели, проводил моделирование. Оказывалось, что при
включении в цепь питания промеж конденсаторами (в моих случаях, с
моими номиналами и с моей нагрузкой) - звенят. Есть резонансная
частота с горбом +6..+10дБ на сотнях кГц, до пары МГц в зависимости
от бусины и ёмкостей. В итоге, ставлю бусины для ЭМС, но для
подавления резонансов, последовательно, дополнительно, резисторы
0.8..1.5Ом. - Nikolay_Po(12.07.2023 10:37)
- 1,6 Ом сопротивление постоянному току. Иы тоже подобное ставили, но
в нашем случае разницы с резистиором в 2 Ома не заметили。 - symbions(12.07.2023 10:25)
- товарищ прав в главном. ЕСЛИ в коде есть момент, что может быть
флэш разблокированной и туда что-то записано, то надо рыть всё же
сюда. Вот если б в коде вообще намеков не было на разблокировку
флэш, то рыть в электрическую часть. - Лaгyнoв(12.07.2023 09:13)
- Есть множество свидетельств вот именно того, что вы описываете.
Применительно к МК Silabs C8051 (бывший Cygnal). По-моему, я тоже с
этим сталкивался, просто давно это было. То есть ваш аргумент
разбивается о реальность. Но можете не верить, конечно. - SciFi(12.07.2023 09:08)
- Если б я что-нибудь понимал в этом вашем мёде, я бы... NAUT(494 знак., 11.07.2023 20:40)
- BOD включен? - 0men(11.07.2023 16:40)
- После анализа всего что вы написали, я полагаю что причина порчи
FLASH единственна: исчезновение питания во время записи во FLASH.
Вопрос:исчезновение питания во время записи возможно? То что
портится совсем другая страница, что в коде железно прошиты и адрес
и страница не должно смущать, это не программный сбой а аппаратный.
При записи FLASH отрабатывает конечный автомат, сбой которого при
исчезновении питания непредсказуем. - RxTx(11.07.2023 15:35)
- Кстати, есть вариант подрихтовать кувалдой и в продакшн: прописать
в Option Bytes BOR Level 3. - SciFi(11.07.2023 14:10)
- К кварцу и его конденсаторам идет земля. Этот земляной провод
должен быть подключен к ближайшей земляной ноге процессора, и
только. Т.е. через этот проводник не должно течь никаких других
токов. Конденсаторы питания(керамические) для процессора должны
быть максимально близко к этим выводам процессора. Нет ли на плате
замкнутых контуров по земляным цепям(полигоны не в счет) ? - Sl(11.07.2023 14:00)
- Записи во флеш нет на протяжении штатной схемы работы ? - sav6622(11.07.2023 13:09)
- В режиме, в котором слетает прошивка, обращения к записи во флеш
нет. То есть сама функция присутствует в коде. Однако она пишет в
задефайненый адрес (он не вычисляется) и в ней жестко присутствует
стирание страницы по этому же адресу. И этот адрес очень далеко от
начала. - my504(11.07.2023 13:22)
- Но нет ли разрешения на изменение флешки? Ниже верно сказали -
закомментировать нахер вообще весь код, что может флешку
разлочивать. - POV(11.07.2023 13:46)
- Я уже написал, что в функции записи во флеш имеется совершенно
линейный код в котором ПЕРЕД ЗАПИСЬЮ выполняется СТИРАНИЕ СТРАНИЦЫ.
Но попробовать можно. Правда все осложняется нерегулярностью
происходящего. На стенде лежат два десятка плат питающихся от
источника с таймером включения/выключения от сети и порой нужно
ждать неделю и больше. - my504(11.07.2023 14:18)
- Самое неприятное с закомментированием функции записи в том, что
непонятно что делать потом с результатом. Каким бы он ни был. Я не
могу убрать запись в продакшене. Это сохранение конфигурации
устройства при настройке. - my504(11.07.2023 15:10)
- А аппаратный патч произведенных плат возможен? - RxTx(11.07.2023 15:42)
- Это даст понимание. Софт портит сам себя или иное. Без этого дальше
думать не о чем. - POV(11.07.2023 15:11)
- Это точно не софт. Доступ к функции записи длинен и зело труден.
Для штатной записи нужно получить шифрованный пакет от ПО с
правильной командой на запись, которое (ПО с интерфейсным блоком)
на стенде в принципе отсутствует. Там лежат два десятка плат с
поданным питанием и маленькими петлями в разъеме антенн,
отключенными интерфейсами и индикацией и лишь на расстоянии
полметра от них включен передатчик с крошечной петлей в качестве
антенны заставляет работать эти my504(124 знак., 11.07.2023 15:26 - 15:28)
- ну да, это если логикой нормальной работы пользоваться... а если
прикинуть что при сбое, просто рандомно переходим по памяти и
попадаем на функцию записи, то всё становится гораздо проще... и
да, при ЭМСе у нас, у нас даже осциллограф некоторые функции
вспомнил =)) у него открылись функции более старшей модели, видимо
пролетело и записалось куда не нужно... sav6622(127 знак., 12.07.2023 08:49)
- Ну не верит человек. Что поделать, у нас свобода вероисповедания.
Каждый волен игнорировать те свидетельства, которые не вписываются
в его картину мира. - SciFi(12.07.2023 08:56)
- Дело не в картине мира. дело в минимизации времени для поиска
проблемы. Помимо всего прочего, вся эта история возникла не на всем
выпущенном тираже этих плат. А лишь на одной партии. Поэтому есть
версия и с проблемными чипами. А пока утром одна плата слетела с
совершенно идентичном повреждении флеша, хотя на всех BOR
максимальный. Я дописал в функцию записи во флеш пару входных
uint23 аргументов с проверкой их значения перед исполнением
стирания-записи. Типа такой двойной my504(51 знак., 12.07.2023 09:48)
- Я делал кучу блокировок дополнительных программных как можно ближе
к конкретной асм инструкции записи, пофиг, только вероятность
немного снижалась. ИМХО, Vit прав, говно под кварцем, мы или смд
3225, или выводной HC49S и приподнимаем на 1..2мм. - Andreas(12.07.2023 10:33)
- Это не так работает. Он прыгнет сразу на код разблокировки флеша, в
обход двойного ключа. Закон Мерфи же. Считайте, что PC
инициализируется случайно и притягивается к самому вредному коду.
Если уж делать такие штуки, я бы делал что-то типа того, что
описывает коллега выше. Максимально затруднить процу возможность
прыгнуть сразу на разблокировку флеша. SciFi(1 знак., 12.07.2023 09:53, ссылка)
- Я тоже так думал (ссылко)... POV(334 знак., 11.07.2023 15:31, ссылка)
- +1. Для начала надо диагностировать. Так-то при некотором умении
можно сделать прошивку, которая сама себя залажает и без глюков
железа. - SciFi(11.07.2023 15:17)
- Временно выкиньте данный код записи во флеш ВООБЩЕ, и
перепроверьте... - sav6622(11.07.2023 13:45)
- Если во время коммутации питания что-то жёсткое с цепями питания
происходит, не следует удивляться таким чудесам. Чтобы исключить
эту версию, можно повесить внешний супервизор и посмотреть, будет
ли разница. Кстати, на днях видел блуждающий HardFault (правда, на
STM32L431), и единственным видимым объяснением была просадка Vdd на
0,5 В на единицы микросекунд, пока Vdda оставался стабильным. Некая
нагрузка коммутировалась рядом. - SciFi(11.07.2023 13:29)
- Rockchip RK3568. 2x Gigabit Ethernet и тд. Никто не имел счастья с
ним работать? Samum421(12 знак., 27.07.2023 11:10, ARM, ссылка, полностью)
- IAR7 + GD32F107 + J-Link. Иар7 не поддерживает этот контроллер.
Проект собран под STM32F107, файл линкера от него же. Ставлю
компилировать под Кортекс-М3. В настройках J-Link ставлю GD32F107. Все вроде работает, шьется. Но, на высоких уровнях
оптимизации, иногда сваливается в ХардФалаут. Что я делаю не
так? - IBAH(27.07.2023 19:37 - 29.07.2023 12:56, ARM, полностью)
- Полазал отладчиком. Насколько я понимаю ругается на команду пуш,
вызов функции LL_GPIO_Init по кривому адресу. Вопрос - как
избежать? я так понимаю надо как-то настроить линкер IBAH(1 знак., 03.08.2023 18:53, картинка)
- Делаешь не так вот что: не выясняешь точную причину HardFault.
Обычно там есть все средства, чтобы её вычислить. - SciFi(27.07.2023 19:40)
- +1 - RxTx(27.07.2023 20:03)
- Причина не в коде. В Кейле все нормально. - IBAH(27.07.2023 19:45)
- причина именно в коде, просто в кейле другая оптимизация, она
допускает промахи как и яровская на низких уровнях - 0men(27.07.2023 20:57)
- В этом то и вопрос, почему в кейле работает? Где-то что-то нужно дополнительно указать. - IBAH(29.07.2023 12:59)
- Например, компилятор может неожиданно реагировать на Undefined
Behavior. Своими глазами видел, как компилятор применял чудесатую
оптимизацию адресной арифметики, потому что по каким-то
соображениям диапазон входных значений был ограничен. Когда в жизни
встречалось другое значение, арифметика вычисляла дикий адрес, и
вот тебе HardFault. А другой компилятор может этого не делать, и
твой косяк останется незамеченным. И да, это именно косяк в
исходнике. - SciFi(30.07.2023 14:55)
- Нет такого вопроса, это у тебя в голове какой-то пробел. HardFault
вызывает какая-то АССЕМБЛЕРНАЯ инструкция, выполняемая в нетипичных
условиях с нетипичными значениями. Никто не обещает, что разные
компиляторы Кейл и ЙАР должны генерить одинаковый код. А источник
проблемы все равно - в исходнике на Си. Самый распространенный
случай - невыровненный доступ к памяти, который возникает из-за
преобразования типов указателя. У Cortex-M3 есть инструкции,
которые могут выполняться il-2(411 знак., 30.07.2023 10:34)
- Совместимы только 103, в других даже адресация регистров иная. - Visitor(29.07.2023 13:56)
- Покорнейше прошу прощения. Моя обычно подключать внутрисхемный
отладчик, смотреть в регистры, вычислять точное место, где
процессор споткнулся. Думал, все так делают. Снова прошу пардону. - SciFi(27.07.2023 19:53)
- Пришел десяток CH32V003 в soic8 с Ali по 13 руб. Показались
удобными для всяческой мелкой хренотени. Ну и как у китайцев
положено, их "рыба" из MRS неработоспособна :) Генератор на сей раз
сразу выставил в SYSCLK_FREQ_48MHZ_HSI. Рубится при попытке printf
(). Небось ремап портов не настроен. Напрягает, что отладчик в MRS
завешивает эту MRS наглухо. До перезапуска. Ну и сам чип в дауне.
Стереть flash можно только через WCH-LinkUtility в режиме
передергивания питания (по Гyдвин(43 знак., 26.07.2023 18:12, ARM, полностью)
- Отбой. Работает. Особенности чипа. Вкурил, увидев вот эту пеструю
картинку. В ДШ то все уныленько ;) Гyдвин(1 знак., 27.07.2023 15:07 - 28.07.2023 22:02, картинка)
- Есть альтернатива (8051) в ЧиД по 58 рублей - SH79F084BL (SOIC-16),
SH79F1624BL - 74р., SH79F1612BX (TSSOP-20) - 70р. - Costic(28.07.2023 21:58)
- Щас уже подорожали вдвое Kpoк(1 знак., 26.07.2023 20:26, ссылка)
- 50 шт за 496р? Арихметико - лженауко? - =AlexD=(26.07.2023 22:21)
- Я брал тут -> Гyдвин(1 знак., 26.07.2023 22:02, ссылка)
- Там еще 45р за "доставку", так что 18 за штучку получается. Но все
равно заманчиво. Был бы там USB или хотя бы CAN... А то весь смысл
дешевизны теряется. - Eddy_Em(26.07.2023 23:18)
- Дык подключайся ;) Гyдвин(1 знак., 27.07.2023 15:35, ссылка)
- Нет уж, софтовую реализацию аппаратных протоколов я считаю
идиотизмом. Лучше взять МК, где есть аппаратный USB, чем городить
хрен знает что. Eddy_Em(129 знак., 27.07.2023 15:55)
- Кстати, вот здесь все, как ты любишь - по красноглазиковски :) Гyдвин(1 знак., 27.07.2023 15:40, ссылка)
- Интересно, spi вроде есть, а на самом деле нет! Забыли SCK
доложить. m9rs(1 знак., 30.07.2023 10:49, картинка)
- Зато можно произвольную битовую последовательность гнать с МОСИ
аппаратно. Интересно, SPI в этом камне может подряд байты
передавать, загружая в буфер следующий раньше, чем закончится
предыдущий? - Nikolay_Po(30.07.2023 23:34)
- Не забыли, у А4М6 его нет. enc(1 знак., 30.07.2023 22:13, картинка)
- Ну то есть SPI есть, но без SCK - там же одинаковые кристаллы. - LightElf(30.07.2023 23:45)
- К шиту доверия больше чем к "рисовальщикам". - enc(31.07.2023 09:20)
- По идее, чтобы MOSI, всё же, использовать на вывод потока бит,
придётся настраивать несуществующий (не разваренный с кристалла)
вывод SCK, чтобы сдвиг бит, всё же, тактировался. - Nikolay_Po(30.07.2023 23:51)
- Придётся. Но я сварщик не настоящий - как там у этих зверей ремап
устроен - не знаю. - LightElf(31.07.2023 00:05)
- Просто скопировать ассемблерные инструкции неразваренного вывода с
более жирного чипа. Ну, или красивее, добавить его в свой
заголовочный файл, как у жирного чипа и настроить так же. - Nikolay_Po(31.07.2023 00:48)
- Норот, гораздо проще сделать обычный бит-бэнг. Ибо на максимальных
скоростях, всё равно надо ждать "бизи". - mse homjak(31.07.2023 09:53)
- Один бизи на 8 интервалов или каждый интервал вручную считать - по
моему, разница налицо. - Nikolay_Po(01.08.2023 08:07)
- Busy считывать в цыкле, значит, проц, полюбому, занят. Какая
разница, чем. А если пользоваться прерываниями, то на максимальной
СЦК, накладные от прерывания будут , где-то, в размер 8-битной
транзакцыи. Смотрите это и следуюсчее сообчение с картинками.
Обратите внимание, как отвисает CS на 8-битной посылке. От такая
реакция на прерывание RXRDY. В неё умещается передача ещо одного
байта. Если сыпать байтами, то всё очень не очебачно. Оптимально по
скорости, это жэлезный mse homjak(79 знак., 01.08.2023 10:35, ссылка)
- У меня типичная проблема, что вывод по SPI надо делать без пауз и
задержек, с четкой постоянной скоростью. Иначе светодиодики глючат
;-) На NUC970 пришлось кернеля перчить, шоб оно 6.25мегабита
выдавало без разрывов. Жизнь контроллера светодиодов нелегка ;-) - LightElf(31.07.2023 13:02)
- Это я еще с месяц назад скачал. Когда-нибудь попробую таки начать с
v003, а там, глядишь, кто-нибудь что-нибудь подобное и для других
камней выбросит. Уж слишком много времени понадобится тратить,
чтобы самому такое сбацать. Eddy_Em(140 знак., 27.07.2023 16:02)
- Напротив, blinky занимает всего 500 байт с ch32v003fun, \\ Где-то
разнузданно заржали пикоманы. - Kpoк(27.07.2023 15:48)
- Недорогой WCH LinkE -> Гyдвин(1 знак., 26.07.2023 22:09, ссылка)
- а на что из STM32 он похож? Я в soic-8 работал только с STM32G031. - Лaгyнoв(26.07.2023 18:16)
- Прошу помочь советом по ADuC7020BCPZ62. Суть проблемы: имеется
только hex для указанного MCU, проект не сохранился. Загрузка через
переходник USB-UART сложностей не вызывала. Но по недосмотру были
закуплены и впаяны ADuC7020BCPZ62i (с загрузкой через I2C). Донгла
такого естественно нет. Как проблему решать? - alexem(28.07.2023 20:13, ARM, полностью)
- Скажите, а сеггер жлинки китайские окончательно попячены
обновлениями ПО или можно на каком-нибудь али взять что-нибудь
подобное чтобы виделось в cubemxIDE? - NAUT(26.07.2023 16:47, ARM, полностью)
- printf(), __io_putchar, _write(), --specs=nosys.specs,
--nano.specs и вот это вот всё: хочу сделать печать на UART при использовании printf(). Что для этого надо для arm-none-eabi? Понятно, что можно сделать через snprintf() и свой буфер, но есть впечатление, что это изобретение велосипеда.
Вот только беда - к существующему нет внятного описания. Или я
поисковикам вопрос не смог задать правильно. - Dingo(13.04.2023 15:34, ARM, полностью)
- Так получилось в итоге? - RxTx(27.07.2023 20:04)
- Немного по поискам, может кому-то облегчит их и сократит путь. И о
причинах. Главное - хотелось как и задумано пользоваться printf() как стандартной и всем понятой функцией просто подключив <stdio.h>. У меня - не получилось. Потому что не "просто вывести на
консоль", а консоль это stdout, который есть файл, который есть устройство, ... в доме который
построил Джек. В моём случае FILE (в т.ч. stdout) содержит поле _write с Dingo(524 знак., 15.04.2023 18:05, ссылка)
- Конкретно printf() в конце концов вызывает write(), и тебе надо
переопределить write() так, как тебе надо. VVB(315 знак., 14.04.2023 06:38)
- Эта штука компиляторазависимая, для ИАР нужно переопределить
putchar() для stdout, для вывода по дескриптору переопределить
fputc() IBAH(2256 знак., 13.04.2023 19:22)
- В песках что-то такое было давным-давно >>> SciFi(1 знак., 13.04.2023 15:49, ссылка)
- Переопределяешь функции передачи символов. Чтобы перебить
библиотечные... что-то типа Putchar ... POV(90 знак., 13.04.2023 15:38, ссылка, ссылка)
- stm32.. счетчик импульсов. Ничего из rfm008 понять не могу. Как
настроить 3 канал таймера 4 на счет импульсов? - POV(26.07.2023 15:45, ARM, полностью)
- RTC в STM32F405: оно несовместимо ни с time_t ни со struct tm. Во
что они курили когда рожали RTC который не совместим со
стандартными структурами? И еще: не пойму в чем прикол запихивать в
кремний календарь ? Транзисторы девать некуда ? - 3m(25.07.2023 19:17, ARM, полностью)
- Вот что им помешало сделать просто двоичный счетчик в дополнение
этому изврату или вместо него? - LightElf(26.07.2023 12:35)
- Я как почитал документацию к RTC STM32F103, вот уж знатно
подохренел: это ж каким рукожопым надо быть, чтобы так убого
сделать? Eddy_Em(447 знак., 26.07.2023 11:14, ссылка)
- то, что обычный счетчик не положили, то, грусть. с другой стороны,
не помню внешних мелкосхем RTC со счетчиком. а форматы и кремний
дружить руками нужно. посмотрите форматы старого-доброго MC146818 -
там и месяцы 1...12, и день недели 1...7, и т.д.. а ещё часто
старшие битики зачищать на всякий случай нужно, ибо кремниеваятели
ничего не гарантируют всякими магическими don`t care. более грустно
когда значения считываются из асинхронных счетчиков и/или фризятся
сами счетчики на Vit(25 знак., 26.07.2023 08:40)
- так вроде это (календарь) везде в STM32. Мне нравится. :-) Кварц
прицепил - и даже високосные года соблюдает. - Лaгyнoв(25.07.2023 21:18)
- представление даты времени в BCD формате довольно стандартно - 0men(25.07.2023 21:08)
- Схему гальваноразвязки для SWD знает кто ни будь? Велосипед
изобретать не охота. Пару штук СТ-линков спалили из за Y капа в БП
и отсутствии заземления:-) - Visitor(24.07.2023 09:14, ARM, полностью)
- Если вам совсем лень, то берете I2C-шный изолятор с
однонаправленным SCL. Собственно и вся развязка, главное подтяжки
не забыть поставить. lloyd(40 знак., 24.07.2023 13:37)
- Klen предлагал всем нечто опторазвязанное. - Evgeny_CD(24.07.2023 13:26)
- Лол. Сколько можно говорить, кидай постоянный провод между корпусом
компа (читай средней точкой Y) и массой всех своих БП. Я как-то
провод от лени не кинул, глядь, а уже поздно. Сцуко, в фирменном
стлинке STMка дым пустила, вздулась, а позже обнаружил что вынесло
два USB порта на мамке. Сейчас вот придется перепаивать мать, а я
на ней работаю. - RxTx(24.07.2023 10:54)
- Я просто приобрел недорогой китайский модуль гальваноразвязки USB.
Втыкаю через него отладчики и "недоосциллограф". Так выходит
универсальнее... - Гyдвин(24.07.2023 10:47)
- Берете три одноканальных изолятора, один на чтение, другой на
передачу, третий - на включение драйвера передачи. lloyd(69 знак., 24.07.2023 10:04)
- Есть же изолированный ST-LINK. SciFi(1 знак., 24.07.2023 09:23, ссылка)
- stm32 и exti - не сразу начинает реагировать на фронты, пропускает
первые сигналы от внешнего источника (секунды не реагирует!)... POV(219 знак., 19.07.2023 15:09, ARM, полностью)
- Вопрос, как изнутри программно вызвать перезагрузку всего
микроконтроллера CortexM ? - sav6622(07.07.2023 09:28, ARM, полностью)
- Норот! Кто пишет под MounRiverStudio, что там за ебанутая система?
Подключаю в проект "*.h" файл с переменными и из других инклуденных
"*.с" эти переменные не вижу. Подключаю в эти "*.с" "*.h" файл с
определением переменных, студия начинает ругаться на множэственное
определение. Шо за ебала? - mse homjak(17.07.2023 11:31, ARM, полностью)
- Кароч, промблемма рассосалось, всем спасибо за участие. - mse homjak(17.07.2023 17:25)
- Где-то в одном месте в сишнике есть определение глобальной
переменной и без extern, NAUT(171 знак., 17.07.2023 15:35)
- а зачем у вас переменные в *.h? - RED_DRAGON(17.07.2023 15:23)
- Покажи краткий пример. VVB(107 знак., 17.07.2023 11:57)
- примерно так: mse homjak(342 знак., 17.07.2023 12:41)
- То есть вот так не умеет парсить? Неудивительно. Место для
переменной data выделяется и в модуле main и в модуле fun. Надо
где-то в одном месте выделить. VVB(209 знак., 17.07.2023 12:44)
- Должно быть вот так (тест на внимательность) Cкpипaч(237 знак., 17.07.2023 13:10)
- Нет, походу, не умеет. Ругается, как обычно. - mse homjak(17.07.2023 12:50)
- Надо убрать int data = 0; или int data = 1; в одном из модулей и
оставить только в одном. Я специально разные значения присвоил,
чтобы подчеркнуть, что компилятор не умеет за человека думать и
присваивать "правильное" значение (он не знает, какое: 0 или 1).
Переменная data примет нужное значение до запуска main() в "c
runtime". - VVB(17.07.2023 12:54)
- переменной не присваивается значение при определении. Переменная
принимает участие в вычислениях и к ней можэт быть доступ из разных
Ц-файлов. Что там присвоит ей компилятор до майн, значения не
имеет. mse homjak(24 знак., 17.07.2023 13:04)
- Тут вы не правы. Переменной всегда присваивается значение при
"определении". Если значение явно не присвоено, то присваивается
"0". VVB(441 знак., 17.07.2023 13:23, ссылка)
- Это я понимаю, упоролся ужэ. Я объявляю переменную в Н-файле и подключаю его в майн. По идее, этого должно
быть достаточно. Но МРС требует, чтобы этот Н-файл был подключён в
Ц-файле, где используется переменная, иначе, ругается, что она не
объявлена. А при подключении, ругается, что она переопределена. У
меня щас возникло нехорошее предчувствие, посмотрел внимательно на
заготовку проекта МРС-студии, а там такое: mse homjak(244 знак., 17.07.2023 13:48)
- Дык эта... Китайцы ни при чём. Это пророки Керниган и Ричи при чём.
И они ни в чём не уиноуаты, ибо пророки. А вы учите их священное
писание, и буде вам щастя. - SciFi(17.07.2023 14:06 - 14:32)
- Дык, ладно бы я, сирый и убогий. Тут местный гуру был необычайно
озадачен. Вот, ради прикола, совсем пустой проект: И сообщение, что
всё совсем плохо: mse homjak(316 знак., 17.07.2023 14:24, ссылка, ссылка)
- Переменная должна быть И объявлена (extern), И создана. Причем
создана ТОЛЬКО в одном месте. В вашем примере, или в addon.c, или в
main.c нужно добавить: Cкpипaч(64 знак., 17.07.2023 16:00)
- Всё правильно компилятор говорит. Всё-таки обратитесь к священным
текстам. Там вам разъяснят, что такое объявление, что такое
определение, в каких местах и в каком числе это всё должно
присутствовать. В этой ветке об этом уже говорилось, но вы успешно
проигнорировали. - SciFi(17.07.2023 14:30)
- Баним в майне addon() и всё, никто ни на что не ругается. Особенно,
на то, что в майне есть ундефинед референсе. - mse homjak(17.07.2023 14:29)
- Я извиняюсь за глупый вопрос, а #ifndef в *.h файлах имеется? - reZident(17.07.2023 11:41)
- Это нормально. ctl+f по всем файлам. Смотришь, где ещё вглубь это
всё. - Бapбoc(17.07.2023 11:39)
- А что "цтрл-ф"ить? В одном случае он не находит переменную, в
другом, говорит, что несколько раз переопределена. всё работает,
если всё писать в майн.ц. Это, бля, чо за дичь? - mse homjak(17.07.2023 11:44)
- При сборке консоль что выводит? Ругается на сборку или сам
индексатор? Что во всплывающей подсказке при наведении на ошибку? - Dingo(17.07.2023 12:21)
- похоже, что месье таки забыл, что выделить место (и, если нужно,
при этом задать значение) можно один раз в пределах области
видимости. а extern указывает, что место выделено где-то, потому в
хедере переменные без extern хоть и допустимо описывать (выделять
место), но только при включении хедера не более одного раза. - Vit(17.07.2023 12:10)
- Попробуй пересоздать проект, и снова туда добавить файлы, как-то
эта хрень очень похожа на новый Crosscore от андевиц... он на базе
эклипса... эта скотина иногда путается в своих же файлах, где-то
видит, где-то не видит (точнее та часть что добавляет, она видит
что файлы уже учтены в проекте... а та часть что собирает - говорит
нет и всё тут...и никакие условные @make clean не помогают)... и
всё, помогает только пересоздание проекта с импортом-вставкой всех
файлов... - sav6622(17.07.2023 11:50)
- Там, где-нибудь, в конце определений надо поменять 0 на 1. Или
наоборот. - Бapбoc(17.07.2023 11:48)
- Подскажите, как правильно использовать systick в risc-v для
формирования точного интервала? Peter_M(550 знак., 12.07.2023 17:14, ARM, полностью)
- Подниму еще разок тему. Приобрел в Чип-Дип "до-кучи" пяток
CH32V203F8P6 (еще не ведал о "токсичности"). Так и не понял как
заставить этих выкидышей от WCH отлаживаться в MRS. Отладка в
студии виснет после заливки. В DS есть картнка "BOOT0=GND". Т.е.
ожидается, что чип сразу переходит в загрузчик после сброса. Но и
загрузчик тоже не подает признаков жизни - ни usb, ни uart.
Cтереть/залить прошивку с помощью WCH-LinkUtility получается. И оно
работает. Куда еще копать? - Гyдвин(27.06.2023 14:20, ARM, полностью)