Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 28.06.2018, 11:52   #76
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Здравствуйте все.
Можно ли как то критичный по времени код перенести из флеша в SRAM?
Iptash вне форума   Ответить с цитированием
Старый 28.06.2018, 12:44   #77
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
да.
нормальная практика.

как средствами xc32 не знаю.

в pic32mx есть bus matrix control registers.

без настройки матрицы шин не получится.
Миниатюры
memmap.png  
besogon вне форума   Ответить с цитированием
Старый 28.06.2018, 12:52   #78
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

вызов из ram функций из flash и наоборот требует long_call
без long call вызов невозможен.
besogon вне форума   Ответить с цитированием
Старый 28.06.2018, 14:36   #79
vladtv
Senior Member
 
Регистрация: 27.02.2007
Сообщений: 129
Вес репутации: 100/45
vladtv will become famous soon enoughvladtv will become famous soon enough
По умолчанию Re: PIC32MK...

средствами xc32:
документ "MPLAB® XC32 C/C++ COMPILER USER’S GUIDE"
раздел "FUNCTION ATTRIBUTES AND SPECIFIERS"
далее ищем "ramfunc". Там и про longcall написано.
vladtv вне форума   Ответить с цитированием
Старый 28.06.2018, 16:49   #80
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Спасибо ребята !
Iptash вне форума   Ответить с цитированием
Старый 02.07.2018, 09:35   #81
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Попробовал функцию в SRAM загрузить, как подсказали, вещь! Очень шустро работает. Спасибо за подсказку!
Iptash вне форума   Ответить с цитированием
Старый 02.07.2018, 09:40   #82
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

У меня вопрос появился с EEPROM. Чо то то не хочет писать). Пример взял с мануала, все проверил регистры, все вроде верно.
Цитата:
#define EEPROM_NOT_READY 8
/*
* Function returns ERR<1:0> bits
* Returns zero = no error occurred during the write cycle
* non-zero = error occurred during the write cycle
* or Data EEPROM is not ready
*/
int data_EEPROM_write(unsigned int ee_addr, int ee_data)
{
if (EECONbits.RDY==1) // If Data EEPROM to be ready
{
if (EECONbits.RW==0) // If no operation underway
{ // Execute Write Command
EEADDR = ee_addr & 0xFFC; // Load address on a 32-bit boundary
EECONbits.CMD = 1; // Load CMD<2:0> with write command
EECONbits.WREN = 1; // Access for write
EEDATA = ee_data;
EEKEY = 0xED87; // Write unlock sequence
EEKEY = 0x1248;
EECONbits.RW = 1; // Start the write cycle
while (EECONbits.RW==1);
//Wait for write cycle to complete
// Return ERR<1:0> bits. Zero if no error.
return EECONbits.ERR;
}
}
return EEPROM_NOT_READY;
}

Читать, читает. Что еще нужно для записи? Есть в конфигурации калибровочные регистры, но про них никакой информации.
Iptash вне форума   Ответить с цитированием
Старый 02.07.2018, 15:37   #83
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
в pic32mk нет eeprom.
в pic32mk есть flash.

не могу сходу найти причин использовать эмуляцию eeprom. жгите flash.

по поводу Вашего кода?

Writing the value 0xEDB7 followed by writing the value 0x1248 to this register will unlock the EECON
register for write/erase operations. Reads have no effect on this register and return ‘0’.
Код:
EEKEY = 0xED87; // Write unlock sequence - should be 0xEDB7
EEKEY = 0x1248;
по поводу объявления функции - неверный прототип
нужно добавить __attribute__((warn_unused_result))

для функций такого рода всегда ошибка игнорировать результат.
besogon вне форума   Ответить с цитированием
Старый 02.07.2018, 17:43   #84
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Ну да, я там использовал правильный ключ. EEPROM, ну как бы он есть поэтому решил попробовать. И проверку RDY я убрал. Проверяю в начале всех функций при вкл. EEPROM. Попробую атрибут добавить.
Iptash вне форума   Ответить с цитированием
Старый 02.07.2018, 19:58   #85
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
аттрибут не делает ничего, кроме как выдаст предупреждение о том, что результат функции не используется.

Ну да, я там использовал правильный ключ. - что это?
besogon вне форума   Ответить с цитированием
Старый 02.07.2018, 22:51   #86
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

ЭТО EEKEY = 0xEDB7 EEKEY=0x1248
Iptash вне форума   Ответить с цитированием
Старый 03.07.2018, 07:32   #87
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

А как считывать из flash? . Типа return(*(int*)addres) ?
Iptash вне форума   Ответить с цитированием
Старый 03.07.2018, 08:44   #88
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
А как считывать из flash? - a = b; где b переменная во flash. например.

вообще обычно делается как-то примерно так:
в скрипте линкера устанавливается кусок памяти, который будет рассматриваться как перезаписываемый flash
kseg0_saved_data (rx) : ORIGIN = 0x9D000000 + EXEPT_MEM_SIZE + ROM_SIZE - USER_ROM_SIZE - EXEPT_MEM_SIZE - SAVED_SIZE , LENGTH = SAVED_SIZE
устанавливается секция в этом куске памяти
.boards_config ORIGIN(kseg0_saved_data) :
{
PROVIDE (__boards_config_start = .);
KEEP (*(.boards_config))
. = ALIGN(4) ;
PROVIDE (__boards_config_end = .);
} >kseg0_saved_data

потом к тому, что будет перезаписываемым flash добавляется аттрибут
__attribute__((section(".boards_config")))

если хочется прозрачной работы - то flash дублируется ram и работа идет через ram и только при включении из flash в ram и при выключении если ram поменялось, то из ram во flash.

Последний раз редактировалось besogon; 03.07.2018 в 08:51.
besogon вне форума   Ответить с цитированием
Старый 03.07.2018, 11:51   #89
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

забыл.

при доле здравого смысла конечно допустимы варианты, чтобы тупо писать flash по a = b;

в случае записи во flash можно настроить вызов исключения. вы попадете в главный обработчик исключений.
в нем через селектор попадете в исключение записи (точно не помню какое).
в исключении записи уже можно спокойно вызвать необходимые функции, прожечь flash и вернуться из исключения.

иначе говоря вполне можно тривиальным образом замаскировать в приложении то, что невозможно напрямую модифицировать flash.

давно как-то мерил, через сколько циклов перезаписи flash начинает давать сбои.

получилось больше 100 000. вполне хватит, чтобы хранить данные, которые довольно редко изменяются.

https://hackaday.com/2014/12/04/flas...rance-testing/
besogon вне форума   Ответить с цитированием
Старый 04.07.2018, 12:19   #90
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Давно, как то пробовал в dsPIC33 писать во флеш. Что то устанавливал или инициализировал в конфигурации, не помню. Но получалось. А как же с псевдо EEPROMмом? Почему же не получается записывать? Я по всякому уж пробовал комбинации. У кого то удалось писать читать EEPROM?
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 12:39   #91
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
я не работал с pic32mk.
получалось в других семействах.
и довольно давно. там вроде было другое управление.

как Вы проверяете, что записалось?

попробуйте написать или лучше позвонить Илье Афанасьеву из microchip - он наверняка сталкивался.
besogon вне форума   Ответить с цитированием
Старый 04.07.2018, 12:43   #92
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Я сначало пишу какое то значение, потом считываю. Но считывает всегда 0хFFFFFF.
А как написать Илье?
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 13:16   #93
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
он так и есть на форуме Илья.
если не ошибаюсь, у него почта указана.

Он представляет гамма-Спб. поставщик microchip в РФ.

Я сначало пишу какое то значение, потом считываю. Но считывает всегда 0хFFFFFF. - мне не с чем разбираться, но я бы попробовал вставить бряк где-нибудь, где может требоваться время для прожига и повисеть там.

Вы, к слову, вот это говнище из мануала DS60001326A делали?
Код:
void EEWriteExecute(int waitForDone)
{
/* Disable interrupts prior to unlock sequence */
EEKEY = 0xEDB7;
// Unlock the EEPROM to enable writing
EEKEY = 0x1248;
EECONbits.RW = 1;
// Execute the write
/* Re-enable interrupts */
if (waitForDone)
while (EECONbits.RW);
// Wait for the write to finish if
// desired
}
void EEInitialize(void)
// Basic EEPROM enable and initialization
{
EECONbits.ON = 1;// Turn on the EEPROM
while (EECONbits.RDY == 0);// Wait until EEPROM is ready (~125 us)
EECONbits.WREN = 1;// Enable writing to the EEPROM
EECONbits.CMD = 0b100;// Set the command to Configuration Write
EEADDR = 0x00;// Addr 0x00 = DEVEE1;
EEDATA = DEVEE1;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x04;// Addr 0x04 = DEVEE2;
EEDATA = DEVEE2;
// Execute write and wait for finish
EEWriteExecute(1);
EEADDR = 0x08;// Addr 0x08 = DEVEE3;
EEDATA = DEVEE3;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x0C;// Addr 0x0C = DEVEE4;
EEDATA = DEVEE4;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x10;// Addr 0x10 = DEVEE5;
EEDATA = DEVEE5;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x14;// Addr 0x14 = DEVEE6;
EEDATA = DEVEE6;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x18;// Addr 0x18 = DEVEE7;
EEDATA = DEVEE7;
EEWriteExecute(1);
// Execute write and wait for finish
EEADDR = 0x1C;// Addr 0x1C = DEVEE8;
EEDATA = DEVEE8;
EEWriteExecute(1);
// Execute write and wait for finish
EECONbits.WREN = 0;
// Turn off writes.
}
besogon вне форума   Ответить с цитированием
Старый 04.07.2018, 15:51   #94
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Так и есть)) Но почему говнище?)) Для проверки разве не пойдет?
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 16:01   #95
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
если делали - то хорошо.
besogon вне форума   Ответить с цитированием
Старый 04.07.2018, 16:08   #96
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Только почему то не работает)). Я по одному адресу пытался записать, но без результата.
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 16:09   #97
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

Они на фирме, проверяют свои примеры в плане работоспособности?
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 16:11   #98
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

И Отладка и программирование чипа с Pickit3 очень тормознутая. Для JTAG у microchip, что есть? Real ICE ?
Iptash вне форума   Ответить с цитированием
Старый 04.07.2018, 16:15   #99
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: PIC32MK...

Iptash
Они на фирме, проверяют свои примеры в плане работоспособности? - я не знаю. наверное стараются проверять.
Pickit3 очень тормознутая - я использую клон с али segger j-link v9.4. около 1500 рублей с проводами стоит.

у меня есть еще icd2 icd3 - они все ужасные. еще несколько icd3 еще сломаных где-то лежит.
к слову, оригинальных.

Последний раз редактировалось besogon; 04.07.2018 в 16:24.
besogon вне форума   Ответить с цитированием
Старый 04.07.2018, 16:26   #100
Iptash
Senior Member
 
Регистрация: 29.03.2008
Возраст: 53
Сообщений: 404
Вес репутации: 330/46
Iptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the roughIptash is a jewel in the rough
По умолчанию Re: PIC32MK...

У меня j-link есть. А резве PIC32 его понимает?
Iptash вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 22:10.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot