roboforum.ru

Технический форум по робототехнике.
Текущее время: 21 май 2025, 15:44

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Запись в FLASH - ATMega
СообщениеДобавлено: 14 июл 2010, 15:17 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Надо записать 16-битное чисто в flash. Написал вот такую фукцию:
Код:
void config_int(uint16_t address, uint16_t value)
{
   uint16_t page_addr, page_end;
   page_addr = (address & ~(SPM_PAGESIZE - 1));
   page_end = ((address + 2) & ~(SPM_PAGESIZE - 1)) + SPM_PAGESIZE;
   ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
      eeprom_busy_wait();
      while (page_addr < page_end) {
         uint16_t w;
         if (page_addr == address) {
            w = value;
         } else if (page_addr == address - 1) {
            w = pgm_read_word(page_addr);
            w = (w & 0xFF) | (value << 8);
         } else if (page_addr == address + 1) {
            w = pgm_read_word(page_addr);
            w = (w & 0xFF00) | (value >>8);
         } else {
            w = pgm_read_word(page_addr);
         }
         boot_page_fill(page_addr, w);
         if ((page_addr & (SPM_PAGESIZE - 1)) == (SPM_PAGESIZE - 2)) {
            boot_page_erase(page_addr & ~(SPM_PAGESIZE-1));
            boot_spm_busy_wait();
            boot_page_write (page_addr & ~(SPM_PAGESIZE-1));
            boot_spm_busy_wait();
         }
         page_addr += 2;
      }
        boot_rww_enable ();
   }
}

Функцию поместил в NRWW секцию (с адреса 0xE000). При вызове ничего не пишется. Что я делаю не так?

Добавлено спустя 36 минут 42 секунды:
Забыл указать контроллер - ATMega64

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в FLASH - ATMega
СообщениеДобавлено: 14 июл 2010, 15:32 
А вообще пишется ли?
Я когда использовал конструкцию PROGMEM и писал во флэш шрифт 5*7 размером в пол килобайта, то компилилось всё без проблем, а память не жрало :pardon: . Соответственно и выводился мусор.
Вообщем плюнул пока на это и писал в раму.
Но к вопросу присоединяюсь.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Запись в FLASH - ATMega
СообщениеДобавлено: 14 июл 2010, 15:39 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Пишется, и самое странное то, что я это уже делал - [[Система голосового управления]], и функция записи практически аналогична функции из того проекта

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в FLASH - ATMega
СообщениеДобавлено: 14 июл 2010, 15:44 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Может это опять бракованная АТМега64? Помнишь мы уже залипали с OR-AVR-M64-S планировавшимся?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в FLASH - ATMega
СообщениеДобавлено: 14 июл 2010, 17:06 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Нет, мега рабочая, бутлоадером код заливаю

Добавлено спустя 1 час 20 минут 8 секунд:
Во засада. Оказывается, недостаточно поместить код, пишущий в флэш, в NRWW - надо чтобы он был в области отведенной для бутлоадера через фьюзы.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запись в FLASH - ATMega
СообщениеДобавлено: 15 июл 2010, 03:08 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Переделал бутлоадер, добавив по фиксированным адресам функции заполнения буфера и стирания/записи страницы.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO