![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
artemkad
-
Постов
2 442 -
Зарегистрирован
-
Посещение
-
Победитель дней
11
Сообщения, опубликованные artemkad
-
-
1 час назад, arhiv6 сказал:
(или что это там за витки внутри
Помнится, это не витки, а эдакая резьба для подстроечного элемента.
-
57 минут назад, tonyk_av сказал:
Если __PLC_params будет первой в списке переменных, размещаемой в секции, то она будет размещаться с самого начала.
Если есть, предположим, две переменные указанные для размещения в этой секции, но в разных объектных файлах, которая из них будет первой?
-
1 час назад, dimka76 сказал:
Если кроме самой __PLC_params в этой секции ничего не будет, то однозначно располагаться будет с самого начала секции.
А если несколько, да еще и в разных файлах проекта, то порядок размещения начнет зависеть от порядка линковки, который обычно устанавливает среда разработки на свое усмотрение. И тут, внезапно, оказывается, что идея разместить все переменные в отдельном файле оказывается не такой уж и плохой - там порядок будет зависеть только от порядка размещения в файле и все что есть будет видно по месту.
-
12 часов назад, tonyk_av сказал:
Думаю, людям, читавшим мануал на ld, понятно, что массив __PLC_params будет начинаться с адреса 0x08004000.
Чуток не так - __PLC_params будет располагаться в секции .plc_params, а вот с какого в ней адреса это предмет для уточнений.
5 часов назад, tonyk_av сказал:8 часов назад, Intel4004 сказал:Во-от, что и требовалось понять. Только без скаттер-файла толку от этого нет.
Вообще-то это дока на компилятор и атрибуты компилятора.
Кстати, забавно что базовые библиотеки описывающие доступ к железу которое обычно по фиксированным адресам к услугам линковщика тоже не прибегают.
-
31 минуту назад, AlanDrakes сказал:
Немного усложнённый вариант, уже с двумя транзисторами:
Нормальный вариант, но или нижний транзистор ставить npn(тогда вместо диодов резисторы) или перед всеми диодами их аноды через резисторы подключить на массу. Иначе диоды нормально не будут закрыты и возможны ошибки определения того, что стало причиной побудки.
33 минуты назад, AlanDrakes сказал:к пину микроконтроллера с внутренней подтяжкой к нулю.
Ну или так. Хотя далеко не все такое имеют....
-
3 часа назад, tonyk_av сказал:
то я не умею размещать переменные по нужным адресам. Может, хватит глупости говорить?
Это где я говорил что ты не умеешь? Я намекал, что подобное умение от тебя не замечено на этом форуме на практике. От тебя есть много слов "о всем хорошем и против всего плохого", но вот в коде который ты приводил "линковщик сам размещал секцию куда ему вздумается". Единственное что ты продемонстрировал это умение указывать выравнивание. Возможно ты и что-то другое умеешь, но тут это умение за тобой не замечено на практике.
20 минут назад, tonyk_av сказал:Как очень кривовато. Сомневаюсь, что Кейл не умеет делать это всё без вынесения в отдельный файл.
Да что ты говоришь... Ежу понятно, что умеет. Вот только по причинам указанным мной выше, а именно, по причине отсутствия вменяемой док и примеров, люди предпочитают ограничиваться слегка отредактированным куцым примером из доки который хоть как-то работает. А все остальное компенсируется средствами отлично описанного компилятора.
-
1 час назад, A.V.Avtomat сказал:
у, во-первых, заправленность зажигалки проверяется элементарно визуально, не обязательно электроникой,
А наличие искры - носом. Если газом воняет, но еще не взорвалось, то искры нет...
-
5 минут назад, dimka76 сказал:
Почему ради одного. Пускай редко, но и потом понадобится.
Как показывает практика следующий раз придется изучать заново.
6 минут назад, dimka76 сказал:Но там кажется эти секции прямо в GUI можно создать.
Только в самом простейшем случае. Все что сложнее надо править руками.
-
10 минут назад, jcxz сказал:
А задание размещения абсолютным адресом - потенциальные грабли на будущее.
Само собой - потенциально это грабли. Вот только альтернатива - изучать ради одного момента по-иди отски описанную доку на компоновщик без возможности найти адекватные примеры и с перспективой наделать еще и кучу маловразумительных ошибок и там. Потому многие и упрощают себе жизнь прямой адресацией из основного кода. Опять-же, Keil почему-то не считает файл компоновщика файлами проекта и при поиске их игнорирует.
-
18 минут назад, jcxz сказал:
Думаете - в процессе работы в прошивку могут внедриться вирусы? Прямо во флешь???
Зачем-же сразу вирусы... Прошивка может меняться, к примеру в процессе компиляции кода Forth-машины.😜
-
13 минут назад, jcxz сказал:
А что - прошивка может измениться "в процессе её записи в МК или в процессе работы внутри МК"??? Что это за прошивка такая, самоизменяющаяся?
Ну да, у многих программаторов есть команда прямой записи некоторых данных по конкретному адресу в записываемом МК. Т.е. он пишет прошивку из файла, но по указанному адресу меняет данные на требуемые. А требуемые данные могут формироваться в результате работы скрипта или программы.
12 минут назад, jcxz сказал:12 минут назад, artemkad сказал:Причем в обеих случаях линковщик сам размещал секцию куда ему вздумается
Не бывает такого. Чушь несёте.
Согласен - не совсем куда вздумается. В место адрес которого определяется объемом предыдущих откомпилированных и размещенных секций.
-
1 час назад, tonyk_av сказал:
Тут на форуме я уже несколько раз выкладывал примеры скриптов линковщика ld и примеры программ для gcc/g++, показывающие использование автоматического размещения и инициализации переменных во флэш STM32.
Несколько это пара. Причем в обеих случаях линковщик сам размещал секцию куда ему вздумается, а программе возвращались лишь данные по ее размещению. Ну а когда понадобилось разместить данные в конкретном месте из-за архитектуры памяти конкретного МК ты предложил ... поставить W25Q с FatFS
-
35 минут назад, tonyk_av сказал:
Я тоже не думаю, а просто знаю и пользуюсь.
Пока что, судя по предыдущим заявлениям, все ваше знание и пользование заключается в том, что "я не делаю ничего - как линковщик сделает так и лучше".
-
2 часа назад, tonyk_av сказал:
Потому, что линковщик лучше вас вычислит где разместить переменные.
Да вроде тут речь не о переменных, а о константе. Которая, к примеру, появится в прошивке в процессе записи программы в МК. Таким способом прописываются сериальники и калибровки. Не думаю, что линковщику лучше вычислит как изменится прошивка в процессе ее записи в МК или в процессе ее работы внутри МК.
-
48 минут назад, AlanDrakes сказал:
Простой вариант - разорвать минусовую цепь питания между батареей и устройством при помощи N-канального MOSFET'а. Кнопка через диод будет притягивать затвор к питанию. Второй диод через вывод микроконтроллера служит для удержания транзистора открытым.
Не, это стремный вариант - отключенный контроллер болтающийся кирпичом между питанием и затвором полевика скорее всего не даст себя нормально отключить.
-
3 минуты назад, Метценгерштейн сказал:
так работает.
Видишь у тебя резистор обозначен желтыми точками - через него течет ток, а в предыдущем варианте он серый - через него ничего не течет потому как он не подключен
-
57 минут назад, Метценгерштейн сказал:
нет, что- то не то
То, то... Красная точка на проводе к резистору - он не подключен да и ток через него не указано что течет
-
47 минут назад, Метценгерштейн сказал:
а почему тут не меняется на выходе напряжение при замыкании- размыкании кнопки?
Подозреваю надо с эмулировать нагрузку подключив резистор к Vcc иначе падать будет очень долго
-
6 минут назад, Метценгерштейн сказал:
Там если симулировать- как смотреть напряжение на выходах?
Подозреваю снизу слева выдает ошибку. Отключи конденсатор 10мкФ параллельно батарейке - с точки зрения того симулятора такое недопустимо.
-
1 час назад, Метценгерштейн сказал:
Только нижний транзистор- не надо ли от базы на землю еще резистор 100К, чтобы закрывался быстрее.
Теоретически - надо, а практически в пределах индустриального исполнения(температуры ниже 85 градусов) и необходимых там скоростях запирания - нет. Биполярник управляется током базы а потому для современных транзисторов можно и без резистора. Там и для верхнего для базы не очень нужен, но там вполне законно может возникнуть желание поставить р-канальный полевик, а потому места для разрядного резистора надо иметь.
1 час назад, Метценгерштейн сказал:Номиналы просчитаны? Или подбирать надо?
Там о-о-о-чень широкие диапазоны возможных резисторов. Это схема класса "+\- лапоть - сойдет". Будет зависеть в основном от глубины желания сэкономить на потреблении ключа и нежелания выбирать транзисторы. В целом при питании 5В все 20к вполне можно увеличивать до 100к. Если нет желания делать принудительное периодического отключения из-за залипшей кнопки, 1к на pwr_on можно делать таким-же как и на кнопках.
1 час назад, Метценгерштейн сказал:И транзисторы какие использовать? BC856, BC817?
Сойдет.
1 час назад, Метценгерштейн сказал:5 часов назад, Plain сказал:Наверное, имеет смысл сказать подробнее — кнопка управляет транзистором или стабилизатором через элемент ИЛИ, ко второму входу которого подключён выход МК — такой элемент может быть явным в виде ИС, диодным или даже резисторным.
А для чего это городить? Есть схема от artemkad выглядит рабочей?
Там описан общий принцип в том числе и моя схема с резистивным ИЛИ.
1 час назад, Метценгерштейн сказал:Есть ли супервизор, чтобы выполнял подобное
Как показывает практика супервизор это более редкий зверь чем транзисторы
-
1
-
-
12 минут назад, Метценгерштейн сказал:
не очень понял. Задача- держим 5 сек, после чего МК включается. Тут как это реализовать?
МК включается сразу и отсчитывает сколько тебе надо. Если больше 5 секунд держится кнопка - продолжает работать. Если короче - отключается вместе с кнопкой.
-
5 минут назад, Vasily_ сказал:
Сделать как советуют Plain и artemkad. Только поставить управляемый стабилизатор, тогда и транзисторы не нужны.
с управляемым стабилизатором надо как-то разделить сигналы от соседних кнопок. К примеру диодами. С транзистором не надо т.к. его база больше 0.7В не поднимается
.
-
45 минут назад, Метценгерштейн сказал:
Тогда пока не знаю. Какой- то таймер. Не потребляет. Зажали кнопку на 5 сек- он постоянно выдал 1.
Сам от рабочего МК отсчитал свои 10 сек, подал на GPIO, та ресет этому таймеру нажала- он опять выключился и снял выход 1. МК обесточился.
Пока такие мысли.
Почти классика
После нажатия на кнопку контроллер включается, сам подает уровень на pwr_on, что надо делает после чего подает на эту ногу ноль отрубая все питание.
-
Зачем ИМС? Парой транзисторов рвущих собственное питание можно обойтись.
14 минут назад, Метценгерштейн сказал:и дергать от МК ресет ногу 555
Если с целью снижения потребления, то это еще надо проверить сколько жрет при нажатом Reset.
Keil 5.38 Разместить константу по заданному адресу во Flash
в Keil
Опубликовано · Пожаловаться
Как ни странно, но Keil передает линковщику объектные файлы в виде *.o, а потому к порядку описанному в проекте это отношения не имеет.
А вот IAR да, сам передает список и потому уже он устанавливает порядок линковки