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

 
 
> само программирование Flash AVR, пример asm кода из AES bootloadera
_Алекс
сообщение Sep 30 2007, 14:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



зачем столько условной компиляции не могу разобраться.
// Executes self-programming command

spmSPM:
movw r31:r30, r17:r16

rcall spmWait

in r20, SREG
cli

#ifdef __RAMPZ__
in r21, RAMPZ
out RAMPZ, r18
#endif

#ifdef __MEMSPM__
sts SPMREG, r22
#else
out SPMREG, r22
#endif

#ifdef __RAMPZ__
espm
#else
spm
#endif

dw 0xFFFF
nop

#ifdef __RAMP__
out RAMPZ, r21
#endif

out SREG, r20
ret

1. что такое и зачем __RAMPZ__ - если МК больше 64Кб?
2. что такое и зачем __MEMSPM__
3. зачем размещается слово в памяти «dw 0xFFFF», при отладке в AVR Studio попадая, на эту команду выдает предупреждение – что команда не известна.

Сообщение отредактировал _Алекс - Sep 30 2007, 15:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Oct 15 2007, 07:15
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(_Алекс @ Sep 30 2007, 18:50) *
1. что такое и зачем __RAMPZ__ - если МК больше 64Кб?

индексный регистр Z только 16 бит - что бы адресовать больше нужен этот регистр.
Цитата(_Алекс @ Sep 30 2007, 18:50) *
2. что такое и зачем __MEMSPM__

у разных AVR регистр SPM или доступен через OUT или через STS
Цитата(_Алекс @ Sep 30 2007, 18:50) *
3. зачем размещается слово в памяти «dw 0xFFFF», при отладке в AVR Studio попадая, на эту команду выдает предупреждение – что команда не известна.

А это в даташите в секции errata описано.

PS про все это лучше почитать в datasheet на разные AVR
Go to the top of the page
 
+Quote Post



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

 


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


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