Andrey_M 0 24 января, 2013 Опубликовано 24 января, 2013 · Жалоба Доброго времени суток! Помогите разобраться с записью во FLESH. MPLAB V8.88 Компилятор MPLAB C30 V3.30 процессор PIC24FJ128GA006 Есть переменная char buff [14]={"Slovo "}; // Текст в переменной изменяется в ходе программы (получается от другого процессора). Требуется сохранить его в памяти программ чтобы можно было восстановить после снятия питания. С чтением из программной памяти проблем нет а вот записать никак не могу. Подскажите какую библиотеку для этого надо и если не составит труда накидайте пример как это делается. Заранее спасибо за любую помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 24 января, 2013 Опубликовано 24 января, 2013 · Жалоба Подскажите какую библиотеку для этого надо и если не составит труда накидайте пример как это делается. Заранее спасибо за любую помощь. Просто записывать несколько байт строки не получится, нужно будет сначала стереть страницу памяти flash, а это может быть 1024 byte или более, надо смотреть на чип. Поэтому нужно 1 – Разместить буфер по указанному адресу во flash, размер буфера должен быть кратен размеру стираемой странице. __attribute__((space(psv),address (0x7000))) volatile const unsigned char Buff[1024]; 2 – Пишите / считывайте flash. Тут вам в помощь MPLAB® C30 C COMPILER USER’S GUIDE и даташит на Ваш контроллер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 24 января, 2013 Опубликовано 24 января, 2013 · Жалоба Доброго времени суток! Помогите разобраться с записью во FLESH. .. Посмотрите статьи по реализации загрузчиков (Bootloader) для PIC. Там все подробно описано. Примеры рабочие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrey_M 0 24 января, 2013 Опубликовано 24 января, 2013 · Жалоба Спасибо откликнувшимся. Стирание и запись массивов в память программ у меня получается с помощью _init_prog_address(p,Flash_var); // _erase_flash(p); // _write_flash16(p,Var); // но это массивы int, а функции работающие с текстом требуют char. при попытке передать на запись переменную строки char компилятор ругается и после стирания ничего не пишет во FLESH. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться