Ну хотя бы так, СпасибоАlex писал(а):PS: Имя не устанавливается, к сожалению
MPLAB в вопросах и ответах
- Реклама
[uquote="alex_",url="/forum/viewtopic.php?p=3417048#p3417048"]но никак не могу отмониторить переменные.
Переменные заданы таким образом:
При этом в окне Watch кнопка Add Symbol и выпадающий список не активны[/uquote]
Меняете способ объявления переменных на:
И включаете режим перемещаемого кода.
По результату генерации хекса ничего не изменится, но все переменные станут видны в Watch
Переменные заданы таким образом:
Код: Выделить всё
cblock 0x20
CURR_ACP
CURR_IZM
CURR_ZAD
CURR
endc
Меняете способ объявления переменных на:
Код: Выделить всё
udata 0x20
CURR_ACP res 1
CURR_IZM res 1
CURR_ZAD res 1
..
По результату генерации хекса ничего не изменится, но все переменные станут видны в Watch
Не подскажете в каком месте галочку поставитьКРАМ писал(а):И включаете режим перемещаемого кода.
Project - Build Options - Project - MPASM C17/C18 Suite -> Generate Relocatable Code - ставим галку
Ну либо на Ask me и тогда каждый раз перед билдом будет возникать окно с предложением выбора Absolute/Relocatable
Ну либо на Ask me и тогда каждый раз перед билдом будет возникать окно с предложением выбора Absolute/Relocatable
[uquote="КРАМ",url="/forum/viewtopic.php?p=3417379#p3417379"]Project - Build Options - Project - MPASM C17/C18 Suite -> Generate Relocatable Code - ставим галку[/uquote]Слона то я и не заметил
Спасибо, теперь стало всё гораздо лучше, в udata 0x20 пришлось удалить число, а то с ним ну никак не хотело компилироваться
Спасибо, теперь стало всё гораздо лучше, в udata 0x20 пришлось удалить число, а то с ним ну никак не хотело компилироваться
- Реклама
Дело тут не в числе, а в областях ОЗУ.
Скорее всего, данная область (0х20) относится с типу udata_acs. Почитайте даташит и мануал на ассемблер.
Память с доступом через ACCSESS должна резервироваться как udata_acs
Для иной области может быть указан абсолютный адрес начала блока.
Как Вы уже догадались, теперь не требуется выделять отдельный байты для длинных переменных.
Достаточно указать их длину в байтах после res. Обращение к ним будет соответственно <имя>, <имя+1>, <имя+2> и т.д.
Скорее всего, данная область (0х20) относится с типу udata_acs. Почитайте даташит и мануал на ассемблер.
Память с доступом через ACCSESS должна резервироваться как udata_acs
Для иной области может быть указан абсолютный адрес начала блока.
Как Вы уже догадались, теперь не требуется выделять отдельный байты для длинных переменных.
Достаточно указать их длину в байтах после res. Обращение к ним будет соответственно <имя>, <имя+1>, <имя+2> и т.д.
Про число я условно сказал, понимая при этом что компилятор уже не может там жёстко разместить переменные поскольку возможно данная область памяти была занята или зарезервирована под свои нужды. Про длину в байтах это конечно плюс. Повторюсь, программу мне подсунули для модификации, но похоже она была написана крайним консерватором в виде жёсткой привязки переменных и не только, притом в программе используются переменные размерностью 4 байта и объявлены как 4 отдельные переменные хотя и стоят друг за другом
нет чтоб действительно написать res 4. Мне если честно Си больше по душе, и когда разберусь в данной программе полностью её портирую на Си.
нет чтоб действительно написать res 4. Мне если честно Си больше по душе, и когда разберусь в данной программе полностью её портирую на Си.
вопросы у меня тут по mplab c18
1) оно не умеет оператор "?" ? (например "(a==b) ? c=d : e=f;") или я туплю, пишет syntax error
2) подключаю инклюды - тоже пишет syntax error, а там вообще пусто (или там что-то в конце нужно написать?)
1) оно не умеет оператор "?" ? (например "(a==b) ? c=d : e=f;") или я туплю, пишет syntax error
2) подключаю инклюды - тоже пишет syntax error, а там вообще пусто (или там что-то в конце нужно написать?)
Умеет. Просто у Вас синтаксическая ошибка. Конкретно - отсутствие "точки с запятой".
- Сообщения: 347
- Зарегистрирован: Сб фев 07, 2009 19:21:25
Добрый день, помогите кто может, понадобилось мне в MPLAB X и c18, создать массив 512 байт, но он выдаёт ошибку, помница, там надо в линке объединить банки и в файле проекта какую то ерунду ещё прописать и тогда ошибка исчезнет, вот кто подскажет, что надо сделать ?
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
Попробовать погуглить, для начала.БАТАРЕЙКУС писал(а):что надо сделать ?
Первая попавшаяся ссылка - http://www.microchip.su/showthread.php?t=14356
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
Всем, доброго времени суток! Подскажите в таком вопросе. Необходимо сделать ремап UART на PIC18 в микропаскаль. Могу ли я сделать ремап только Tx или только Rx? Или все же необходимо ремапить две ножки, что бы использовать функцию UART_Remappable_Init?
1. Камень какой ?
2. Причём тут эта тема ? Тут обсуждается MPLAB.
2. Причём тут эта тема ? Тут обсуждается MPLAB.
- Сообщения: 117
- Зарегистрирован: Ср ноя 05, 2014 19:04:31
[uquote="Аlex",url="/forum/viewtopic.php?p=3513523#p3513523"]1. Камень какой ?
2. Причём тут эта тема ? Тут обсуждается MPLAB.[/uquote]
Прошу прощения! Не посмотрел нормально в какой теме спрашиваю.
Камень PIC18F47j53
2. Причём тут эта тема ? Тут обсуждается MPLAB.[/uquote]
Прошу прощения! Не посмотрел нормально в какой теме спрашиваю.
Камень PIC18F47j53
Добрый день. Что означает "Pass Count: 59" при программировании через MPLAB IPE?
Более подробно
Микроконтроллер PIC12F675.
Программатор ICD-3.
Питание 3,7 Вольт.
Кусок схемы во вложении.
Во время прошивки выпаяно R21, R14, R24, R11.
Более подробно
Код: Выделить всё
Target removed
Target voltage detected
Target device PIC12F675 found.
Device ID Revision = b
2018-12-29 14:04:58 +0800 - Programming...
Device Erased...
Programming...
The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x3fe
configuration memory
program memory
Address: 0 Expected Value: 2bf3 Received Value: 0
Failed to program device
2018-12-29 14:05:07 +0800 - Programming failed
Pass Count: 59Программатор ICD-3.
Питание 3,7 Вольт.
Кусок схемы во вложении.
Во время прошивки выпаяно R21, R14, R24, R11.
- Вложения
-
- Снимок.jpg
- (63.41 КБ) 525 скачиваний
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
[uquote="otest",url="/forum/viewtopic.php?p=3537406#p3537406"]Почему 3.7в[/uquote]
В даташите указано, что он питается от 2 до 5.5 Вольт.
В даташите указано, что он питается от 2 до 5.5 Вольт.
[uquote="Linuxoid91",url="/forum/viewtopic.php?p=3537605#p3537605"]В даташите указано[/uquote]
В даташите указана ЗАВИСИМОСТЬ диапазона напряжений питания от ЧАСТОТЫ работы контроллера.
Из каких соображений Вы решили, что при программировании от ICD3 тактирование МК ниже 10 МГц?
В даташите указана ЗАВИСИМОСТЬ диапазона напряжений питания от ЧАСТОТЫ работы контроллера.
Из каких соображений Вы решили, что при программировании от ICD3 тактирование МК ниже 10 МГц?
Доброго времени суток. Как исправить error 1347?
Микроконтроллер PIC16F676. Во время компилляции выдает ошибки.
make[1]: Entering directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
make -f nbproject/Makefile-default.mk dist/default/production/50_Hz_PWM.X.production.hex
make[2]: Entering directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
"C:\Program Files (x86)\Microchip\xc8\v1.45\bin\xc8.exe" --pass1 --chip=16F676 -Q -G --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" -obuild/default/production/newmain.p1 newmain.c
newmain.c:35: warning: (371) missing basic type; int assumed
newmain.c:51: warning: (371) missing basic type; int assumed
newmain.c:56: warning: (371) missing basic type; int assumed
newmain.c:61: warning: (371) missing basic type; int assumed
"C:\Program Files (x86)\Microchip\xc8\v1.45\bin\xc8.exe" --chip=16F676 -G -mdist/default/production/50_Hz_PWM.X.production.map --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" --memorysummary dist/default/production/memoryfile.xml -odist/default/production/50_Hz_PWM.X.production.elf build/default/production/newmain.p1
Microchip MPLAB XC8 C Compiler (Free Mode) V1.45
Build date: Nov 15 2017
Part Support Version: 1.45
Copyright (C) 2017 Microchip Technology Inc.
License type: Node Configuration
:: warning: (1273) Omniscient Code Generation not available in Free mode
make[2]: *** [dist/default/production/50_Hz_PWM.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
:0: error: (1347) can't find 0xB7E words (0xb7e withtotal) for psect "text1" in class "CODE" (largest unused contiguous range 0x3F9)
(908) exit status = 1
nbproject/Makefile-default.mk:131: recipe for target 'dist/default/production/50_Hz_PWM.X.production.hex' failed
make[2]: Leaving directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
BUILD FAILED (exit value 2, total time: 7s)
Микроконтроллер PIC16F676. Во время компилляции выдает ошибки.
Спойлер
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-confmake[1]: Entering directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
make -f nbproject/Makefile-default.mk dist/default/production/50_Hz_PWM.X.production.hex
make[2]: Entering directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
"C:\Program Files (x86)\Microchip\xc8\v1.45\bin\xc8.exe" --pass1 --chip=16F676 -Q -G --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" -obuild/default/production/newmain.p1 newmain.c
newmain.c:35: warning: (371) missing basic type; int assumed
newmain.c:51: warning: (371) missing basic type; int assumed
newmain.c:56: warning: (371) missing basic type; int assumed
newmain.c:61: warning: (371) missing basic type; int assumed
"C:\Program Files (x86)\Microchip\xc8\v1.45\bin\xc8.exe" --chip=16F676 -G -mdist/default/production/50_Hz_PWM.X.production.map --double=24 --float=24 --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" --memorysummary dist/default/production/memoryfile.xml -odist/default/production/50_Hz_PWM.X.production.elf build/default/production/newmain.p1
Microchip MPLAB XC8 C Compiler (Free Mode) V1.45
Build date: Nov 15 2017
Part Support Version: 1.45
Copyright (C) 2017 Microchip Technology Inc.
License type: Node Configuration
:: warning: (1273) Omniscient Code Generation not available in Free mode
make[2]: *** [dist/default/production/50_Hz_PWM.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
:0: error: (1347) can't find 0xB7E words (0xb7e withtotal) for psect "text1" in class "CODE" (largest unused contiguous range 0x3F9)
(908) exit status = 1
nbproject/Makefile-default.mk:131: recipe for target 'dist/default/production/50_Hz_PWM.X.production.hex' failed
make[2]: Leaving directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'D:/Cloud/Microchip/P16 PWM SIN 50 Hz/50 Hz_PWM.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
BUILD FAILED (exit value 2, total time: 7s)
У вас какой-то массив слишком большой и не лезет в память. т.е. ему нужен непрерывный кусок озу, который компилятор в кристалле найти не может. вернее не компилятор, а линковщик.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


