Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с самописным бутлоадером для m8515
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
IVN2013
Доброго всем времени суток. Сейчас пишу бутлоадер для m8515 - проба пера, столкнулся с проблемой - код загружается несколько раз(2 раза программы до 2-х страниц памяти, и более 2-х если 1- страница), после чего либо остается результат выполнения ранее записанной программы, либо вообще не пойми что, то ли перетирает код лоадера, то ли память переполняет, то ли чего еще, не могу понять.

Посмотрите пожалуйста код, может кто что посоветует - как это исправить.

Выкладываю ассемблерный код для AVR studio, и программу для ПК (загружает HEX файлы в формате generic), и 3- проги примера для загрузки. В общем в проге для ПК сначала открывается файл для загрузки(файл->открыть), затем загрузчик-> переход в режим программирования, после по кнопке Прошить, и после - Проверка, все что ниже - жать необязательно), прогу еще не дооформил - не судите строго. Возможно дело в программе для ПК.
Если с первого раза код не пишет, то по второму разу все таки записывается, но в проге для пк вылетает ошибка(что - то вроде того что прога обратилась к неположенному адресу памяти). Но дальше по второму разу не пишет уже.
Нажмите для просмотра прикрепленного файлаНажмите для просмотра прикрепленного файла[a
ttachment=79959:examples_to_load.zip]

Заранее спасибо!
ILYAUL
Вы сами писали этот код? Если да , то ответьте на несколько вопросов. Зачем сохранять R16 если он не используется ? Зачем сохранять SREG , если он изменился ?
Код
;----------------------------------------------------------------------
; Подпрограмма выполнения SPM
;----------------------------------------------------------------------
doSPM:
push r16
;проверка завершения предыдущей SPM
WaitSPM:
    in r18, SPMCR
    sbrc r18, SPMEN
rjmp WaitSPM
in r19, SREG
cli
wait_ee:
    sbic EECR, EEWE
    rjmp wait_ee
    out SPMCR, r17
    spm  
out SREG, r19
pop r16
ret
IVN2013
Да, используя примеры из даташита и др. Push pop r16 и правда не нужен, на счет sreg -не знаю, еще осваиваю контроллеры, но в даташитском примере вроде sreg сохраняют.
ILYAUL
Тогда хотя бы так
Код
;----------------------------------------------------------------------
; Подпрограмма выполнения SPM
;----------------------------------------------------------------------
doSPM:
cli
push r19
in r19, SREG
push r19
push r18
;проверка завершения предыдущей SPM
WaitSPM:
    in r18, SPMCR
    sbrc r18, SPMEN
rjmp WaitSPM
wait_ee:
    sbic EECR, EEWE
    rjmp wait_ee
    out SPMCR, r17
    spm  
pop r18
pop r19
out SREG, r19
pop r19
reti
IVN2013
спасибо, попробую и такой вариант)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.