| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Использование памяти программ |
| Автор: Denver 17.5.2006, 09:46 |
| Требуется читать/записывать данные в память программ. Нашел литературу про соответствующие команды LPM и SPM, но не получается их использовать, т.к. необходимо написать программу-загрузчик. Как описывается загрузчик и где он должен находиться? Может кто подскажет? Могу выложить пример из книги. |
| Автор: Romikgy 17.5.2006, 12:00 |
зачем? |
| Автор: Denver 17.5.2006, 13:45 |
| короче, вот так не получается ldi zh,$FF ldi zl,$00 ldi r16,7 mov r0,r16 clr r1 ldi r16,3 sts SPMCR,r16 spm ldi r16,1 sts SPMCR,r16 spm затем читаю от туда же ldi zh,$FF ldi zl,$00 lpm sts SN+1,r0 adiw zl,1 lpm sts SN,r0 и в SN:SN+1 записывается 65535(FF), а должно быть 00007 В чем ошибка? Хотя так написанно в книге Может еще что то надо? |
| Автор: ShadeSt 19.5.2006, 08:13 |
| Если я правильно ошибаюсь, загрузчик должен находится в области выделенной под него. Область эта выбирается конфигурацией контроллера, и может быть либо "вверху", либо "внизу" памяти, размер соответственно тоже выбирается, а так же конфигурируется адрес с которого начнется исполнение программы либо 0h либо начало блока загрузчика, если он находится "внизу". По идее писать память программ можно, только из области загрузчика, хотя тут я могу ошибаться. Почитай DataSheet, там должен быть отдельный раздел про это. И посмотри на boot.h /avr_boot Bootloader Support Utilities/, если есть WinAvr. |
| Автор: Denver 22.5.2006, 07:51 |
| А по конкретней можно! Как и где, если можно с примером. Неужели никто не писал в память программ? Ну очень нужно. |
| Автор: PILOT 22.5.2006, 20:17 |
| Посмотри тут |
| Автор: PILOT 22.5.2006, 20:18 |
| и тут |
| Автор: ShadeSt 22.5.2006, 21:59 | ||||||
Цитаты выше взяты из мануала к ATmega8535. Почитай сначала мануал, что бы понять как это все работает.. хотя уже приблизительно должно быть понятно направление в котором надо копать. SPM инструкции не будут работать если их выполнять из памяти программ. Сконфигурируй контроллер так, что бы твой код, который должен писать в память, был в области загрузчика, тогда все будет нормально. |