MPLAB X IDE

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB X IDE

Сообщение КРАМ »

[uquote="alex_",url="/forum/viewtopic.php?p=4281716#p4281716"]Есть глобальные переменные которые находятся в файле Global.h
Всё объявлено через #ifndef, чтобы было подключено только 1 раз, чтобы файлы имели доступ к объявленным переменным. Почти в каждом .c файле идёт подключение к файлу Global.h, в компиляторе XC32v2.5 всё работало отлично[/uquote]
Вообще то НЕ ДОЛЖНО было работать.
Какое отношение #ifndef имеет к ПЕРЕМЕННЫМ? Это условие К ДЕФАЙНАМ, а не к переменным.
Я канешна не великий знаток Си, но правила требуют объявления внешних к файлу глобальных переменных через extern. И никаких других способов я не знаю.
А так да, я тоже сделал аналогичный финт на XC8 года два назад (версия вроде бы 2.01), но когда решил повторить это в Кейле для АРМов, то был немедленно послан матом эррором.
ЗЫ. К вопросу о целесообразности заявленного.
Проблема с глобальными переменными лишь говорит о том, что код написан ..... (вставьте сами, чтобы не обижаться).
Глобальных переменных много быть не должно. А остальным не в падлу и extern приклеить. :)))
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

Deoptim писал(а):alex_, <xc.h> подключали?
Ага, иначе бы и в версии 2,5 не заработало. С этим косяком я уже разобрался, больше не забываю подключить xc :)))
КРАМ, всё же компиляторы микроси и XC очень отличаются, по началу я даже офигевал от того как он это делает, а именно XC каждый файл .с он обрабатывает отдельно а потом склеивает всё вместе. Микроси же все инклуды подключает в общую кучу получая один файл и его разом компилирует за одно и оптимизирует. За счёт этого не надо каждый раз инклудить <xc.h> в каждом .с файле, и в экстернах смысл пропадает постольку компилятор в итоге видит только один склеенный файл main.c в котором все переменные и все функции проекта.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB X IDE

Сообщение КРАМ »

[uquote="alex_",url="/forum/viewtopic.php?p=4282067#p4282067"]в экстернах смысл пропадает постольку компилятор в итоге[/uquote]
Не нужно собственную частную целесообразность распространять на стандарт языка.
Не все что удобно будет безопасно. Объявление переменных - это выделение памяти, а определение литералов и собственных типов - это просто инструкции препроцессора. Поэтому в этих РАЗНЫХ процессах действуют РАЗНЫЕ правила.
И если Микрочип решил причесать вольности в компиляторе, то это их право и святая обязанность. Иначе переносимости не добъешься.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

Я абсолютно не спорю с Микрочипом, я про то, что насколько сильно микроси отклонились от языка, такое чувство (при переносе кода), как будто с китайского на татарский переводишь. Хотя не спорю, микроси удобнее и старт быстрее.
Не все что удобно будет безопасно.
Поэтому и слажу с него, глюки оптимизатора задолбали настолько, что готов все свои проекты перенести на МПЛаб.
А кстати насколько язык c позволяет партировать код из MPLAB в среду CubeIDE, что планируется в ближайшем будущем.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB X IDE

Сообщение КРАМ »

[uquote="alex_",url="/forum/viewtopic.php?p=4282106#p4282106"]из MPLAB в среду CubeIDE[/uquote]
Я не пользуюсь средой STM-а. Предпочитаю Keil. В Keil переносится на ура. Но нужно понимать, что переносится только аппаратно независимый код. То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4282109#p4282109"]То есть инициализацию, драйверы и обработчики прерываний нужно писать заново.[/uquote]
Это да, знаем, проходили :)
mikroC for PIC32 -> mikroC for ARM
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

Ботлоадером никто из гармонии случайно не пользовался? Я проект создал, залил, а где программу взять которая бы взаимодействовала с этим загрузчиком или она где то в самой среде MPLAB'a. Нашёл на просторах интернета пакет с программой PIC32UBL.exe (AN1388_Source_Code_2014_02_14), но это старьё уже не работает :facepalm:
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

Ещё один момент выяснил дойдя до bootloader'a, настройки я храню за пределами основной прошивки, чтобы при перезаписи настроек не потереть прошивку, делал это вот так

Код: Выделить всё

const unsigned char __attribute__((address(0x1D020000))) ConstTST []= {1,2,3,4,5,6,7,8,9,0};
Когда я открыл файл прошивки то несколько приофигел, если я использую одну константу компилятор ещё переваривает, если 2 константы с разными адресами, то тупо делит прошивку и часть ее располагает между этими константами, где по идее ничего лишнего быть не должно :kill:
---
Основная прошивка должна лежать по адресу 0x1D000000-0x1D011000, после деления получаем 0x1D000000-0x1D00ECD0 и 0x1D020000-0x1D022010, константы располагаются по адресам 0x1D020000, 0x1D021000, 0x1D022000, и как раз оказываются в прошивке. А в диапазоне: 0x1D00ECD0 - 0x1D020000 одни FF :facepalm:
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: MPLAB X IDE

Сообщение Аlex »

alex_ писал(а):то тупо делит прошивку и часть ее располагает между этими константами, где по идее ничего лишнего быть не должно
Кто ж такое Вам сказал, что не должно ?
Вы зарезервировали для своих нужд эти адреса ? Скорее всего - нет. А компилятору пофиг, свободно - он забрал :))
Аватара пользователя
alex_
Опытный кот
Сообщения: 781
Зарегистрирован: Сб июн 01, 2013 22:24:21
Откуда: ПФО

Re: MPLAB X IDE

Сообщение alex_ »

Спасибо за наводку, поскольку среда для меня новая, ещё не во всём разобрался.
Зарезервировал память строкой: -mreserve=prog@0x1D020000:0x1D023000, но теперь константы туда положить не могу :facepalm:
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: MPLAB X IDE

Сообщение Аlex »

Вы если вмешиваетесь в адресацию, то делать это необходимо с помощью скрипта линкера.
Александр МК
Родился
Сообщения: 6
Зарегистрирован: Пт окт 28, 2022 14:28:02

Re: MPLAB X IDE

Сообщение Александр МК »

Добрый день!
Подскажите, как передать extern char * _Lidata; из main.c в *.s?

Пробую использовать даташит, поэтому не заморачиваюсь с именами переменных. Проц в макете 877А


#include "main.h"
#include <xc.h>
//==============
unsigned int volt;
float inp_volt;
float akb_volt;
float out_volt;
unsigned char inp;
unsigned char akb;
unsigned char out;
unsigned char log, low_akb;
unsigned char uart;
unsigned char temp;
#define Baud_rate 9600
volatile unsigned char temp2;
extern char * _Lidata;

void barfunc();

void UART_Initialize()
{
TRISC=0X00;




Программа на асм:

#include <xc.inc>

psect barfunc,local,class=CODE,delta=2 ; PIC10/12/16
; psect barfunc,local,class=CODE,reloc=2 ; PIC18

global _ds19 ; extern of bar function goes in the C source file
_ds19:

movwf PORTA

; movf PORTA,w ; here we use a symbol defined via xc.inc


return
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB X IDE

Сообщение PenguinChik »

Добрый день.
Подскажите, при написании программы на ассемблере, используются большие или маленькие буквы? Я повторил пример из самоучителя, там было написано большими буквами, у меня повылазили ошибки при компиляции. Видел, что многие используют маленькие буквы. Размер букв имеет значение в ассемблере или нет?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB X IDE

Сообщение КРАМ »

Для написания резервированного синтаксиса ассемблера не имеет. Для остального кода зависит от настроек среды, но по дефолту имеет значение. То есть имена регистров и своих переменных чувствительны к регистру.
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB X IDE

Сообщение PenguinChik »

Вопрос немного смешной, но как переключиться на другой проект? Я нажимаю кнопкой мыши по проекту, но у меня просто открывается содержимое этого проекта, и все. А я по прежнему остаюсь на нижнем проекте.
Вложения
Прин.jpg
(207.79 КБ) 112 скачиваний
Александр МК
Родился
Сообщения: 6
Зарегистрирован: Пт окт 28, 2022 14:28:02

Re: MPLAB X IDE

Сообщение Александр МК »

Это просто.
Наводите на проект, правой кнопкой - свойства - сделать главным проектом.
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB X IDE

Сообщение PenguinChik »

Спасибо, я то уже пол-часа мучаюсь

Добавлено after 1 minute 52 seconds:
Кстати компилятор ХС-8 - он только для языка си?
Александр МК
Родился
Сообщения: 6
Зарегистрирован: Пт окт 28, 2022 14:28:02

Re: MPLAB X IDE

Сообщение Александр МК »

Да и для Си 8- бит.
Аватара пользователя
PenguinChik
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Ср дек 01, 2021 15:09:09

Re: MPLAB X IDE

Сообщение PenguinChik »

Да не, для си - это понятно. А ассемблер он поддерживает?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: MPLAB X IDE

Сообщение КРАМ »

Поддерживает. Только это не MPASM, а PIC-AS. Если вам нужен MPASM, на котором написан код на скрине, то придется поставить MPLABX версии максимум 5.35.
ЗЫ. В догон, для пущего понимания. MPASM всегда являлся самостоятельным продуктом, который к Си-компиляторам не имел никакого отношения и поставлялся СО СРЕДОЙ РАЗРАБОТКИ (MPLAB/MPLABX). Вплоть до MPLABX версии 5.35, после чего он был выпилен из среды и предложено вместо него пользоваться ассемблером Си-компилятора XC8, который называется PIC-AS, который функционирует и в бесплатной версии компилятора. Но синтаксис проекта у PIC-AS несколько иной. В доках на компилятор есть мануал на этот ассемблер. Учите матчасть...
Ответить

Вернуться в «PIC»