Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: самопрограммирование ATMEGA 48/88/168
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
alekseybz
Помогите пожалуста кто может.

есть масив unsigned char volts[66];
первые два чара адресс страницы, а остальные 64 чара сама страница.

Надо написать функцию самопрограммирования страницы флеш.

Уже неделю сижу, все темы про это прочитал, ничего не получилось.
Работаю в иар3.2

Только пожалуста, если кто знает ответ, пишите подробнее. И еще такие вопросы:
1. По какому адресу должна размещатся эта функция.
2. надо ли програмировать фузы или по дефолту.
3. какие билиотеки присоединять.

Заранее благодарен!!!!
rx3apf
Цитата(alekseybz @ Jan 18 2008, 02:27) *
Только пожалуста, если кто знает ответ, пишите подробнее. И еще такие вопросы:
1. По какому адресу должна размещатся эта функция.
2. надо ли програмировать фузы или по дефолту.
3. какие билиотеки присоединять.

В даташите механизм самопрограммирования изложен вполне исчерпывающе, с примером кода (раздел 25). Но обращаю внимание - команда spm, используемая для стирания и записи страниц, должна располагаться в области bootloader (под которую выделяется необходимый объем программной памяти посредством соответствующих фьюзов). И у m168 страницы по 128 байтов (против 64 у m48 и m88)...
arttab
с самопрограммированием под ИАР я возился и задавал вопросы на форуме и прикрепил к топику заметку как делать. не поленитесь воспользоваться поиском.
alekseybz
Єтот топик я читал, но все равно ничего не получилось...
Во flash.h определена функция _WAIT_FOR_SPM.
А у меня иар не неходит регистра SPMCR_REG и на него ругается. Заменил на SPMCSR но тоже ничего не получается...
Сам я не разработчик и мне очень сложно разбиратся в этом с нуля.
Сама система такая. Я бесповодно на расстоянии пяти сантиметров от дивайса подою ИК импульсы. Девайс с помощью инфракрасного излучателя принимает ети импульсы проверяя сколько вольт на ADC7. Нолики единички преобразует в масив unsigned char[66]. Осталось только одну функцию самопрограммирования написать и вот тут я застрял..... Сам та ничего в этом не понимаю.
Если можно напишите хотябы как запрограммировать страницу флаш. и где ее разместить и какие фузы прошить. А то я сам с этим не разберусь.

Заранее благодарен.

p.s.: а ваш топик про бут луадер я уже неделю мучаю и безрезультатно
arttab
Цитата
Сам та ничего в этом не понимаю.

тогда есть большие проблемы.
Вам надо:
- разобраться в распределении памяти в том мк который Вы используете;
- определиться по какому адресу будет лежать функция самопрограммирования (пересчитать, при необходимости от моего проекта);
выставить фузы для Вашего мк;
- поправит файл .xcl для вашего мк.

Вы твк и не указали что за мк Вы используете. Если все же МЕГу8, то для начала попробуйте повторить мой проект. фузы BOOTSZ1 и BOOTSZ0, BOOTRST = 0.
Читайте на русском с www.gaw.ru самопраграммирование на мегу 128 и потом по Вашему мк даташит сумари. Boot Loader Support – Read-While-Write Self-Programming

что то и подскажем, а так без гадалки сложно :-)
alekseybz
Большое спасибо всем, получилось. Пробовал на Мега88V.
Лишние фузы програмировать не надо, код будлоадера в конце.
Сами функции нашел на китайском сайте. Единственное при записи страници, следующая страница вся будет с значениями 0xFF.
Сам код смотрите в файле.

неделя работы, а за пять минут нашел у китайцев :-)
Len_OK
у меня проблемка, почему-то лоадер не размещается по указанному адресу?Что может быть причиной?
man with no name
Цитата(Len_OK @ Feb 14 2008, 12:47) *
у меня проблемка, почему-то лоадер не размещается по указанному адресу?Что может быть причиной?

Может линкеру адрес секции неправильно указала. Может этот адрес в два раза больше/меньше требуемого. Да мало ли чего может быть... А по какому размещается? По первому свободному или всё же по фиксированному?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.