Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изменение константы в памяти программы в AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
DimonD
Меня интересует… возможно ли изменить константу в памяти программы то есть перепрограммировать участок кода в ходе выполнения основной программы. С EEPROM не хочу связываться.

Если есть такая возможность подскажите как…. На Си…
IgorKossak
Application Note AVR105
Всё очень подробно описано.
SPS
LPM - загрузка из памяти программы.
SPM - запись в память программы.

Смотри также команды LD, ST.
DimonD
Что-то я совсем туплю ну не как понять не могу как в CodeVisionAVR изменить ячейка в памяти программ. Знаю что есть AVR105/AVR109 и на amel.ru есть описание но там в основном говориться о бут загрузчиках и примеры на ассемблере. Может в качестве примера сишный код кто даст. Можно и со вставкой ассемблера. Заранее спасибо
SPS
Цитата(SPS @ Mar 16 2005, 16:16)
LPM - загрузка из памяти программы.
SPM - запись в память программы.

Смотри также команды LD, ST.
*


Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?
LPM - загрузка в R0 из адреса Z.
LPM Rd,Z - загрузка в Rd из адреса Z.
LPM Rd,Z+ - загрузка в Rd из адреса Z с инкрементом адреса.

Напомню, что данные команды поддерживаются не всеми АVR.
KRS
Цитата(DimonD @ Mar 16 2005, 15:56)
Меня интересует… возможно ли изменить константу в памяти программы то есть перепрограммировать участок кода в ходе выполнения основной программы.  С EEPROM не хочу связываться. 

Если есть такая возможность подскажите как…. На Си…
*


Лучше всетаки связаться с eeprom!!! в Eeprom еще можно гораздо больше раз писать чем во флеш
Запись во флеш может быть только по страницам и только из области бутлоадера. Т.е. надо считать страницу LMP ами потом стереть записать SPM и потом записать всю страницу.

На с можно написать у IAR есть функции
__DataToR0ByteToSPMCR_SPM
__AddrToZByteToSPMCR_SPM
__AddrToZWordToR1R0ByteToSPMCR_SPM

, но лучше встеки писать на асме, потому что текс на С принципиально отличатся не будет! но вот на АСМе он понятнее будет! тем более все примеры на нем.
DimonD
>>Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?

проблем нет smile.gif
вот текст:
#asm
ldi r31,$F0
clr r30
ldi r16,$CF
mov r1,r16
ldi r16,$03
out SPMCR,r16
spm

ldi r16,$01
out SPMCR,r16 //тут CodeVisionAVR ругается
spm
#endasm

>>Напомню, что данные команды поддерживаются не всеми АVR
еще дело не дошло до AVR Studio, а так amega163 или 128

Может все-таки кто даст даст работающий пример…
Ассемблер я плохо знаю и не работал в нем может поэтому я что-то да не понимаю.
vet
Цитата
out SPMCR,r16 //тут CodeVisionAVR ругается

А не из-за комментария ли он ругается? wink.gif
Сишного комментария в ассемблерной строке?
KRS
Цитата(DimonD @ Mar 17 2005, 16:41)
>>Какая проблема поместить данные команды в СИ в виде ассемблерных вставок?

Может все-таки кто даст даст работающий пример…
Ассемблер я плохо знаю и не работал в нем может поэтому я что-то да не понимаю.
*


Не все так просто! SPM можно делать только из области бутлоадера поэтому функию надо размещать там. А пример бутлоадера и как работать с spm есть на сайте атмела в AppNotes AVR109
http://www.atmel.com/dyn/resources/prod_do...nts/doc1644.pdf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.