Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/43: Рейтинг темы: голосов - 43, средняя оценка - 4.77
ssm7
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 8
1

Запись данных в память программ PIC18LF46J50

16.03.2013, 20:29. Просмотров 7958. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Такая проблема. Необходимо сохранять данные в энергонезависимую память перед выключением контроллера. Для этого пишуданные в память программ в адресс 0х002000 перед каждым циклом записи память (Falsh контроллера) стирается. Только в 2 ячейки все что попало пишется кроме того что надо. Функции записи стирания чтения написал в соответствии с рекомендациями datasheet. Стирание работает.
Код
#define numCh_write
asm MOVLW 0x00; \
asm MOVWF TBLPTRU; \
asm MOVLW 0x20;   \
asm MOVWF TBLPTRH; \
asm MOVLW 0x00;  \
asm MOVWF TBLPTRL; \
asm MOVLW _datFtosh; \
asm MOVWF TABLAT;  \
asm TBLWT*+;   \
asm MOVLW _datFtosh;  \
asm MOVWF TABLAT; \
asm TBLWT*;  \
asm BSF EECON1, WPROG;  \
asm BSF EECON1, WREN;  \
asm BCF INTCON, GIE; \
asm MOVLW 0x55;    \
asm MOVWF EECON2;  \
asm MOVLW 0xAA;    \
asm MOVWF EECON2;   \
asm BSF EECON1, WR;  \
asm BSF INTCON, GIE; \
asm BCF EECON1, WPROG; \
asm BCF EECON1, WREN;
Подскажите где грабли
Мжет кто-то уже решал этот вопрос буду очень благодарен за исходники
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 20:29
Ответы с готовыми решениями:

Запись в память программ.
Требуется записать несколько байт в память программ (с чтением разобрался, работает). Для начала...

Переписать данные из памяти программ в память данных
Здравствуйте, нужно сделать задание: Переписать данные из 10 ячеек памяти программ, начиная с...

Внешняя память PIC: как нарастить внутреннюю память данных?
Я только начал разбираться с ПИКами и пока не все понимаю. Мне нужно организовать систему сбора и...

Внешняя память программ
Скажите кто нибудь цеплял внешнюю память программ к АТ89С51/52? Расскажите как это сделать, в гугле...

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

5
kryzzty
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 146
20.03.2013, 11:02 2
если используешь C18, то просто объяви переменную как rom.

Код
rom unsykned char var;
Если надо, чтобы переменные начинались с адреса 0x002000

Код
#pragma romdata my_data=0x002000

rom unsykned char var;
А ещё лучше использовать EEPROM, а не программную память
0
Kimyus
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 19
20.03.2013, 17:05 3
Цитата Сообщение от kryzzty
А ещё лучше использовать EEPROM, а не программную память
Кажется у этого чипа нет eeprom
0
ssm7
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 8
29.03.2013, 15:20 4
Всем спасибо проблему решил все работает
Оказалось что передача значения переменной из кода на С в код на Asm нереализуема поэтому пришлось переписать весь код на С и только одну комманду оставить как вставку на Asm asm TBLWT*+;

Да у чипа нет EEPROM как и у многих других чипов современных производителей но это не беда В качестве энергонезависимой памяти используем Ftosh программ на борту контроллера Конечно есть свои грабли правда в профиль но терпимо По сравнению с EEPROM у которой циклов перезаписи милионы у Ftosh их на порядки меньше
0
somstomt
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 13
30.03.2013, 21:50 5
Тогда лучше повесить внешнюю внешнюю память, чтоб не гадить во флешку ПИКа.
Ибо подведет в самый неподходящий момент, было такое (читал не помню где) в одном из музыкальных центров Samsumg, там настройки сохранялись в проце и он примерно на пятый год дох.
0
UTHIDIR
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 27
31.03.2013, 01:15 6
Записывать можно в последний банк памяти, и тогда не должно быть повреждений основной памяти.
То-есть этот банк целиком идёт как замена еепром...
Помню какой то тест проводил над ПИК18Ф4550, через юсб записывал во флешь основную программу, и выдёргивал шнур примерно по середине.
В итоге, программа основная после перезагрузки работала нормально вплодь до того момента как происходил вызов подпрограммы который видимо не успел записаться.
Тестировал несколько раз, и программа которая записывалась в банк целиком его заполнившим, не имела дефектов, после таких издёвок в виде выдёргивании шнура...

Но в память записывается сразу 32 или 64 бита инфы(имхо).
То-есть на запись нужно отправить данные в виде большого слова... Более точную инфу ищите в пдф.
0
31.03.2013, 01:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2013, 01:15

Составление программ с использованием структуры данных «Запись»
А. Создать запись, содержащую сведения о сдаче студентами группы "ПО-21" сессии. Структура записи:...

Пк долго запускается, забита память, произвольно делает неактивными окна программ
Добрый день. Проблемы следующего характера: 1) При включении долго виснет, затем очень медленно...

Оперативная память забита кучей не нужных программ. Как очистить, что удалять?
Я зачеркнул программы предназначение которых я знаю, скажите пожалуйста для чего нужны оставшиеся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru