Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Самопрограммирование AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Den64
Пытаюсь записать в флеш память программ по адресу 400h и 401h значение 0. Но не работает.
Чип ATmega48. Пробовал на ATmega88, тоже не работает. В симуляторе работает, в железе нет. EEPROM и спящий режим не использую.
Где я ошибся?
Код
test:
  clr r0
  clr r1
  ldi ZL,  Low(0x400)
  ldi ZH, High(0x400)

  ldi XL, (1 << SELFPRGEN)
  rcall Do_SPM; записать r1:r0 в буфер

  ldi XL, (1 << PGWRT) | (1 << SELFPRGEN)
  rcall Do_SPM; записать буфер во флеш
rjmp P0


Do_SPM:
  push XL
  in XL, SPMCSR
  sbrc XL, SELFPRGEN
  rjmp Do_SPM

wait_EE_Do_SPM:
  sbic EECR, EEPE
  rjmp wait_EE_Do_SPM
  pop XL
  cli
  out SPMCSR, XL
  spm
  sei
ret
aiwa
Первым делом стоило бы проверить фьюз SELFPRGEN.
Цитата
The ATmega48/V has no separate Boot Loader section, and the Store Program Memory (SPM)
instruction is enabled for the whole Flash if the SELFPRGEN fuse is programmed (“0”). Otherwise the
SPM instruction is disabled.


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.