Полная версия этой страницы:
Из SRAM в FLASH
James D.
Oct 10 2005, 16:07
Привет всем!
Я пытаюсь переслать данные из SRAM в FLASH (ATmega32).
Из даташита взял образец п/п пересылки, но AVRStudio выдает ошибки в следующих 4-х строках:
ldi spmcrval,(1<<RWWSRE)|(1<<SPMEN) - таких строк в программе - 3шт.
...
...
sbrs temp1,RWWSB
Сообщает: Undefined variable referenced
Регистрам имена дал, include "m32def.inc", стек назначил - все как положено.
Стоит такая задача: в процессе работы основной программы нужно изменять табличные значения в FLASH.
Весь вопрос в том, как это сделать?
В строке: ldi spmcrval,(1<<RWWSRE)|(1<<SPMEN), ошибку вызывает надпись - "RWWSRE", заменяя ее на "PGERS" (к примеру), ошибка в этой строке исчезает!
С bootloader'ом я раньше дела не имел, а тут, получается, и в симуляторе погонять не могу, чтобы разобраться!!!
В чем здесь ошибка?
James D.
Oct 10 2005, 19:29
Ух ты! В файле m32def.inc в регистре SPMCR биты 4 и 6 названы не так, как в даташите - раздел Register Summary!
Исправил. Скомпилилось без ошибок. По крайней мере в строках, которые я приводил, ошибки исчезли!
А я, как-то всегда полагал, что в файлах def.inc ошибок быть не должно!
James D.
Oct 11 2005, 15:35
У меня в FLASH находится таблица, указывает на нее метка "Table", объем - 850 байт.
Как указать загрузчику, что нужно стирать именно с этого адреса? Какое значение надо занести в Z-регистр?
Делаю так:
ldi ZH,HIGH(2*Table)
ldi ZL,LOW(2*Table)
стирается первая страница - с адреса $0000 (128 байт).
Цитата(James D. @ Oct 11 2005, 18:35)
У меня в FLASH находится таблица, указывает на нее метка "Table", объем - 850 байт.
Как указать загрузчику, что нужно стирать именно с этого адреса? Какое значение надо занести в Z-регистр?
Делаю так:
ldi ZH,HIGH(2*Table)
ldi ZL,LOW(2*Table)
стирается первая страница - с адреса $0000 (128 байт).
Скорее всего умножать на 2 не надо (покрайней мере в IAR) AVRstudioовским асмом не пользовался.
А вообще лучше всего под симулятором пройтись и посмотреть какое реально значение в Z получается
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.