реклама на сайте
подробности

 
 
> Запись данных в память программ PIC24F на С30
Галстук
сообщение Nov 17 2010, 14:27
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 5-12-05
Из: Москва, Россия
Пользователь №: 11 818



Есть PIC24FJ256 , используется C30, хочется выделить в памяти программ место под данные (100Кбайт), которые будут генерироваться постепенно в процессе работы устройства, записываться и затем использоваться. Цеплять внешнюю память конечно можно, но нецелесообразно. Как сделать это на С30? Для PIC18 на PICC удавалось.

Есть AN1095, но уж больно там накручено. Ресурс перезаписи не беспокоит, так как перезапись будет только в единичных количествах.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Danis
сообщение Nov 17 2010, 17:33
Сообщение #2


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(Галстук @ Nov 17 2010, 18:27) *
Есть PIC24FJ256 , используется C30, хочется выделить в памяти программ место под данные (100Кбайт), которые будут генерироваться постепенно в процессе работы устройства, записываться и затем использоваться. Цеплять внешнюю память конечно можно, но нецелесообразно. Как сделать это на С30? Для PIC18 на PICC удавалось.

Есть AN1095, но уж больно там накручено. Ресурс перезаписи не беспокоит, так как перезапись будет только в единичных количествах.

Спасибо.


Держи. Вместо структуры (как у меня) можешь задать массив, только как const.

__attribute__((space(psv),address (0x1400))) //(у Вас адрес начала размещения может отличаться!)
volatile struct Programm_Data My_Data; // size = 2048 - это размер моей структуры (у Вас размер может отличаться!)

//---------------------------------------------------
int main(void)
{

CORCONbits.PSV = 1;
PSVPAG = __builtin_psvpage(&My_Data);

Oscillator_init() ;
.....
.....

.....

Переделал под массив для ясности.

_attribute__((space(psv),address (0x1400)))
const unsigned char My_Array[1024 * 100];

//---------------------------------------------------
int main(void)
{

CORCONbits.PSV = 1;
PSVPAG = __builtin_psvpage(&My_Array[0]);

Oscillator_init() ;
………………….
………………….
………………….
………………….
return 0;
}

Off.
В свое время работал с таким контроллером. У него (и PIC24FJ**GA и PIC24FJ**GB) один баг нехороший есть. Если установить бит защиты от R/W кода, то нельзя бутлодером прошить его 1-й килобайт. Поэтому пришлось править линкер скрипт и использовать таблицу альтернативных векторов прерываний.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01643 секунд с 7
ELECTRONIX ©2004-2016