Есть глобальные переменные которые находятся в файле Global.h Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы .с имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично
Вообще то НЕ ДОЛЖНО было работать. Какое отношение #ifndef имеет к ПЕРЕМЕННЫМ? Это условие К ДЕФАЙНАМ, а не к переменным. Я канешна не великий знаток Си, но правила требуют объявления внешних к файлу глобальных переменных через extern. И никаких других способов я не знаю. А так да, я тоже сделал аналогичный финт на XC8 года два назад (версия вроде бы 2.01), но когда решил повторить это в Кейле для АРМов, то был немедленно послан матом эррором. ЗЫ. К вопросу о целесообразности заявленного. Проблема с глобальными переменными лишь говорит о том, что код написан ..... (вставьте сами, чтобы не обижаться). Глобальных переменных много быть не должно. А остальным не в падлу и extern приклеить.
Ага, иначе бы и в версии 2,5 не заработало. С этим косяком я уже разобрался, больше не забываю подключить xc КРАМ, всё же компиляторы микроси и XC очень отличаются, по началу я даже офигевал от того как он это делает, а именно XC каждый файл .с он обрабатывает отдельно а потом склеивает всё вместе. Микроси же все инклуды подключает в общую кучу получая один файл и его разом компилирует за одно и оптимизирует. За счёт этого не надо каждый раз инклудить <xc.h> в каждом .с файле, и в экстернах смысл пропадает постольку компилятор в итоге видит только один склеенный файл main.c в котором все переменные и все функции проекта.
в экстернах смысл пропадает постольку компилятор в итоге
Не нужно собственную частную целесообразность распространять на стандарт языка. Не все что удобно будет безопасно. Объявление переменных - это выделение памяти, а определение литералов и собственных типов - это просто инструкции препроцессора. Поэтому в этих РАЗНЫХ процессах действуют РАЗНЫЕ правила. И если Микрочип решил причесать вольности в компиляторе, то это их право и святая обязанность. Иначе переносимости не добъешься.
Я абсолютно не спорю с Микрочипом, я про то, что насколько сильно микроси отклонились от языка, такое чувство (при переносе кода), как будто с китайского на татарский переводишь. Хотя не спорю, микроси удобнее и старт быстрее.
Цитата:
Не все что удобно будет безопасно.
Поэтому и слажу с него, глюки оптимизатора задолбали настолько, что готов все свои проекты перенести на МПЛаб. А кстати насколько язык c позволяет партировать код из MPLAB в среду CubeIDE, что планируется в ближайшем будущем.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Я не пользуюсь средой STM-а. Предпочитаю Keil. В Keil переносится на ура. Но нужно понимать, что переносится только аппаратно независимый код. То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Ботлоадером никто из гармонии случайно не пользовался? Я проект создал, залил, а где программу взять которая бы взаимодействовала с этим загрузчиком или она где то в самой среде MPLAB'a. Нашёл на просторах интернета пакет с программой PIC32UBL.exe (AN1388_Source_Code_2014_02_14), но это старьё уже не работает
Ещё один момент выяснил дойдя до bootloader'a, настройки я храню за пределами основной прошивки, чтобы при перезаписи настроек не потереть прошивку, делал это вот так
Когда я открыл файл прошивки то несколько приофигел, если я использую одну константу компилятор ещё переваривает, если 2 константы с разными адресами, то тупо делит прошивку и часть ее располагает между этими константами, где по идее ничего лишнего быть не должно --- Основная прошивка должна лежать по адресу 0x1D000000-0x1D011000, после деления получаем 0x1D000000-0x1D00ECD0 и 0x1D020000-0x1D022010, константы располагаются по адресам 0x1D020000, 0x1D021000, 0x1D022000, и как раз оказываются в прошивке. А в диапазоне: 0x1D00ECD0 - 0x1D020000 одни FF
Спасибо за наводку, поскольку среда для меня новая, ещё не во всём разобрался. Зарезервировал память строкой: -mreserve=prog@0x1D020000:0x1D023000, но теперь константы туда положить не могу
Добрый день. Подскажите, при написании программы на ассемблере, используются большие или маленькие буквы? Я повторил пример из самоучителя, там было написано большими буквами, у меня повылазили ошибки при компиляции. Видел, что многие используют маленькие буквы. Размер букв имеет значение в ассемблере или нет?
Для написания резервированного синтаксиса ассемблера не имеет. Для остального кода зависит от настроек среды, но по дефолту имеет значение. То есть имена регистров и своих переменных чувствительны к регистру.
Вопрос немного смешной, но как переключиться на другой проект? Я нажимаю кнопкой мыши по проекту, но у меня просто открывается содержимое этого проекта, и все. А я по прежнему остаюсь на нижнем проекте.
Поддерживает. Только это не MPASM, а PIC-AS. Если вам нужен MPASM, на котором написан код на скрине, то придется поставить MPLABX версии максимум 5.35. ЗЫ. В догон, для пущего понимания. MPASM всегда являлся самостоятельным продуктом, который к Си-компиляторам не имел никакого отношения и поставлялся СО СРЕДОЙ РАЗРАБОТКИ (MPLAB/MPLABX). Вплоть до MPLABX версии 5.35, после чего он был выпилен из среды и предложено вместо него пользоваться ассемблером Си-компилятора XC8, который называется PIC-AS, который функционирует и в бесплатной версии компилятора. Но синтаксис проекта у PIC-AS несколько иной. В доках на компилятор есть мануал на этот ассемблер. Учите матчасть...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения