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

 
 
> Снова Bootloаder, "Подводные камни" AVR109
Stas633
сообщение Apr 21 2007, 20:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901



Не нашел форуме описания подобной ситуации, поэтому "выкладываю", может кому пригодится..

Повторил bootloader по AVR109.
Попробовал программировать Мегу при помощи AVRProg.
Cтолкнулся с проблемой верификации памяти после программирования.

При "детальном рассмотрении" обнаружил, что в ASM-программе в AVR109 отсутствует ре-инициализация памяти (RWW) после операций записи страницы. И это не смотря на то, что
в тексте AVR109 эта "проблема" упоминается:
Код
...Note that if the RWW section accessed without re-enabling it after an erase or write
operation, all addresses in the RRW section read 0xFFFF....


После "подправки" программы проблемы "не стало":
Код
; void write_page (unsigned int adr, unsigned char function);
_write_page::

        MOV R31,R17        
        MOV R30,R16        ;move adress to z pointer (R31=ZH R30=ZL)
        OUT SPMCR,R18      ;argument 2 decides function
        SPM                ;perform pagewrite

; "поправка" программы
; ------------------------------------
    Wait_spm1:
        in R16, SPMCR
        sbrc R16,0
        rjmp Wait_spm1

        LDI R16,  $11     ; enable RWW
        OUT SPMCR, R16     ;
        SPM
; ------------------------------------

        RET


" dw $FFFF" и "nop" удалил как ненужные (а для чего используется dw $FFFF.. до сих пор не пойму smile.gif )

Вопрос... Почему же Atmel не "ерратил" ошибку? Или я чего-то не увидел, и напрасно предъявляю прететзии?
Go to the top of the page
 
+Quote Post



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

 


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


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